/hg/icedtea-web: Introduced logging bottleneck

Andrew Azores aazores at redhat.com
Mon Sep 30 12:01:50 PDT 2013


On 09/25/2013 12:50 PM, jvanek at icedtea.classpath.org wrote:
> changeset a817bb6d12a6 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=a817bb6d12a6
> author: Jiri Vanek <jvanek at redhat.com>
> date: Wed Sep 25 18:50:18 2013 +0200
>
> 	Introduced logging bottleneck
>
>
> diffstat:
>
>   ChangeLog                                                                                      |  125 +++
>   netx/net/sourceforge/jnlp/AbstractLaunchHandler.java                                           |   16 +-
>   netx/net/sourceforge/jnlp/AppletLog.java                                                       |   92 --
>   netx/net/sourceforge/jnlp/DefaultLaunchHandler.java                                            |    4 +-
>   netx/net/sourceforge/jnlp/ExtensionDesc.java                                                   |    4 +-
>   netx/net/sourceforge/jnlp/GuiLaunchHandler.java                                                |    8 +-
>   netx/net/sourceforge/jnlp/JNLPFile.java                                                        |   11 +-
>   netx/net/sourceforge/jnlp/JNLPMatcher.java                                                     |    5 +-
>   netx/net/sourceforge/jnlp/JNLPSplashScreen.java                                                |   13 +-
>   netx/net/sourceforge/jnlp/Launcher.java                                                        |   31 +-
>   netx/net/sourceforge/jnlp/Log.java                                                             |   79 -
>   netx/net/sourceforge/jnlp/MalformedXMLParser.java                                              |    5 +-
>   netx/net/sourceforge/jnlp/NetxPanel.java                                                       |   11 +-
>   netx/net/sourceforge/jnlp/Parser.java                                                          |   17 +-
>   netx/net/sourceforge/jnlp/PluginBridge.java                                                    |    9 +-
>   netx/net/sourceforge/jnlp/SecurityDesc.java                                                    |    3 +-
>   netx/net/sourceforge/jnlp/StreamEater.java                                                     |   17 +-
>   netx/net/sourceforge/jnlp/XmlParser.java                                                       |    3 +-
>   netx/net/sourceforge/jnlp/about/HTMLPanel.java                                                 |    3 +-
>   netx/net/sourceforge/jnlp/browser/BrowserAwareProxySelector.java                               |   19 +-
>   netx/net/sourceforge/jnlp/browser/FirefoxPreferencesFinder.java                                |   10 +-
>   netx/net/sourceforge/jnlp/browser/FirefoxPreferencesParser.java                                |    7 +-
>   netx/net/sourceforge/jnlp/cache/CacheDirectory.java                                            |    6 +-
>   netx/net/sourceforge/jnlp/cache/CacheEntry.java                                                |    7 +-
>   netx/net/sourceforge/jnlp/cache/CacheLRUWrapper.java                                           |   15 +-
>   netx/net/sourceforge/jnlp/cache/CacheUtil.java                                                 |   44 +-
>   netx/net/sourceforge/jnlp/cache/NativeLibraryStorage.java                                      |   12 +-
>   netx/net/sourceforge/jnlp/cache/Resource.java                                                  |   18 +-
>   netx/net/sourceforge/jnlp/cache/ResourceTracker.java                                           |   55 +-
>   netx/net/sourceforge/jnlp/config/Defaults.java                                                 |   20 +-
>   netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java                                  |  133 +-
>   netx/net/sourceforge/jnlp/controlpanel/CachePane.java                                          |    5 +-
>   netx/net/sourceforge/jnlp/controlpanel/CommandLine.java                                        |   90 +-
>   netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java                                       |    9 +-
>   netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java                                     |   82 +-
>   netx/net/sourceforge/jnlp/controlpanel/DocumentAdapter.java                                    |    4 +-
>   netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java                                           |    7 +-
>   netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java                   |   15 +-
>   netx/net/sourceforge/jnlp/resources/Messages.properties                                        |   11 +-
>   netx/net/sourceforge/jnlp/resources/Messages_cs.properties                                     |    1 -
>   netx/net/sourceforge/jnlp/resources/Messages_de.properties                                     |    1 -
>   netx/net/sourceforge/jnlp/resources/Messages_pl.properties                                     |    1 -
>   netx/net/sourceforge/jnlp/runtime/AppletAudioClip.java                                         |    4 +-
>   netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java                                       |   11 +-
>   netx/net/sourceforge/jnlp/runtime/AppletInstance.java                                          |    9 +-
>   netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java                                     |   23 +-
>   netx/net/sourceforge/jnlp/runtime/Boot.java                                                    |   46 +-
>   netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java                                   |    6 +-
>   netx/net/sourceforge/jnlp/runtime/FakePacEvaluator.java                                        |    5 +-
>   netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java                                         |  121 +-
>   netx/net/sourceforge/jnlp/runtime/JNLPPolicy.java                                              |    7 +-
>   netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java                                       |   27 +-
>   netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java                                             |  120 +-
>   netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java                                     |   22 +-
>   netx/net/sourceforge/jnlp/runtime/PacEvaluatorFactory.java                                     |   19 +-
>   netx/net/sourceforge/jnlp/runtime/RhinoBasedPacEvaluator.java                                  |   17 +-
>   netx/net/sourceforge/jnlp/security/CertWarningPane.java                                        |    7 +-
>   netx/net/sourceforge/jnlp/security/CertificateUtils.java                                       |   18 +-
>   netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java                                      |    7 +-
>   netx/net/sourceforge/jnlp/security/KeyStores.java                                              |    3 +-
>   netx/net/sourceforge/jnlp/security/SecurityDialog.java                                         |   11 +-
>   netx/net/sourceforge/jnlp/security/SecurityDialogMessageHandler.java                           |    7 +-
>   netx/net/sourceforge/jnlp/security/SecurityUtil.java                                           |    3 +-
>   netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java                               |    9 +-
>   netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java      |    3 +-
>   netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletTrustConfirmation.java |   16 +-
>   netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java                                 |   13 +-
>   netx/net/sourceforge/jnlp/services/ServiceUtil.java                                            |   11 +-
>   netx/net/sourceforge/jnlp/services/XBasicService.java                                          |   16 +-
>   netx/net/sourceforge/jnlp/services/XPersistenceService.java                                    |    7 +-
>   netx/net/sourceforge/jnlp/services/XPrintService.java                                          |    9 +-
>   netx/net/sourceforge/jnlp/services/XSingleInstanceService.java                                 |   19 +-
>   netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java                                        |    7 +-
>   netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java          |    7 +-
>   netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/ErrorPainter.java         |    3 +-
>   netx/net/sourceforge/jnlp/splashscreen/parts/InformationElement.java                           |    3 +-
>   netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java              |   15 +-
>   netx/net/sourceforge/jnlp/tools/CertInformation.java                                           |    4 +-
>   netx/net/sourceforge/jnlp/tools/JarCertVerifier.java                                           |   23 +-
>   netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java                                       |   11 +-
>   netx/net/sourceforge/jnlp/util/FileUtils.java                                                  |   23 +-
>   netx/net/sourceforge/jnlp/util/HttpUtils.java                                                  |    3 +-
>   netx/net/sourceforge/jnlp/util/ImageResources.java                                             |    3 +-
>   netx/net/sourceforge/jnlp/util/PropertiesFile.java                                             |    5 +-
>   netx/net/sourceforge/jnlp/util/Reflect.java                                                    |    5 +-
>   netx/net/sourceforge/jnlp/util/StreamUtils.java                                                |   14 +-
>   netx/net/sourceforge/jnlp/util/TimedHashMap.java                                               |    9 +-
>   netx/net/sourceforge/jnlp/util/UrlUtils.java                                                   |   13 +-
>   netx/net/sourceforge/jnlp/util/XDesktopEntry.java                                              |   19 +-
>   netx/net/sourceforge/jnlp/util/logging/FileLog.java                                            |  107 ++
>   netx/net/sourceforge/jnlp/util/logging/LogConfig.java                                          |  156 +++
>   netx/net/sourceforge/jnlp/util/logging/OutputController.java                                   |  398 ++++++++++
>   netx/net/sourceforge/jnlp/util/logging/PrintStreamLogger.java                                  |   68 +
>   netx/net/sourceforge/jnlp/util/logging/SingleStreamLogger.java                                 |   46 +
>   netx/net/sourceforge/jnlp/util/logging/UnixSystemLog.java                                      |   57 +
>   netx/net/sourceforge/jnlp/util/logging/WinSystemLog.java                                       |   57 +
>   netx/net/sourceforge/nanoxml/XMLElement.java                                                   |   25 +-
>   plugin/icedteanp/java/netscape/javascript/JSRunnable.java                                      |    3 +-
>   plugin/icedteanp/java/sun/applet/JavaConsole.java                                              |   53 +-
>   plugin/icedteanp/java/sun/applet/PluginAppletPanelFactory.java                                 |    7 +-
>   plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java                              |   15 +-
>   plugin/icedteanp/java/sun/applet/PluginAppletViewer.java                                       |   17 +-
>   plugin/icedteanp/java/sun/applet/PluginDebug.java                                              |    7 +-
>   plugin/icedteanp/java/sun/applet/PluginException.java                                          |    4 +-
>   plugin/icedteanp/java/sun/applet/PluginMain.java                                               |   21 +-
>   plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java                                    |    3 +-
>   plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java                               |    4 +-
>   plugin/icedteanp/java/sun/applet/PluginProxyInfoRequest.java                                   |    3 +-
>   plugin/icedteanp/java/sun/applet/PluginProxySelector.java                                      |    3 +-
>   plugin/icedteanp/java/sun/applet/PluginStreamHandler.java                                      |   12 +-
>   tests/netx/unit/net/sourceforge/jnlp/DefaultLaunchHandlerTest.java                             |   71 +-
>   tests/netx/unit/net/sourceforge/jnlp/cache/ResourceTrackerTest.java                            |   62 +-
>   tests/netx/unit/net/sourceforge/jnlp/util/HttpUtilsTest.java                                   |   52 +-
>   tests/netx/unit/net/sourceforge/jnlp/util/XDesktopEntryTest.java                               |    4 -
>   tests/netx/unit/net/sourceforge/jnlp/util/logging/FileLogTest.java                             |  178 ++++
>   tests/netx/unit/net/sourceforge/jnlp/util/logging/OutputControllerTest.java                    |  367 +++++++++
>   tests/netx/unit/net/sourceforge/jnlp/util/logging/PrintStreamLoggerTest.java                   |  113 ++
>   tests/reproducers/simple/simpletest1/testcases/XDGspecificationTests.java                      |    2 -
>   tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java                                   |   12 +-
>   119 files changed, 2582 insertions(+), 1136 deletions(-)
>
> diffs (truncated from 7708 to 500 lines):
>
> diff -r a69671b1e1f1 -r a817bb6d12a6 ChangeLog
> --- a/ChangeLog	Tue Sep 24 13:42:31 2013 -0400
> +++ b/ChangeLog	Wed Sep 25 18:50:18 2013 +0200
> @@ -1,3 +1,128 @@
> +2013-09-25  Jiri Vanek  <jvanek at redhat.com>
> +
> +	Added logging bottleneck
> +	* netx/net/sourceforge/jnlp/AbstractLaunchHandler.java: extracted system.out/err
> +	and printStackTrace in favour of outputController.log methods. Same all below
> +	* netx/net/sourceforge/jnlp/DefaultLaunchHandler.java
> +	* netx/net/sourceforge/jnlp/ExtensionDesc.java
> +	* netx/net/sourceforge/jnlp/GuiLaunchHandler.java
> +	* netx/net/sourceforge/jnlp/JNLPFile.java
> +	* netx/net/sourceforge/jnlp/JNLPMatcher.java
> +	* netx/net/sourceforge/jnlp/JNLPSplashScreen.java
> +	* netx/net/sourceforge/jnlp/Launcher.java
> +	* netx/net/sourceforge/jnlp/MalformedXMLParser.java
> +	* netx/net/sourceforge/jnlp/NetxPanel.java
> +	* netx/net/sourceforge/jnlp/Parser.java
> +	* netx/net/sourceforge/jnlp/PluginBridge.java
> +	* netx/net/sourceforge/jnlp/SecurityDesc.java
> +	* netx/net/sourceforge/jnlp/StreamEater.java
> +	* netx/net/sourceforge/jnlp/XmlParser.java
> +	* netx/net/sourceforge/jnlp/about/HTMLPanel.java
> +	* netx/net/sourceforge/jnlp/browser/BrowserAwareProxySelector.java
> +	* netx/net/sourceforge/jnlp/browser/FirefoxPreferencesFinder.java
> +	* netx/net/sourceforge/jnlp/browser/FirefoxPreferencesParser.java
> +	* netx/net/sourceforge/jnlp/cache/CacheDirectory.java
> +	* netx/net/sourceforge/jnlp/cache/CacheEntry.java
> +	* netx/net/sourceforge/jnlp/cache/CacheLRUWrapper.java
> +	* netx/net/sourceforge/jnlp/cache/CacheUtil.java
> +	* netx/net/sourceforge/jnlp/cache/NativeLibraryStorage.java
> +	* netx/net/sourceforge/jnlp/cache/Resource.java
> +	* netx/net/sourceforge/jnlp/cache/ResourceTracker.java
> +	* netx/net/sourceforge/jnlp/config/Defaults.java
> +	* netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java
> +	* netx/net/sourceforge/jnlp/controlpanel/CachePane.java
> +	* netx/net/sourceforge/jnlp/controlpanel/CommandLine.java
> +	* netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java
> +	* netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java
> +	* netx/net/sourceforge/jnlp/controlpanel/DocumentAdapter.java
> +	* netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java
> +	* netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java
> +	* netx/net/sourceforge/jnlp/resources/Messages.properties
> +	* netx/net/sourceforge/jnlp/resources/Messages_cs.properties
> +	* netx/net/sourceforge/jnlp/resources/Messages_de.properties
> +	* netx/net/sourceforge/jnlp/resources/Messages_pl.properties
> +	* netx/net/sourceforge/jnlp/runtime/AppletAudioClip.java
> +	* netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java
> +	* netx/net/sourceforge/jnlp/runtime/AppletInstance.java
> +	* netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java
> +	* netx/net/sourceforge/jnlp/runtime/Boot.java
> +	* netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java
> +	* netx/net/sourceforge/jnlp/runtime/FakePacEvaluator.java
> +	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
> +	* netx/net/sourceforge/jnlp/runtime/JNLPPolicy.java
> +	* netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java
> +	* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java
> +	* netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java
> +	* netx/net/sourceforge/jnlp/runtime/PacEvaluatorFactory.java
> +	* netx/net/sourceforge/jnlp/runtime/RhinoBasedPacEvaluator.java
> +	* netx/net/sourceforge/jnlp/security/CertWarningPane.java
> +	* netx/net/sourceforge/jnlp/security/CertificateUtils.java
> +	* netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java
> +	* netx/net/sourceforge/jnlp/security/KeyStores.java
> +	* netx/net/sourceforge/jnlp/security/SecurityDialog.java
> +	* netx/net/sourceforge/jnlp/security/SecurityDialogMessageHandler.java
> +	* netx/net/sourceforge/jnlp/security/SecurityUtil.java
> +	* netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java
> +	* netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java
> +	* netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletTrustConfirmation.java
> +	* netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java
> +	* netx/net/sourceforge/jnlp/services/ServiceUtil.java
> +	* netx/net/sourceforge/jnlp/services/XBasicService.java
> +	* netx/net/sourceforge/jnlp/services/XPersistenceService.java
> +	* netx/net/sourceforge/jnlp/services/XPrintService.java
> +	* netx/net/sourceforge/jnlp/services/XSingleInstanceService.java
> +	* netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java
> +	* netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java
> +	* netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/ErrorPainter.java
> +	* netx/net/sourceforge/jnlp/splashscreen/parts/InformationElement.java
> +	* netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java
> +	* netx/net/sourceforge/jnlp/tools/CertInformation.java
> +	* netx/net/sourceforge/jnlp/tools/JarCertVerifier.java
> +	* netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java
> +	* netx/net/sourceforge/jnlp/util/FileUtils.java
> +	* netx/net/sourceforge/jnlp/util/HttpUtils.java
> +	* netx/net/sourceforge/jnlp/util/ImageResources.java
> +	* netx/net/sourceforge/jnlp/util/PropertiesFile.java
> +	* netx/net/sourceforge/jnlp/util/Reflect.java
> +	* netx/net/sourceforge/jnlp/util/StreamUtils.java
> +	* netx/net/sourceforge/jnlp/util/TimedHashMap.java
> +	* netx/net/sourceforge/jnlp/util/UrlUtils.java
> +	* netx/net/sourceforge/jnlp/util/XDesktopEntry.java
> +	* netx/net/sourceforge/nanoxml/XMLElement.java
> +	* plugin/icedteanp/java/netscape/javascript/JSRunnable.java
> +	* plugin/icedteanp/java/sun/applet/JavaConsole.java
> +	* plugin/icedteanp/java/sun/applet/PluginAppletPanelFactory.java
> +	* plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java
> +	* plugin/icedteanp/java/sun/applet/PluginAppletViewer.java
> +	* plugin/icedteanp/java/sun/applet/PluginDebug.java
> +	* plugin/icedteanp/java/sun/applet/PluginException.java
> +	* plugin/icedteanp/java/sun/applet/PluginMain.java
> +	* plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java
> +	* plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java
> +	* plugin/icedteanp/java/sun/applet/PluginProxyInfoRequest.java
> +	* plugin/icedteanp/java/sun/applet/PluginProxySelector.java
> +	* plugin/icedteanp/java/sun/applet/PluginStreamHandler.java
> +	* tests/netx/unit/net/sourceforge/jnlp/DefaultLaunchHandlerTest.java
> +	* tests/netx/unit/net/sourceforge/jnlp/cache/ResourceTrackerTest.java
> +	* tests/netx/unit/net/sourceforge/jnlp/util/HttpUtilsTest.java
> +	* tests/netx/unit/net/sourceforge/jnlp/util/XDesktopEntryTest.java
> +	* tests/reproducers/simple/simpletest1/testcases/XDGspecificationTests.java
> +	* tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java
> +	* netx/net/sourceforge/jnlp/util/logging/FileLog.java: new file, derived from
> +	AppletLog. Now have responsibility to log to custom file.
> +	* netx/net/sourceforge/jnlp/util/logging/LogConfig.java: new file derived from Log
> +	* netx/net/sourceforge/jnlp/util/logging/OutputController.java: new bottleneck for logging
> +	* netx/net/sourceforge/jnlp/util/logging/PrintStreamLogger.java: logger to std.streams
> +	* netx/net/sourceforge/jnlp/util/logging/SingleStreamLogger.java: interface common to all new loggers
> +	* netx/net/sourceforge/jnlp/util/logging/UnixSystemLog.java: not yet implemented  susytem log
> +	* netx/net/sourceforge/jnlp/util/logging/WinSystemLog.java: not yet implemented  susytem log
> +	* tests/netx/unit/net/sourceforge/jnlp/util/logging/FileLogTest.java: new set of tests
> +	* tests/netx/unit/net/sourceforge/jnlp/util/logging/OutputControllerTest.java: new set of tests
> +	* tests/netx/unit/net/sourceforge/jnlp/util/logging/PrintStreamLoggerTest.java: new set of tests
> +	* netx/net/sourceforge/jnlp/AppletLog.java: removed
> +	* netx/net/sourceforge/jnlp/Log.java: rmeoved
> +	
> +
>   2013-09-24  Omair Majid  <omajid at redhat.com>
>   
>   	PR1474
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/AbstractLaunchHandler.java
> --- a/netx/net/sourceforge/jnlp/AbstractLaunchHandler.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/AbstractLaunchHandler.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -37,16 +37,15 @@
>   
>   package net.sourceforge.jnlp;
>   
> -import java.io.PrintStream;
>   
> -import net.sourceforge.jnlp.runtime.JNLPRuntime;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   
>   public abstract class AbstractLaunchHandler implements LaunchHandler {
>   
> -    protected final PrintStream outputStream;
> +    protected final OutputController logger;
>   
> -    public AbstractLaunchHandler(PrintStream outputStream) {
> -        this.outputStream = outputStream;
> +    public AbstractLaunchHandler(OutputController logger) {
> +        this.logger = logger;
>       }
>   
>       /**
> @@ -63,11 +62,10 @@
>           if (ex.getCause() != null) {
>               result.append(recursiveDescription(ex.getCause()));
>           }
> -        outputStream.println(result);
> +        logger.log(OutputController.Level.MESSAGE_ALL, result.toString());
>   
> -        if (JNLPRuntime.isDebug()) {
> -            ex.printStackTrace(outputStream);
> -        }
> +        logger.log(ex);
> +
>       }
>   
>       private String recursiveDescription(Throwable throwable) {
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/AppletLog.java
> --- a/netx/net/sourceforge/jnlp/AppletLog.java	Tue Sep 24 13:42:31 2013 -0400
> +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
> @@ -1,92 +0,0 @@
> -/* AppletLog.java
> -   Copyright (C) 2011 Red Hat, Inc.
> -
> -This file is part of IcedTea.
> -
> -IcedTea is free software; you can redistribute it and/or modify
> -it under the terms of the GNU General Public License as published by
> -the Free Software Foundation; either version 2, or (at your option)
> -any later version.
> -
> -IcedTea is distributed in the hope that it will be useful, but
> -WITHOUT ANY WARRANTY; without even the implied warranty of
> -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -General Public License for more details.
> -
> -You should have received a copy of the GNU General Public License
> -along with IcedTea; see the file COPYING.  If not, write to the
> -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> -02110-1301 USA.
> -
> -Linking this library statically or dynamically with other modules is
> -making a combined work based on this library.  Thus, the terms and
> -conditions of the GNU General Public License cover the whole
> -combination.
> -
> -As a special exception, the copyright holders of this library give you
> -permission to link this library with independent modules to produce an
> -executable, regardless of the license terms of these independent
> -modules, and to copy and distribute the resulting executable under
> -terms of your choice, provided that you also meet, for each linked
> -independent module, the terms and conditions of the license of that
> -module.  An independent module is a module which is not derived from
> -or based on this library.  If you modify this library, you may extend
> -this exception to your version of the library, but you are not
> -obligated to do so.  If you do not wish to do so, delete this
> -exception statement from your version. */
> -
> -package net.sourceforge.jnlp;
> -
> -import java.io.ByteArrayOutputStream;
> -import java.io.File;
> -import java.io.PrintStream;
> -import java.util.logging.FileHandler;
> -import java.util.logging.Level;
> -import java.util.logging.Logger;
> -import java.util.logging.XMLFormatter;
> -
> -import net.sourceforge.jnlp.util.FileUtils;
> -
> -/**
> - * This class writes log information to file.
> - *
> - * @author Andrew Su (asu at redhat.com, andrew.su at utoronto.ca)
> - *
> - */
> -class AppletLog extends Log {
> -    private static Logger logger;
> -    static {
> -        try {
> -            // If logging is enabled, we create logger.
> -            if (enableLogging) {
> -                String fn = icedteaLogDir + "plugin" + java.lang.System.currentTimeMillis() + ".log";
> -                FileUtils.createRestrictedFile(new File(fn), true);
> -                FileHandler fh = new FileHandler(fn, false);
> -                fh.setFormatter(new XMLFormatter());
> -                String logClassName = AppletLog.class.getName();
> -                logger = Logger.getLogger(logClassName);
> -                logger.setLevel(Level.ALL);
> -                logger.addHandler(fh);
> -            }
> -        } catch (Exception e) {
> -            e.printStackTrace();
> -        }
> -    }
> -
> -    private AppletLog() {
> -    }
> -
> -    /**
> -     * Log the exception to file.
> -     *
> -     * @param e Exception that was thrown.
> -     */
> -    public synchronized static void log(Throwable e) {
> -        if (enableLogging && logger != null) {
> -            ByteArrayOutputStream baos = new ByteArrayOutputStream();
> -            PrintStream ps = new PrintStream(baos);
> -            e.printStackTrace(ps);
> -            logger.log(Level.FINE, baos.toString());
> -        }
> -    }
> -}
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/DefaultLaunchHandler.java
> --- a/netx/net/sourceforge/jnlp/DefaultLaunchHandler.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/DefaultLaunchHandler.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -16,9 +16,9 @@
>   
>   package net.sourceforge.jnlp;
>   
> -import java.io.PrintStream;
>   
>   import net.sourceforge.jnlp.runtime.*;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   
>   /**
>    * This default implementation shows prints the exception to
> @@ -30,7 +30,7 @@
>    */
>   public class DefaultLaunchHandler extends AbstractLaunchHandler {
>   
> -    public DefaultLaunchHandler(PrintStream out) {
> +    public DefaultLaunchHandler(OutputController out) {
>           super(out);
>       }
>   
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/ExtensionDesc.java
> --- a/netx/net/sourceforge/jnlp/ExtensionDesc.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/ExtensionDesc.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -23,6 +23,7 @@
>   import java.util.*;
>   
>   import net.sourceforge.jnlp.runtime.JNLPRuntime;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   
>   /**
>    * The extension element.
> @@ -122,8 +123,7 @@
>           if (file == null) {
>               file = new JNLPFile(location);
>   
> -            if (JNLPRuntime.isDebug())
> -                System.out.println("Resolve: " + file.getInformation().getTitle());
> +            OutputController.getLogger().log("Resolve: " + file.getInformation().getTitle());
>   
>               // check for it being an extension descriptor
>               if (!file.isComponent() && !file.isInstaller())
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/GuiLaunchHandler.java
> --- a/netx/net/sourceforge/jnlp/GuiLaunchHandler.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/GuiLaunchHandler.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -37,7 +37,6 @@
>   
>   package net.sourceforge.jnlp;
>   
> -import java.io.PrintStream;
>   import java.lang.reflect.InvocationTargetException;
>   import java.net.URL;
>   
> @@ -47,6 +46,7 @@
>   import net.sourceforge.jnlp.cache.UpdatePolicy;
>   import net.sourceforge.jnlp.runtime.ApplicationInstance;
>   import net.sourceforge.jnlp.util.BasicExceptionDialog;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   
>   /**
>    * A {@link LaunchHandler} that gives feedback to the user using GUI elements
> @@ -58,7 +58,7 @@
>       private final Object mutex = new Object();
>       private UpdatePolicy policy = UpdatePolicy.ALWAYS;
>   
> -    public GuiLaunchHandler(PrintStream outputStream) {
> +    public GuiLaunchHandler(OutputController outputStream) {
>           super(outputStream);
>       }
>   
> @@ -127,7 +127,7 @@
>                   // Wait till splash screen is created
>                   while (splashScreen == null);
>               } catch (InvocationTargetException ite) {
> -                ite.printStackTrace();
> +                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite);
>               }
>               try {
>                   SwingUtilities.invokeAndWait(new Runnable() {
> @@ -141,7 +141,7 @@
>                   // Wait till splash screen is created
>                   while (!splashScreen.isSplashImageLoaded());
>               } catch (InvocationTargetException ite) {
> -                ite.printStackTrace();
> +                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite);
>               }
>   
>   
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/JNLPFile.java
> --- a/netx/net/sourceforge/jnlp/JNLPFile.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/JNLPFile.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -31,6 +31,7 @@
>   import net.sourceforge.jnlp.cache.ResourceTracker;
>   import net.sourceforge.jnlp.cache.UpdatePolicy;
>   import net.sourceforge.jnlp.runtime.JNLPRuntime;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   
>   /**
>    * Provides methods to access the information in a Java Network
> @@ -223,8 +224,7 @@
>                            ((int)(Math.random()*Integer.MAX_VALUE)) + "-" +
>                            location;
>   
> -        if (JNLPRuntime.isDebug())
> -            System.err.println("UNIQUEKEY=" + this.uniqueKey);
> +        OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "UNIQUEKEY=" + this.uniqueKey);
>       }
>   
>       /**
> @@ -243,8 +243,7 @@
>           this(location, version, settings, policy);
>           this.uniqueKey = uniqueKey;
>   
> -        if (JNLPRuntime.isDebug())
> -            System.err.println("UNIQUEKEY (override) =" + this.uniqueKey);
> +        OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "UNIQUEKEY (override) =" + this.uniqueKey);
>       }
>   
>       /**
> @@ -714,9 +713,7 @@
>           } catch (ParseException ex) {
>               throw ex;
>           } catch (Exception ex) {
> -            if (JNLPRuntime.isDebug())
> -                ex.printStackTrace();
> -
> +            OutputController.getLogger().log(ex);
>               throw new RuntimeException(ex.toString());
>           }
>       }
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/JNLPMatcher.java
> --- a/netx/net/sourceforge/jnlp/JNLPMatcher.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/JNLPMatcher.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -47,6 +47,7 @@
>   import java.util.Arrays;
>   import java.util.Collections;
>   import java.util.LinkedList;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   import net.sourceforge.nanoxml.XMLElement;
>   
>   /**
> @@ -261,7 +262,7 @@
>               try {
>                   stream.close();
>               } catch (Exception e) {
> -                e.printStackTrace(System.err);
> +                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
>               }
>       }
>   
> @@ -276,7 +277,7 @@
>               try {
>                   stream.close();
>               } catch (Exception e) {
> -                e.printStackTrace(System.err);
> +                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
>               }
>       }
>   }
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/JNLPSplashScreen.java
> --- a/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -54,6 +54,7 @@
>   import net.sourceforge.jnlp.splashscreen.SplashUtils;
>   import net.sourceforge.jnlp.splashscreen.parts.InformationElement;
>   import net.sourceforge.jnlp.util.ImageResources;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   import net.sourceforge.jnlp.util.ScreenFinder;
>   
>   public class JNLPSplashScreen extends JDialog {
> @@ -91,19 +92,13 @@
>                   try {
>                       splashImage = ImageIO.read(resourceTracker.getCacheFile(splashImageUrl));
>                       if (splashImage == null) {
> -                        if (JNLPRuntime.isDebug()) {
> -                            System.err.println("Error loading splash image: " + url);
> -                        }
> +                        OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Error loading splash image: " + url);
>                       }
>                   } catch (IOException e) {
> -                    if (JNLPRuntime.isDebug()) {
> -                        System.err.println("Error loading splash image: " + url);
> -                    }
> +                    OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Error loading splash image: " + url);
>                       splashImage = null;
>                   } catch (IllegalArgumentException argumentException) {
> -                    if (JNLPRuntime.isDebug()) {
> -                        System.err.println("Error loading splash image: " + url);
> -                    }
> +                    OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Error loading splash image: " + url);
>                       splashImage = null;
>                   }
>               }
> diff -r a69671b1e1f1 -r a817bb6d12a6 netx/net/sourceforge/jnlp/Launcher.java
> --- a/netx/net/sourceforge/jnlp/Launcher.java	Tue Sep 24 13:42:31 2013 -0400
> +++ b/netx/net/sourceforge/jnlp/Launcher.java	Wed Sep 25 18:50:18 2013 +0200
> @@ -46,6 +46,7 @@
>   import javax.swing.text.html.parser.ParserDelegator;
>   import net.sourceforge.jnlp.runtime.AppletEnvironment;
>   import net.sourceforge.jnlp.splashscreen.SplashUtils;
> +import net.sourceforge.jnlp.util.logging.OutputController;
>   
>   import sun.awt.SunToolkit;
>   
> @@ -77,7 +78,7 @@
>       /** whether to create an AppContext (if possible) */
>       private boolean context = true;
>   
> -    /** If the application should call System.exit on fatal errors */
> +    /** If the application should call JNLPRuntime.exit on fatal errors */
>       private boolean exitOnFailure = true;
>   
>       private ParserSettings parserSettings = new ParserSettings();
> @@ -229,10 +230,10 @@
>                   InetAddress.getByName(file.getSourceLocation().getHost());
>   
>               } catch (UnknownHostException ue) {
> -                System.err.println("File cannot be launched because offline-allowed tag not specified and system currently offline.");
> +                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, "File cannot be launched because offline-allowed tag not specified and system currently offline.");
>                   return null;
>               } catch (Exception e) {
> -                System.err.println(e);
> +                OutputController.getLogger().log(e);
>               }
>           }
>   
> @@ -483,9 +484,7 @@
>               try {
>                   ServiceUtil.checkExistingSingleInstance(file);
>               } catch (InstanceExistsException e) {
> -                if (JNLPRuntime.isDebug()) {

As noted by Omair and I in the IRC channel today, this patch makes "make 
check" rather noisy. I also mentioned that a fair number of reproducers 
are broken by this. The common trait to most/all of them is that they 
expect stdout to be a particular (very short, common case being <= 2 
chars) length, which it is because messages are now coming through 
stdout which were previously on stderr. For example, 
CreateClassLoaderTest.CreateClassLoaderLunch1 fails because "netx: 
Launch Error: Could not launch JNLP file. ( (access denied 
("java.lang.RuntimePermission" "createClassLoader"))) " is printed to 
stdout instead, and the test includes a check that pr.stdout has length 
<= 2.

Thanks,

-- 
Andrew A



More information about the distro-pkg-dev mailing list