/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