/hg/icedtea-web: Introduced logging bottleneck

Jiri Vanek jvanek at redhat.com
Mon Sep 30 23:07:50 PDT 2013


On 09/30/2013 09:01 PM, Andrew Azores wrote:
> 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.

Both those failures are cuased by "enable logging" == true (by other words works for me).  However Omiar reported hat he have cleaned the configuration.

Loging enabled == environment variable || -verbose || deployment property



J.


More information about the distro-pkg-dev mailing list