changeset 2317:0e2081083c90

Normalise NetX whitespace usage. 2010-07-23 Andrew John Hughes <ahughes@redhat.com> * netx/javax/jnlp/BasicService.java, * netx/javax/jnlp/ClipboardService.java, * netx/javax/jnlp/DownloadService.java, * netx/javax/jnlp/DownloadServiceListener.java, * netx/javax/jnlp/ExtendedService.java, * netx/javax/jnlp/ExtensionInstallerService.java, * netx/javax/jnlp/FileContents.java, * netx/javax/jnlp/FileOpenService.java, * netx/javax/jnlp/FileSaveService.java, * netx/javax/jnlp/JNLPRandomAccessFile.java, * netx/javax/jnlp/PersistenceService.java, * netx/javax/jnlp/PrintService.java, * netx/javax/jnlp/ServiceManager.java, * netx/javax/jnlp/ServiceManagerStub.java, * netx/javax/jnlp/SingleInstanceListener.java, * netx/javax/jnlp/SingleInstanceService.java, * netx/javax/jnlp/UnavailableServiceException.java, * netx/net/sourceforge/jnlp/AppletDesc.java, * netx/net/sourceforge/jnlp/ApplicationDesc.java, * netx/net/sourceforge/jnlp/AssociationDesc.java, * netx/net/sourceforge/jnlp/ComponentDesc.java, * netx/net/sourceforge/jnlp/DefaultLaunchHandler.java, * netx/net/sourceforge/jnlp/ExtensionDesc.java, * netx/net/sourceforge/jnlp/IconDesc.java, * netx/net/sourceforge/jnlp/InformationDesc.java, * netx/net/sourceforge/jnlp/InstallerDesc.java, * netx/net/sourceforge/jnlp/JARDesc.java, * netx/net/sourceforge/jnlp/JNLPFile.java, * netx/net/sourceforge/jnlp/JNLPSplashScreen.java, * netx/net/sourceforge/jnlp/JREDesc.java, * netx/net/sourceforge/jnlp/LaunchException.java, * netx/net/sourceforge/jnlp/LaunchHandler.java, * netx/net/sourceforge/jnlp/Launcher.java, * netx/net/sourceforge/jnlp/MenuDesc.java, * netx/net/sourceforge/jnlp/NetxPanel.java, * netx/net/sourceforge/jnlp/Node.java, * netx/net/sourceforge/jnlp/PackageDesc.java, * netx/net/sourceforge/jnlp/ParseException.java, * netx/net/sourceforge/jnlp/Parser.java, * netx/net/sourceforge/jnlp/PluginBridge.java, * netx/net/sourceforge/jnlp/PropertyDesc.java, * netx/net/sourceforge/jnlp/RelatedContentDesc.java, * netx/net/sourceforge/jnlp/ResourcesDesc.java, * netx/net/sourceforge/jnlp/SecurityDesc.java, * netx/net/sourceforge/jnlp/ShortcutDesc.java, * netx/net/sourceforge/jnlp/StreamEater.java, * netx/net/sourceforge/jnlp/Version.java, * netx/net/sourceforge/jnlp/cache/CacheEntry.java, * netx/net/sourceforge/jnlp/cache/CacheUtil.java, * netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java, * netx/net/sourceforge/jnlp/cache/DownloadIndicator.java, * netx/net/sourceforge/jnlp/cache/Resource.java, * netx/net/sourceforge/jnlp/cache/ResourceTracker.java, * netx/net/sourceforge/jnlp/cache/UpdatePolicy.java, * netx/net/sourceforge/jnlp/event/ApplicationEvent.java, * netx/net/sourceforge/jnlp/event/ApplicationListener.java, * netx/net/sourceforge/jnlp/event/DownloadEvent.java, * netx/net/sourceforge/jnlp/event/DownloadListener.java, * netx/net/sourceforge/jnlp/runtime/AppThreadGroup.java, * 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/Boot13.java, * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java, * netx/net/sourceforge/jnlp/runtime/JNLPPolicy.java, * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, * netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java, * netx/net/sourceforge/jnlp/security/AccessWarningPane.java, * netx/net/sourceforge/jnlp/security/AppletWarningPane.java, * netx/net/sourceforge/jnlp/security/CertVerifier.java, * netx/net/sourceforge/jnlp/security/CertWarningPane.java, * netx/net/sourceforge/jnlp/security/CertsInfoPane.java, * netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java, * netx/net/sourceforge/jnlp/security/MoreInfoPane.java, * netx/net/sourceforge/jnlp/security/SecurityDialogPanel.java, * netx/net/sourceforge/jnlp/security/SecurityUtil.java, * netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java, * netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java, * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java, * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java, * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java, * netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java, * netx/net/sourceforge/jnlp/services/InstanceExistsException.java, * netx/net/sourceforge/jnlp/services/ServiceUtil.java, * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java, * netx/net/sourceforge/jnlp/services/XBasicService.java, * netx/net/sourceforge/jnlp/services/XClipboardService.java, * netx/net/sourceforge/jnlp/services/XDownloadService.java, * netx/net/sourceforge/jnlp/services/XExtendedService.java, * netx/net/sourceforge/jnlp/services/XExtensionInstallerService.java, * netx/net/sourceforge/jnlp/services/XFileContents.java, * netx/net/sourceforge/jnlp/services/XFileSaveService.java, * netx/net/sourceforge/jnlp/services/XJNLPRandomAccessFile.java, * netx/net/sourceforge/jnlp/services/XPersistenceService.java, * netx/net/sourceforge/jnlp/services/XPrintService.java, * netx/net/sourceforge/jnlp/services/XServiceManagerStub.java, * netx/net/sourceforge/jnlp/services/XSingleInstanceService.java, * netx/net/sourceforge/jnlp/tools/JarRunner.java, * netx/net/sourceforge/jnlp/tools/JarSigner.java, * netx/net/sourceforge/jnlp/tools/KeyTool.java, * netx/net/sourceforge/jnlp/util/FileUtils.java, * netx/net/sourceforge/jnlp/util/PropertiesFile.java, * netx/net/sourceforge/jnlp/util/Reflect.java, * netx/net/sourceforge/jnlp/util/WeakList.java, * netx/net/sourceforge/jnlp/util/XDesktopEntry.java, * netx/net/sourceforge/nanoxml/XMLElement.java, * netx/netscape/javascript/JSObjectCreatePermission.java: Normalise whitespace usage.
author Andrew John Hughes <ahughes@redhat.com>
date Fri, 23 Jul 2010 10:53:49 +0100
parents 66cd8b27fe54
children 3dc60ae70ef6
files ChangeLog netx/javax/jnlp/BasicService.java netx/javax/jnlp/ClipboardService.java netx/javax/jnlp/DownloadService.java netx/javax/jnlp/DownloadServiceListener.java netx/javax/jnlp/ExtendedService.java netx/javax/jnlp/ExtensionInstallerService.java netx/javax/jnlp/FileContents.java netx/javax/jnlp/FileOpenService.java netx/javax/jnlp/FileSaveService.java netx/javax/jnlp/JNLPRandomAccessFile.java netx/javax/jnlp/PersistenceService.java netx/javax/jnlp/PrintService.java netx/javax/jnlp/ServiceManager.java netx/javax/jnlp/ServiceManagerStub.java netx/javax/jnlp/SingleInstanceListener.java netx/javax/jnlp/SingleInstanceService.java netx/javax/jnlp/UnavailableServiceException.java netx/net/sourceforge/jnlp/AppletDesc.java netx/net/sourceforge/jnlp/ApplicationDesc.java netx/net/sourceforge/jnlp/AssociationDesc.java netx/net/sourceforge/jnlp/ComponentDesc.java netx/net/sourceforge/jnlp/DefaultLaunchHandler.java netx/net/sourceforge/jnlp/ExtensionDesc.java netx/net/sourceforge/jnlp/IconDesc.java netx/net/sourceforge/jnlp/InformationDesc.java netx/net/sourceforge/jnlp/InstallerDesc.java netx/net/sourceforge/jnlp/JARDesc.java netx/net/sourceforge/jnlp/JNLPFile.java netx/net/sourceforge/jnlp/JNLPSplashScreen.java netx/net/sourceforge/jnlp/JREDesc.java netx/net/sourceforge/jnlp/LaunchException.java netx/net/sourceforge/jnlp/LaunchHandler.java netx/net/sourceforge/jnlp/Launcher.java netx/net/sourceforge/jnlp/MenuDesc.java netx/net/sourceforge/jnlp/NetxPanel.java netx/net/sourceforge/jnlp/Node.java netx/net/sourceforge/jnlp/PackageDesc.java netx/net/sourceforge/jnlp/ParseException.java netx/net/sourceforge/jnlp/Parser.java netx/net/sourceforge/jnlp/PluginBridge.java netx/net/sourceforge/jnlp/PropertyDesc.java netx/net/sourceforge/jnlp/RelatedContentDesc.java netx/net/sourceforge/jnlp/ResourcesDesc.java netx/net/sourceforge/jnlp/SecurityDesc.java netx/net/sourceforge/jnlp/ShortcutDesc.java netx/net/sourceforge/jnlp/StreamEater.java netx/net/sourceforge/jnlp/Version.java netx/net/sourceforge/jnlp/cache/CacheEntry.java netx/net/sourceforge/jnlp/cache/CacheUtil.java netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java netx/net/sourceforge/jnlp/cache/DownloadIndicator.java netx/net/sourceforge/jnlp/cache/Resource.java netx/net/sourceforge/jnlp/cache/ResourceTracker.java netx/net/sourceforge/jnlp/cache/UpdatePolicy.java netx/net/sourceforge/jnlp/event/ApplicationEvent.java netx/net/sourceforge/jnlp/event/ApplicationListener.java netx/net/sourceforge/jnlp/event/DownloadEvent.java netx/net/sourceforge/jnlp/event/DownloadListener.java netx/net/sourceforge/jnlp/runtime/AppThreadGroup.java 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/Boot13.java netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java netx/net/sourceforge/jnlp/runtime/JNLPPolicy.java netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java netx/net/sourceforge/jnlp/security/AccessWarningPane.java netx/net/sourceforge/jnlp/security/AppletWarningPane.java netx/net/sourceforge/jnlp/security/CertVerifier.java netx/net/sourceforge/jnlp/security/CertWarningPane.java netx/net/sourceforge/jnlp/security/CertsInfoPane.java netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java netx/net/sourceforge/jnlp/security/MoreInfoPane.java netx/net/sourceforge/jnlp/security/SecurityDialogPanel.java netx/net/sourceforge/jnlp/security/SecurityUtil.java netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java netx/net/sourceforge/jnlp/services/InstanceExistsException.java netx/net/sourceforge/jnlp/services/ServiceUtil.java netx/net/sourceforge/jnlp/services/SingleInstanceLock.java netx/net/sourceforge/jnlp/services/XBasicService.java netx/net/sourceforge/jnlp/services/XClipboardService.java netx/net/sourceforge/jnlp/services/XDownloadService.java netx/net/sourceforge/jnlp/services/XExtendedService.java netx/net/sourceforge/jnlp/services/XExtensionInstallerService.java netx/net/sourceforge/jnlp/services/XFileContents.java netx/net/sourceforge/jnlp/services/XFileSaveService.java netx/net/sourceforge/jnlp/services/XJNLPRandomAccessFile.java netx/net/sourceforge/jnlp/services/XPersistenceService.java netx/net/sourceforge/jnlp/services/XPrintService.java netx/net/sourceforge/jnlp/services/XServiceManagerStub.java netx/net/sourceforge/jnlp/services/XSingleInstanceService.java netx/net/sourceforge/jnlp/tools/JarRunner.java netx/net/sourceforge/jnlp/tools/JarSigner.java netx/net/sourceforge/jnlp/tools/KeyTool.java netx/net/sourceforge/jnlp/util/FileUtils.java netx/net/sourceforge/jnlp/util/PropertiesFile.java netx/net/sourceforge/jnlp/util/Reflect.java netx/net/sourceforge/jnlp/util/WeakList.java netx/net/sourceforge/jnlp/util/XDesktopEntry.java netx/net/sourceforge/nanoxml/XMLElement.java netx/netscape/javascript/JSObjectCreatePermission.java
diffstat 110 files changed, 3099 insertions(+), 3103 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Jul 21 16:29:05 2010 -0400
+++ b/ChangeLog	Fri Jul 23 10:53:49 2010 +0100
@@ -1,3 +1,116 @@
+2010-07-23  Andrew John Hughes  <ahughes@redhat.com>
+
+	* netx/javax/jnlp/BasicService.java,
+	* netx/javax/jnlp/ClipboardService.java,
+	* netx/javax/jnlp/DownloadService.java,
+	* netx/javax/jnlp/DownloadServiceListener.java,
+	* netx/javax/jnlp/ExtendedService.java,
+	* netx/javax/jnlp/ExtensionInstallerService.java,
+	* netx/javax/jnlp/FileContents.java,
+	* netx/javax/jnlp/FileOpenService.java,
+	* netx/javax/jnlp/FileSaveService.java,
+	* netx/javax/jnlp/JNLPRandomAccessFile.java,
+	* netx/javax/jnlp/PersistenceService.java,
+	* netx/javax/jnlp/PrintService.java,
+	* netx/javax/jnlp/ServiceManager.java,
+	* netx/javax/jnlp/ServiceManagerStub.java,
+	* netx/javax/jnlp/SingleInstanceListener.java,
+	* netx/javax/jnlp/SingleInstanceService.java,
+	* netx/javax/jnlp/UnavailableServiceException.java,
+	* netx/net/sourceforge/jnlp/AppletDesc.java,
+	* netx/net/sourceforge/jnlp/ApplicationDesc.java,
+	* netx/net/sourceforge/jnlp/AssociationDesc.java,
+	* netx/net/sourceforge/jnlp/ComponentDesc.java,
+	* netx/net/sourceforge/jnlp/DefaultLaunchHandler.java,
+	* netx/net/sourceforge/jnlp/ExtensionDesc.java,
+	* netx/net/sourceforge/jnlp/IconDesc.java,
+	* netx/net/sourceforge/jnlp/InformationDesc.java,
+	* netx/net/sourceforge/jnlp/InstallerDesc.java,
+	* netx/net/sourceforge/jnlp/JARDesc.java,
+	* netx/net/sourceforge/jnlp/JNLPFile.java,
+	* netx/net/sourceforge/jnlp/JNLPSplashScreen.java,
+	* netx/net/sourceforge/jnlp/JREDesc.java,
+	* netx/net/sourceforge/jnlp/LaunchException.java,
+	* netx/net/sourceforge/jnlp/LaunchHandler.java,
+	* netx/net/sourceforge/jnlp/Launcher.java,
+	* netx/net/sourceforge/jnlp/MenuDesc.java,
+	* netx/net/sourceforge/jnlp/NetxPanel.java,
+	* netx/net/sourceforge/jnlp/Node.java,
+	* netx/net/sourceforge/jnlp/PackageDesc.java,
+	* netx/net/sourceforge/jnlp/ParseException.java,
+	* netx/net/sourceforge/jnlp/Parser.java,
+	* netx/net/sourceforge/jnlp/PluginBridge.java,
+	* netx/net/sourceforge/jnlp/PropertyDesc.java,
+	* netx/net/sourceforge/jnlp/RelatedContentDesc.java,
+	* netx/net/sourceforge/jnlp/ResourcesDesc.java,
+	* netx/net/sourceforge/jnlp/SecurityDesc.java,
+	* netx/net/sourceforge/jnlp/ShortcutDesc.java,
+	* netx/net/sourceforge/jnlp/StreamEater.java,
+	* netx/net/sourceforge/jnlp/Version.java,
+	* netx/net/sourceforge/jnlp/cache/CacheEntry.java,
+	* netx/net/sourceforge/jnlp/cache/CacheUtil.java,
+	* netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java,
+	* netx/net/sourceforge/jnlp/cache/DownloadIndicator.java,
+	* netx/net/sourceforge/jnlp/cache/Resource.java,
+	* netx/net/sourceforge/jnlp/cache/ResourceTracker.java,
+	* netx/net/sourceforge/jnlp/cache/UpdatePolicy.java,
+	* netx/net/sourceforge/jnlp/event/ApplicationEvent.java,
+	* netx/net/sourceforge/jnlp/event/ApplicationListener.java,
+	* netx/net/sourceforge/jnlp/event/DownloadEvent.java,
+	* netx/net/sourceforge/jnlp/event/DownloadListener.java,
+	* netx/net/sourceforge/jnlp/runtime/AppThreadGroup.java,
+	* 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/Boot13.java,
+	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java,
+	* netx/net/sourceforge/jnlp/runtime/JNLPPolicy.java,
+	* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java,
+	* netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java,
+	* netx/net/sourceforge/jnlp/security/AccessWarningPane.java,
+	* netx/net/sourceforge/jnlp/security/AppletWarningPane.java,
+	* netx/net/sourceforge/jnlp/security/CertVerifier.java,
+	* netx/net/sourceforge/jnlp/security/CertWarningPane.java,
+	* netx/net/sourceforge/jnlp/security/CertsInfoPane.java,
+	* netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java,
+	* netx/net/sourceforge/jnlp/security/MoreInfoPane.java,
+	* netx/net/sourceforge/jnlp/security/SecurityDialogPanel.java,
+	* netx/net/sourceforge/jnlp/security/SecurityUtil.java,
+	* netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java,
+	* netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java,
+	* netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java,
+	* netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java,
+	* netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java,
+	* netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java,
+	* netx/net/sourceforge/jnlp/services/InstanceExistsException.java,
+	* netx/net/sourceforge/jnlp/services/ServiceUtil.java,
+	* netx/net/sourceforge/jnlp/services/SingleInstanceLock.java,
+	* netx/net/sourceforge/jnlp/services/XBasicService.java,
+	* netx/net/sourceforge/jnlp/services/XClipboardService.java,
+	* netx/net/sourceforge/jnlp/services/XDownloadService.java,
+	* netx/net/sourceforge/jnlp/services/XExtendedService.java,
+	* netx/net/sourceforge/jnlp/services/XExtensionInstallerService.java,
+	* netx/net/sourceforge/jnlp/services/XFileContents.java,
+	* netx/net/sourceforge/jnlp/services/XFileSaveService.java,
+	* netx/net/sourceforge/jnlp/services/XJNLPRandomAccessFile.java,
+	* netx/net/sourceforge/jnlp/services/XPersistenceService.java,
+	* netx/net/sourceforge/jnlp/services/XPrintService.java,
+	* netx/net/sourceforge/jnlp/services/XServiceManagerStub.java,
+	* netx/net/sourceforge/jnlp/services/XSingleInstanceService.java,
+	* netx/net/sourceforge/jnlp/tools/JarRunner.java,
+	* netx/net/sourceforge/jnlp/tools/JarSigner.java,
+	* netx/net/sourceforge/jnlp/tools/KeyTool.java,
+	* netx/net/sourceforge/jnlp/util/FileUtils.java,
+	* netx/net/sourceforge/jnlp/util/PropertiesFile.java,
+	* netx/net/sourceforge/jnlp/util/Reflect.java,
+	* netx/net/sourceforge/jnlp/util/WeakList.java,
+	* netx/net/sourceforge/jnlp/util/XDesktopEntry.java,
+	* netx/net/sourceforge/nanoxml/XMLElement.java,
+	* netx/netscape/javascript/JSObjectCreatePermission.java:
+	Normalise whitespace usage.
+
 2010-07-21  Deepak Bhole <dbhole@redhat.com>
 
 	* netx/net/sourceforge/jnlp/Parser.java: Undo changes from 98c88b32cdb4 to
@@ -12,7 +125,7 @@
 	Set the javawebstart.version property as part of System property
 	whenever a jnlp file is being launched (note: this now allows
 	the jnlp file in bug 486 to launch).
-	
+
 2010-07-20  Mark Wielaard  <mjw@redhat.com>
 
 	* configure.ac (OPENJDK_BUILD_DIR): New AC_SUBST variable.
--- a/netx/javax/jnlp/BasicService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/BasicService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -10,4 +10,3 @@
   public boolean isWebBrowserSupported();
 
 }
-
--- a/netx/javax/jnlp/ClipboardService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/ClipboardService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -8,4 +8,3 @@
   public void setContents(java.awt.datatransfer.Transferable contents);
 
 }
-
--- a/netx/javax/jnlp/DownloadService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/DownloadService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -22,4 +22,3 @@
   public DownloadServiceListener getDefaultProgressWindow();
 
 }
-
--- a/netx/javax/jnlp/DownloadServiceListener.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/DownloadServiceListener.java	Fri Jul 23 10:53:49 2010 +0100
@@ -10,4 +10,3 @@
   public void downloadFailed(java.net.URL url, java.lang.String version);
 
 }
-
--- a/netx/javax/jnlp/ExtendedService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/ExtendedService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -23,16 +23,16 @@
  * This interface provides a way for the JNLP application to open specific files
  * in the client's system. It asks permission from the user before opening any
  * files.
- * 
+ *
  * @author <a href="mailto:omajid@redhat.com">Omair Majid</a>
- * 
+ *
  */
 public interface ExtendedService {
 
     /**
      * Open a file on the client' system and return its contents. The user must
      * grant permission to the application for this to work.
-     * 
+     *
      * @param file the file to open
      * @return the opened file as a {@link FileContents} object
      * @throws IOException on any io problems
@@ -42,7 +42,7 @@
     /**
      * Opens multiple files on the user's sytem and returns their contents as a
      * {@link FileContents} array
-     * 
+     *
      * @param files the files to open
      * @return an array of FileContents objects
      * @throws IOException on any io problems
--- a/netx/javax/jnlp/ExtensionInstallerService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/ExtensionInstallerService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -19,4 +19,3 @@
   public java.lang.String getInstalledJRE(java.net.URL url, java.lang.String version);
 
 }
-
--- a/netx/javax/jnlp/FileContents.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/FileContents.java	Fri Jul 23 10:53:49 2010 +0100
@@ -15,4 +15,3 @@
   public long setMaxLength(long maxlength) throws java.io.IOException;
 
 }
-
--- a/netx/javax/jnlp/FileOpenService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/FileOpenService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -8,4 +8,3 @@
   public FileContents[] openMultiFileDialog(java.lang.String pathHint, java.lang.String[] extensions) throws java.io.IOException;
 
 }
-
--- a/netx/javax/jnlp/FileSaveService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/FileSaveService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -8,4 +8,3 @@
   public FileContents saveAsFileDialog(java.lang.String pathHint, java.lang.String[] extensions, FileContents contents) throws java.io.IOException;
 
 }
-
--- a/netx/javax/jnlp/JNLPRandomAccessFile.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/JNLPRandomAccessFile.java	Fri Jul 23 10:53:49 2010 +0100
@@ -43,4 +43,3 @@
   public void writeUTF(java.lang.String str) throws java.io.IOException;
 
 }
-
--- a/netx/javax/jnlp/PersistenceService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/PersistenceService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -15,4 +15,3 @@
   public void setTag(java.net.URL url, int tag) throws java.net.MalformedURLException, java.io.IOException;
 
 }
-
--- a/netx/javax/jnlp/PrintService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/PrintService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -10,4 +10,3 @@
   public boolean print(java.awt.print.Printable painter);
 
 }
-
--- a/netx/javax/jnlp/ServiceManager.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/ServiceManager.java	Fri Jul 23 10:53:49 2010 +0100
@@ -51,4 +51,3 @@
   }
 
 }
-
--- a/netx/javax/jnlp/ServiceManagerStub.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/ServiceManagerStub.java	Fri Jul 23 10:53:49 2010 +0100
@@ -8,4 +8,3 @@
   public java.lang.String[] getServiceNames();
 
 }
-
--- a/netx/javax/jnlp/SingleInstanceListener.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/SingleInstanceListener.java	Fri Jul 23 10:53:49 2010 +0100
@@ -19,14 +19,14 @@
 /**
  * This interface specifies a listener which is notified whenever a new instance
  * of the web start application is launched.
- * 
+ *
  */
 public interface SingleInstanceListener {
 
     /**
      * This method is called when a new instance of the application is launched.
      * The arguments passed to the new instance are passed into this method.
-     * 
+     *
      * @param arguments the arguments passed to the new instance of the
      *        application
      */
--- a/netx/javax/jnlp/SingleInstanceService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/SingleInstanceService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -20,15 +20,15 @@
  * The SingleInstanceService provides a way to ensure that only one instance of
  * the application is ever running - singleton behavior at the application
  * level.
- * 
+ *
  */
 public interface SingleInstanceService {
 
     /**
      * Adds the specified SingleInstanceListener to the notification list. This
      * listener is notified when a new instance of the application is started.
-     * 
-     * 
+     *
+     *
      * @param listener the single instance listener to be added. No action is
      *        performed if it is null.
      */
@@ -38,7 +38,7 @@
      * Removes the specified SingleInstanceListener from the notification list.
      * This listener will not be notified if a new instance of the application
      * is started.
-     * 
+     *
      * @param listener the single instance listener to be removed. No action is
      *        performed if it is null or not in the notification list.
      */
--- a/netx/javax/jnlp/UnavailableServiceException.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/javax/jnlp/UnavailableServiceException.java	Fri Jul 23 10:53:49 2010 +0100
@@ -13,4 +13,3 @@
   }
 
 }
-
--- a/netx/net/sourceforge/jnlp/AppletDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/AppletDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -50,7 +50,7 @@
 
     /**
      * Create an Applet descriptor.
-     * 
+     *
      * @param name the applet name
      * @param mainClass the main class name and package
      * @param documentBase the document base
@@ -68,42 +68,42 @@
     }
 
     /**
-     * Returns the applet name 
+     * Returns the applet name
      */
     public String getName() {
         return name;
     }
 
     /**
-     * Returns the main class name 
+     * Returns the main class name
      */
     public String getMainClass() {
         return mainClass;
     }
 
     /**
-     * Returns the document base 
+     * Returns the document base
      */
     public URL getDocumentBase() {
         return documentBase;
     }
 
     /**
-     * Returns the width 
+     * Returns the width
      */
     public int getWidth() {
         return width;
     }
 
-    /** 
-     * Returns the height 
+    /**
+     * Returns the height
      */
     public int getHeight() {
         return height;
     }
 
-    /** 
-     * Returns the applet parameters 
+    /**
+     * Returns the applet parameters
      */
     public Map getParameters() {
         return new HashMap(parameters);
@@ -120,6 +120,3 @@
     }
 
 }
-
-
-
--- a/netx/net/sourceforge/jnlp/ApplicationDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/ApplicationDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -38,7 +38,7 @@
 
     /**
      * Create an Application descriptor.
-     * 
+     *
      * @param mainClass the main class name and package
      * @param arguments the arguments
      */
@@ -48,13 +48,13 @@
     }
 
     /**
-     * Returns the main class name 
+     * Returns the main class name
      */
     public String getMainClass() {
         return mainClass;
     }
 
-    /** 
+    /**
      * Returns the arguments
      */
     public String[] getArguments() {
@@ -72,5 +72,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/AssociationDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/AssociationDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -45,7 +45,7 @@
     }
 
     /**
-     * Check for valid mimeType 
+     * Check for valid mimeType
      * @param mimeType a mime type
      * @throws ParseException if mimeType is an invalid MIME type
      */
--- a/netx/net/sourceforge/jnlp/ComponentDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/ComponentDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -38,6 +38,3 @@
     }
 
 }
-
-
-
--- a/netx/net/sourceforge/jnlp/DefaultLaunchHandler.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/DefaultLaunchHandler.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -110,5 +110,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/ExtensionDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/ExtensionDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -47,7 +47,7 @@
     /** map from ext-part to local part */
     private Map extToPart = new HashMap();
 
-    /** eager ext parts */ 
+    /** eager ext parts */
     private List eagerExtParts = new ArrayList();
 
 
@@ -141,5 +141,3 @@
         return file;
     }
 }
-
-
--- a/netx/net/sourceforge/jnlp/IconDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/IconDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -43,7 +43,7 @@
 
     /** splash icon */
     public static final Object SPLASH = "splash";
-    
+
     /** destop shortcut icon */
     public static final Object SHORTCUT = "shortcut";
 
@@ -70,7 +70,7 @@
     /**
      * Creates an icon descriptor with the specified information.
      *
-     * @param location the location of the icon 
+     * @param location the location of the icon
      * @param kind the type of icon
      * @param width the width, or -1 if unknown
      * @param height the height, or -1 if unknown
@@ -89,50 +89,47 @@
     /**
      * Returns the location of the icon.
      */
-    public URL getLocation() { 
-        return location; 
+    public URL getLocation() {
+        return location;
     }
 
     /**
      * Returns the icon type.
      */
-    public Object getKind() { 
-        return kind; 
+    public Object getKind() {
+        return kind;
     }
 
     /**
      * Returns the icon width or -1 if not specified in the
      * JNLPFile.
      */
-    public int getWidth() { 
-        return width; 
+    public int getWidth() {
+        return width;
     }
 
     /**
      * Returns the icon height or -1 if not specified in the
      * JNLPFile.
      */
-    public int getHeight() { 
-        return height; 
+    public int getHeight() {
+        return height;
     }
 
     /**
      * Returns the icon size or -1 if not specified in the JNLPFile.
      */
-    public int getSize() { 
-        return size; 
+    public int getSize() {
+        return size;
     }
 
     /**
      * Returns the icon depth or -1 if not specified in the
      * JNLPFile.
      */
-    public int getDepth() { 
-        return depth; 
+    public int getDepth() {
+        return depth;
     }
 
 
 }
-
-
-
--- a/netx/net/sourceforge/jnlp/InformationDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/InformationDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,16 +1,16 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -205,27 +205,27 @@
      */
     public AssociationDesc[] getAssociations() {
         List associations = getItems("association");
-        
+
         return (AssociationDesc[]) associations.toArray(new AssociationDesc[associations.size()]);
     }
-    
+
     /**
      * Returns the shortcut specified by this JNLP file
      */
     public ShortcutDesc getShortcut() {
         return (ShortcutDesc) getItem("shortcut");
     }
-    
+
     /**
      * Returns the related-contents specified by this JNLP file
      */
     public RelatedContentDesc[] getRelatedContents() {
         List relatedContents = getItems("related-content");
-        
+
         return (RelatedContentDesc[]) relatedContents.toArray(
                 new RelatedContentDesc[relatedContents.size()]);
     }
-    
+
     /**
      * Returns the last item matching the specified key.
      */
@@ -265,4 +265,3 @@
     }
 
 }
-
--- a/netx/net/sourceforge/jnlp/InstallerDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/InstallerDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -50,5 +50,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/JARDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/JARDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -46,7 +46,7 @@
 
     /** whether the JAR contains native libraries */
     private boolean nativeJar;
-    
+
     /** whether the JAR can be cached */
     private boolean cacheable;
 
@@ -128,10 +128,10 @@
     public boolean isMain() {
         return main;
     }
-    
+
     /**
      * Returns if this jar is cacheable
-     * 
+     *
      * @return Whether or not this jar is cacheable
      */
     public boolean isCacheable() {
@@ -139,6 +139,3 @@
     }
 
 }
-
-
-
--- a/netx/net/sourceforge/jnlp/JNLPFile.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/JNLPFile.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -47,7 +47,7 @@
  * getResources, getSecurity, etc methods.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.21 $ 
+ * @version $Revision: 1.21 $
  */
 public class JNLPFile {
 
@@ -59,7 +59,7 @@
     //
     // todo: currently does not filter resources by jvm version.
     //
-    
+
     private static String R(String key) { return JNLPRuntime.getMessage(key); }
 
     /** the location this JNLP file was created from */
@@ -67,7 +67,7 @@
 
     /** the network location of this JNLP file */
     protected URL fileLocation;
-    
+
     /** A key that uniquely identifies connected instances (main jnlp+ext) */
     protected String uniqueKey = null;
 
@@ -114,7 +114,7 @@
             // null values will still work, and app can set defaults later
         }
     }
-    
+
     /**
      * Empty stub, allowing child classes to override the constructor
      */
@@ -137,21 +137,21 @@
      * default policy.
      *
      * @param location the location of the JNLP file
-     * @param strict whether to enforce the spec when 
+     * @param strict whether to enforce the spec when
      * @throws IOException if an IO exception occurred
      * @throws ParseException if the JNLP file was invalid
      */
     public JNLPFile(URL location, boolean strict) throws IOException, ParseException {
         this(location, (Version) null, strict);
     }
-    
+
     /**
-     * Create a JNLPFile from a URL and a Version checking for updates using 
+     * Create a JNLPFile from a URL and a Version checking for updates using
      * the default policy.
      *
      * @param location the location of the JNLP file
      * @param version the version of the JNLP file
-     * @param strict whether to enforce the spec when 
+     * @param strict whether to enforce the spec when
      * @throws IOException if an IO exception occurred
      * @throws ParseException if the JNLP file was invalid
      */
@@ -160,12 +160,12 @@
     }
 
     /**
-     * Create a JNLPFile from a URL and a version, checking for updates 
+     * Create a JNLPFile from a URL and a version, checking for updates
      * using the specified policy.
      *
      * @param location the location of the JNLP file
      * @param version the version of the JNLP file
-     * @param strict whether to enforce the spec when 
+     * @param strict whether to enforce the spec when
      * @param policy the update policy
      * @throws IOException if an IO exception occurred
      * @throws ParseException if the JNLP file was invalid
@@ -173,17 +173,17 @@
     public JNLPFile(URL location, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException {
         Node root = Parser.getRootNode(openURL(location, version, policy));
         parse(root, strict, location);
-        	
+
         //Downloads the original jnlp file into the cache if possible
-        //(i.e. If the jnlp file being launched exist locally, but it 
+        //(i.e. If the jnlp file being launched exist locally, but it
         //originated from a website, then download the one from the website
-        //into the cache).  		
+        //into the cache).
         if (sourceLocation != null && location.getProtocol() == "file") {
             openURL(sourceLocation, version, policy);
         }
 
         this.fileLocation = location;
-        
+
         this.uniqueKey = Calendar.getInstance().getTimeInMillis() + "-" +
                          Math.abs(((new java.util.Random()).nextInt())) + "-" +
                          location;
@@ -193,13 +193,13 @@
     }
 
     /**
-     * Create a JNLPFile from a URL, parent URLm a version and checking for 
+     * Create a JNLPFile from a URL, parent URLm a version and checking for
      * updates using the specified policy.
      *
      * @param location the location of the JNLP file
      * @param uniqueKey A string that uniquely identifies connected instances
      * @param version the version of the JNLP file
-     * @param strict whether to enforce the spec when 
+     * @param strict whether to enforce the spec when
      * @param policy the update policy
      * @throws IOException if an IO exception occurred
      * @throws ParseException if the JNLP file was invalid
@@ -226,7 +226,7 @@
      * Create a JNLPFile from a character stream.
      *
      * @param input the stream
-     * @param strict whether to enforce the spec when 
+     * @param strict whether to enforce the spec when
      * @throws IOException if an IO exception occurred
      * @throws ParseException if the JNLP file was invalid
      */
@@ -313,7 +313,7 @@
     public URL getCodeBase() {
         return codeBase;
     }
-    
+
     /**
      * Returns the information section of the JNLP file as viewed
      * through the default locale.
@@ -446,28 +446,28 @@
         return (InstallerDesc) launchType;
     }
 
-    /** 
+    /**
      * Returns whether the lauch descriptor describes an Applet.
      */
     public boolean isApplet() {
         return launchType instanceof AppletDesc;
     }
 
-    /** 
+    /**
      * Returns whether the lauch descriptor describes an Application.
      */
     public boolean isApplication() {
         return launchType instanceof ApplicationDesc;
     }
 
-    /** 
+    /**
      * Returns whether the lauch descriptor describes a Component.
      */
     public boolean isComponent() {
         return launchType instanceof ComponentDesc;
     }
 
-    /** 
+    /**
      * Returns whether the lauch descriptor describes an Installer.
      */
     public boolean isInstaller() {
@@ -545,7 +545,7 @@
      * from the constructor.
      *
      * @param root the root node
-     * @param strict whether to enforce the spec when 
+     * @param strict whether to enforce the spec when
      * @param location the file location or null
      */
     private void parse(Node root, boolean strict, URL location) throws ParseException {
@@ -577,12 +577,12 @@
     }
 
     /**
-     * 
-     * @return true if the JNLP file specifies things that can only be 
+     *
+     * @return true if the JNLP file specifies things that can only be
      * applied on a new vm (eg: different max heap memory)
      */
     public boolean needsNewVM() {
-        
+
         if (getNewVMArgs().size() == 0) {
             return false;
         } else {
@@ -591,32 +591,32 @@
     }
 
     /**
-     *  @return a list of args to pass to the new 
+     *  @return a list of args to pass to the new
      *  JVM based on this JNLP file
      */
     public List<String> getNewVMArgs() {
-        
+
         List<String> newVMArgs = new LinkedList<String>();
-        
+
         JREDesc[] jres = getResources().getJREs();
         for (int jreIndex = 0; jreIndex < jres.length; jreIndex++) {
             String initialHeapSize = jres[jreIndex].getInitialHeapSize();
             if (initialHeapSize != null) {
                 newVMArgs.add("-Xms" + initialHeapSize);
             }
-            
+
             String maxHeapSize = jres[jreIndex].getMaximumHeapSize();
             if (maxHeapSize != null) {
                 newVMArgs.add("-Xmx" + maxHeapSize);
             }
-            
+
             String vmArgsFromJre = jres[jreIndex].getVMArgs();
             if (vmArgsFromJre != null) {
                 String[] args = vmArgsFromJre.split(" ");
                 newVMArgs.addAll(Arrays.asList(args));
             }
         }
-        
+
         return newVMArgs;
     }
 
--- a/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Fri Jul 23 10:53:49 2010 +0100
@@ -64,7 +64,7 @@
     public boolean isSplashScreenValid() {
         return (splashImage != null);
     }
-    
+
     private void correctSize() {
 
         Insets insets = getInsets();
--- a/netx/net/sourceforge/jnlp/JREDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/JREDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -45,7 +45,7 @@
 
     /** args to pass to the vm */
     private String vmArgs;
-    
+
     /** list of ResourceDesc objects */
     private List resources;
 
@@ -60,8 +60,8 @@
      * @param maximumHeadSize maximum head size
      * @param resources list of ResourceDesc objects
      */
-    public JREDesc(Version version, URL location, 
-            String vmArgs, String initialHeapSize, 
+    public JREDesc(Version version, URL location,
+            String vmArgs, String initialHeapSize,
             String maximumHeapSize, List resources) throws ParseException {
         this.version = version;
         this.location = location;
@@ -126,7 +126,7 @@
     public String getVMArgs() {
         return vmArgs;
     }
-    
+
     /**
      * Check for valid heap size string
      * @throws ParseException if heapSize is invalid
@@ -136,7 +136,7 @@
         if (heapSize == null) {
             return;
         }
-        
+
         boolean lastCharacterIsDigit = true;
         // the last character must be 0-9 or k/K/m/M
         char lastChar = Character.toLowerCase(heapSize.charAt(heapSize.length()-1));
@@ -146,12 +146,12 @@
                 throw new ParseException(JNLPRuntime.getMessage("PBadHeapSize",new Object[] {heapSize}));
             }
         }
-        
+
         int indexOfLastDigit = heapSize.length() - 1;
         if (!lastCharacterIsDigit) {
             indexOfLastDigit = indexOfLastDigit - 1;
         }
-        
+
         String size = heapSize.substring(0,indexOfLastDigit);
         try {
             // check that the number is a number!
@@ -159,9 +159,7 @@
         } catch (NumberFormatException numberFormat) {
             throw new ParseException(JNLPRuntime.getMessage("PBadHeapSize", new Object[] {heapSize}), numberFormat);
         }
-              
+
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/LaunchException.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/LaunchException.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -66,7 +66,7 @@
     }
 
     /**
-     * Creates a LaunchException with a cause. 
+     * Creates a LaunchException with a cause.
      */
     public LaunchException(Throwable cause) {
         this(cause.getMessage());
@@ -88,7 +88,7 @@
     /**
      * Constructs a LaunchException with the specified detail
      * message.
-     * 
+     *
      * @param message the detail message
      */
     public LaunchException(String message) {
@@ -186,5 +186,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/LaunchHandler.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/LaunchHandler.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -61,8 +61,6 @@
      *
      * @param application the launched application instance
      */
-    public void launchCompleted(ApplicationInstance application); 
+    public void launchCompleted(ApplicationInstance application);
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/Launcher.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/Launcher.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -50,7 +50,7 @@
  * the file is launched in the foreground or background.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.22 $ 
+ * @version $Revision: 1.22 $
  */
 public class Launcher {
 
@@ -84,11 +84,11 @@
         if (handler == null)
             handler = JNLPRuntime.getDefaultLaunchHandler();
     }
-    
+
     /**
      * Create a launcher with the runtime's default update policy
      * and launch handler.
-     * 
+     *
      * @param exitOnError Exit if there is an error (usually default, but false when being used from the plugin)
      */
     public Launcher(boolean exitOnFailure) {
@@ -96,7 +96,7 @@
 
         if (handler == null)
             handler = JNLPRuntime.getDefaultLaunchHandler();
-        
+
         this.exitOnFailure = exitOnFailure;
     }
 
@@ -184,7 +184,7 @@
      */
     public ApplicationInstance launch(JNLPFile file, Container cont) throws LaunchException {
         TgThread tg;
-        
+
         //First checks whether offline-allowed tag is specified inside the jnlp
         //file.
         if (!file.getInformation().isOfflineAllowed()) {
@@ -194,7 +194,7 @@
                 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.");
+                            System.err.println("File cannot be launched because offline-allowed tag not specified and system currently offline.");
                 return null;
             } catch (Exception e) {
                 System.err.println(e);
@@ -202,11 +202,11 @@
         }
 
         if (file instanceof PluginBridge && cont != null)
-        	tg = new TgThread(file, cont, true);
+                tg = new TgThread(file, cont, true);
         else if (cont == null)
-        	tg = new TgThread(file);
+                tg = new TgThread(file);
         else
-        	tg = new TgThread(file, cont);
+                tg = new TgThread(file, cont);
 
         tg.start();
 
@@ -214,7 +214,7 @@
             tg.join();
         }
         catch (InterruptedException ex) {
-			//By default, null is thrown here, and the message dialog is shown.
+                        //By default, null is thrown here, and the message dialog is shown.
             throw launchWarning(new LaunchException(file, ex, R("LSMinor"), R("LCSystem"), R("LThreadInterrupted"), R("LThreadInterruptedInfo")));
         }
 
@@ -225,21 +225,21 @@
             handler.launchCompleted(tg.getApplication());
 
         return tg.getApplication();
-    }    
+    }
 
     /**
      * Launches a JNLP file by calling the launch method for the
      * appropriate file type.
      *
      * @param location the URL of the JNLP file to launch
-     * @throws LaunchException if there was an exception 
+     * @throws LaunchException if there was an exception
      * @return the application instance
      */
     public ApplicationInstance launch(URL location) throws LaunchException {
         return launch(toFile(location));
     }
 
-    /** 
+    /**
      * Launches a JNLP file by calling the launch method for the
      * appropriate file type in a different thread.
      *
@@ -271,34 +271,34 @@
      * @param file the JNLP file to launch
      * @param javawsArgs the arguments to pass to the javaws command. Can be
      *        an empty list but must not be null.
-     * @throws LaunchException if there was an exception 
+     * @throws LaunchException if there was an exception
      */
     public void launchExternal(List<String> vmArgs, JNLPFile file, List<String> javawsArgs) throws LaunchException {
         List<String> updatedArgs = new LinkedList<String>(javawsArgs);
-        
+
         if (file.getFileLocation() != null)
             updatedArgs.add(file.getFileLocation().toString());
         else if (file.getSourceLocation() != null)
             updatedArgs.add(file.getFileLocation().toString());
         else
             launchError(new LaunchException(file, null, R("LSFatal"), R("LCExternalLaunch"), R("LNullLocation"), R("LNullLocationInfo")));
-        
+
         launchExternal(vmArgs, updatedArgs);
-        
+
     }
-    
+
     /**
      * Launches the JNLP file in a new JVM instance.  The launched
      * application's output is sent to the system out and it's
      * standard input channel is closed.
      *
      * @param url the URL of the JNLP file to launch
-     * @throws LaunchException if there was an exception 
+     * @throws LaunchException if there was an exception
      */
     public void launchExternal(URL url) throws LaunchException {
         List<String> javawsArgs = new LinkedList<String>();
         javawsArgs.add(url.toString());
-        launchExternal(new LinkedList<String>(), javawsArgs);       
+        launchExternal(new LinkedList<String>(), javawsArgs);
     }
 
     /**
@@ -307,17 +307,17 @@
      * system out and it's standard input channel is closed.
      * @param vmArgs the arguments to pass to the jvm
      * @param javawsArgs the arguments to pass to javaws (aka Netx)
-     * @throws LaunchException if there was an exception 
+     * @throws LaunchException if there was an exception
      */
     public void launchExternal(List<String> vmArgs, List<String> javawsArgs) throws LaunchException {
         try {
 
             List<String> commands = new LinkedList<String>();
-            
-            String pathToWebstartBinary = System.getProperty("java.home") + 
-                                      File.separatorChar + 
-                                      "bin" + 
-                                      File.separatorChar + 
+
+            String pathToWebstartBinary = System.getProperty("java.home") +
+                                      File.separatorChar +
+                                      "bin" +
+                                      File.separatorChar +
                                       "javaws";
             commands.add(pathToWebstartBinary);
             // use -Jargument format to pass arguments to the JVM through the launcher
@@ -325,7 +325,7 @@
                 commands.add("-J" + arg);
             }
             commands.addAll(javawsArgs);
-            
+
             String[] command = commands.toArray(new String[] {});
 
             Process p = Runtime.getRuntime().exec(command);
@@ -346,7 +346,7 @@
      * Returns the JNLPFile for the URL, with error handling.
      */
     private JNLPFile toFile(URL location) throws LaunchException {
-        try { 
+        try {
             JNLPFile file = null;
 
             try {
@@ -355,8 +355,8 @@
             catch (ParseException ex) {
                 file = new JNLPFile(location, (Version) null, false, updatePolicy);
 
-                // only here if strict failed but lax did not fail 
-                LaunchException lex = 
+                // only here if strict failed but lax did not fail
+                LaunchException lex =
                     launchWarning(new LaunchException(file, ex, R("LSMinor"), R("LCFileFormat"), R("LNotToSpec"), R("LNotToSpecInfo")));
 
                 if (lex != null)
@@ -373,7 +373,7 @@
         }
     }
 
-    /** 
+    /**
      * Launches a JNLP application.  This method should be called
      * from a thread in the application's thread group.
      */
@@ -382,13 +382,13 @@
             throw launchError(new LaunchException(file, null, R("LSFatal"), R("LCClient"), R("LNotApplication"), R("LNotApplicationInfo")));
 
         try {
-            
+
             try {
                 ServiceUtil.checkExistingSingleInstance(file);
             } catch (InstanceExistsException e) {
                 return null;
             }
-            
+
             if (JNLPRuntime.getForksAllowed() && file.needsNewVM()) {
                 List<String> netxArguments = new LinkedList<String>();
                 netxArguments.add("-Xnofork");
@@ -396,7 +396,7 @@
                 launchExternal(file.getNewVMArgs(), netxArguments);
                 return null;
             }
-            
+
             final int preferredWidth = 500;
             final int preferredHeight = 400;
             JNLPSplashScreen splashScreen = null;
@@ -417,24 +417,24 @@
             app.initialize();
 
             String mainName = file.getApplication().getMainClass();
-            
-            // When the application-desc field is empty, we should take a 
+
+            // When the application-desc field is empty, we should take a
             // look at the main jar for the main class.
             if (mainName == null) {
-            	JARDesc mainJarDesc = file.getResources().getMainJAR();
-            	File f = CacheUtil.getCacheFile(mainJarDesc.getLocation(), null);
-            	if (f != null) {
-            		JarFile mainJar = new JarFile(f);
-            		mainName = mainJar.getManifest().
-            			getMainAttributes().getValue("Main-Class");
-            	}
+                JARDesc mainJarDesc = file.getResources().getMainJAR();
+                File f = CacheUtil.getCacheFile(mainJarDesc.getLocation(), null);
+                if (f != null) {
+                        JarFile mainJar = new JarFile(f);
+                        mainName = mainJar.getManifest().
+                                getMainAttributes().getValue("Main-Class");
+                }
             }
-            
+
             if (mainName == null)
-            	throw launchError(new LaunchException(file, null, 
-            		R("LSFatal"), R("LCClient"), R("LCantDetermineMainClass") , 
-            		R("LCantDetermineMainClassInfo")));
-            
+                throw launchError(new LaunchException(file, null,
+                        R("LSFatal"), R("LCClient"), R("LCantDetermineMainClass") ,
+                        R("LCantDetermineMainClassInfo")));
+
             Class mainClass = app.getClassLoader().loadClass(mainName);
 
             Method main = mainClass.getDeclaredMethod("main", new Class[] {String[].class} );
@@ -462,12 +462,12 @@
     }
 
     /**
-     * Set the classloader as the context classloader for all threads in 
-     * the given threadgroup. This is required to make some applications 
-     * work. For example, an application that provides a custom Swing LnF 
-     * may ask the swing thread to load resources from their JNLP, which 
+     * Set the classloader as the context classloader for all threads in
+     * the given threadgroup. This is required to make some applications
+     * work. For example, an application that provides a custom Swing LnF
+     * may ask the swing thread to load resources from their JNLP, which
      * would only work if the Swing thread knows about the JNLPClassLoader.
-     * 
+     *
      * @param tg The threadgroup for which the context classloader should be set
      * @param classLoader the classloader to set as the context classloader
      */
@@ -481,8 +481,8 @@
             threads = new Thread[threadCountGuess];
             tg.enumerate(threads, true);
         } while (threads[threadCountGuess-1] != null);
-        
-        
+
+
         for (Thread thread: threads) {
             if (thread != null) {
                 if (JNLPRuntime.isDebug()) {
@@ -491,10 +491,10 @@
                 thread.setContextClassLoader(classLoader);
             }
         }
-        
+
     }
 
-    /** 
+    /**
      * Launches a JNLP applet. This method should be called from a
      * thread in the application's thread group.<p>
      *
@@ -516,7 +516,7 @@
         try {
             AppletInstance applet = createApplet(file, enableCodeBase, cont);
             applet.initialize();
-            
+
             applet.getAppletEnvironment().startApplet(); // this should be a direct call to applet instance
             return applet;
         }
@@ -527,7 +527,7 @@
             throw launchError(new LaunchException(file, ex, R("LSFatal"), R("LCLaunching"), R("LCouldNotLaunch"), R("LCouldNotLaunchInfo")));
         }
     }
-    
+
     /**
      * Gets an ApplicationInstance, but does not launch the applet.
      */
@@ -548,7 +548,7 @@
         }
     }
 
-    /** 
+    /**
      * Launches a JNLP installer.  This method should be called from
      * a thread in the application's thread group.
      */
@@ -572,9 +572,9 @@
 
             String appletName = file.getApplet().getMainClass();
 
-			//Classloader chokes if there's '/' in the path to the main class.
-			//Must replace with '.' instead.
-			appletName = appletName.replace('/', '.');
+                        //Classloader chokes if there's '/' in the path to the main class.
+                        //Must replace with '.' instead.
+                        appletName = appletName.replace('/', '.');
             Class appletClass = loader.loadClass(appletName);
             Applet applet = (Applet) appletClass.newInstance();
 
@@ -611,9 +611,9 @@
 
             String appletName = file.getApplet().getMainClass();
 
-			//Classloader chokes if there's '/' in the path to the main class.
-			//Must replace with '.' instead.
-			appletName = appletName.replace('/', '.');
+                        //Classloader chokes if there's '/' in the path to the main class.
+                        //Must replace with '.' instead.
+                        appletName = appletName.replace('/', '.');
             Class appletClass = loader.loadClass(appletName);
             Applet applet = (Applet) appletClass.newInstance();
 
@@ -623,7 +623,7 @@
             throw launchError(new LaunchException(file, ex, R("LSFatal"), R("LCInit"), R("LInitApplet"), R("LInitAppletInfo")));
         }
     }
-    
+
     /**
      * Creates an Application.
      */
@@ -700,7 +700,7 @@
             this.file = file;
             this.cont = cont;
         }
-        
+
         TgThread(JNLPFile file, Container cont, boolean isPlugin) {
             super(createThreadGroup(file), file.getTitle());
             this.file = file;
@@ -712,23 +712,23 @@
             try {
                 // Do not create new AppContext if we're using NetX and gcjwebplugin.
                 if (context && !isPlugin)
-                	new Reflect().invokeStatic("sun.awt.SunToolkit", "createNewAppContext");
+                        new Reflect().invokeStatic("sun.awt.SunToolkit", "createNewAppContext");
 
                 if (isPlugin) {
-                	// Do not display download indicators if we're using gcjwebplugin.
-                	JNLPRuntime.setDefaultDownloadIndicator(null);
-                	application = getApplet(file, true, cont);
+                        // Do not display download indicators if we're using gcjwebplugin.
+                        JNLPRuntime.setDefaultDownloadIndicator(null);
+                        application = getApplet(file, true, cont);
                 } else {
-                	if (file.isApplication())
-                		application = launchApplication(file);
-                	else if (file.isApplet())
-                		application = launchApplet(file, true, cont); // enable applet code base
-                	else if (file.isInstaller())
-                		application = launchInstaller(file);
-                	else 
-                		throw launchError(new LaunchException(file, null, 
-                				R("LSFatal"), R("LCClient"), R("LNotLaunchable"), 
-                				R("LNotLaunchableInfo")));
+                        if (file.isApplication())
+                                application = launchApplication(file);
+                        else if (file.isApplet())
+                                application = launchApplet(file, true, cont); // enable applet code base
+                        else if (file.isInstaller())
+                                application = launchInstaller(file);
+                        else
+                                throw launchError(new LaunchException(file, null,
+                                                R("LSFatal"), R("LCClient"), R("LNotLaunchable"),
+                                                R("LNotLaunchableInfo")));
                 }
             }
             catch (LaunchException ex) {
@@ -736,7 +736,7 @@
                 exception = ex;
                 // Exit if we can't launch the application.
                 if (exitOnFailure)
-                	System.exit(0);
+                        System.exit(0);
             }
         }
 
@@ -747,7 +747,7 @@
         public ApplicationInstance getApplication() {
             return application;
         }
-        
+
     };
 
 
@@ -780,5 +780,3 @@
     };
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/MenuDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/MenuDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
--- a/netx/net/sourceforge/jnlp/NetxPanel.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/NetxPanel.java	Fri Jul 23 10:53:49 2010 +0100
@@ -47,8 +47,8 @@
     {
         super(documentURL, atts);
     }
-    
-    // overloaded constructor, called when initialized via plugin 
+
+    // overloaded constructor, called when initialized via plugin
     public NetxPanel(URL documentURL, Hashtable atts, boolean exitOnFailure)
     {
         this(documentURL, atts);
@@ -60,88 +60,87 @@
     //in sun.applet.AppletPanel for runLoader().
     protected void runLoader() {
 
-    	try {
-    		bridge = new PluginBridge(baseURL,
-    				getDocumentBase(),
-    				getJarFiles(), 
-    				getCode(),
-    				getWidth(), 
-    				getHeight(), 
-    				atts);
+        try {
+                bridge = new PluginBridge(baseURL,
+                                getDocumentBase(),
+                                getJarFiles(),
+                                getCode(),
+                                getWidth(),
+                                getHeight(),
+                                atts);
 
-    		synchronized(JNLPRuntime.initMutex) {
-    			//The custom NetX Policy and SecurityManager are set here.
-    			if (!JNLPRuntime.isInitialized()) {
-    			    if (JNLPRuntime.isDebug())
-    			        System.out.println("initializing JNLPRuntime...");
+                synchronized(JNLPRuntime.initMutex) {
+                        //The custom NetX Policy and SecurityManager are set here.
+                        if (!JNLPRuntime.isInitialized()) {
+                            if (JNLPRuntime.isDebug())
+                                System.out.println("initializing JNLPRuntime...");
 
-    				JNLPRuntime.initialize(false);
-    			} else {
-    			    if (JNLPRuntime.isDebug())
-    			        System.out.println("JNLPRuntime already initialized");
-    			}
-    		}
+                                JNLPRuntime.initialize(false);
+                        } else {
+                            if (JNLPRuntime.isDebug())
+                                System.out.println("JNLPRuntime already initialized");
+                        }
+                }
 
-    		doInit = true;
-    		dispatchAppletEvent(APPLET_LOADING, null);
-    		status = APPLET_LOAD;
+                doInit = true;
+                dispatchAppletEvent(APPLET_LOADING, null);
+                status = APPLET_LOAD;
 
-    		Launcher l = new Launcher(exitOnFailure);
-    		
+                Launcher l = new Launcher(exitOnFailure);
+
                 try {
                     appInst = (AppletInstance) l.launch(bridge, this);
                 } catch (LaunchException e) {
                     // Assume user has indicated he does not trust the
                     // applet.
-                	if (exitOnFailure)
-                		System.exit(0);
+                        if (exitOnFailure)
+                                System.exit(0);
                 }
-    		applet = appInst.getApplet();
-    		
-    		//On the other hand, if you create an applet this way, it'll work
-    		//fine. Note that you might to open visibility in sun.applet.AppletPanel
-    		//for this to work (the loader field, and getClassLoader).
-    		//loader = getClassLoader(getCodeBase(), getClassLoaderCacheKey());
-    		//applet = createApplet(loader);
-    		
-    		// This shows that when using NetX's JNLPClassLoader, keyboard input
-    		// won't make it to the applet, whereas using sun.applet.AppletClassLoader
-    		// works just fine.
-    		
-    		dispatchAppletEvent(APPLET_LOADING_COMPLETED, null);
+                applet = appInst.getApplet();
+
+                //On the other hand, if you create an applet this way, it'll work
+                //fine. Note that you might to open visibility in sun.applet.AppletPanel
+                //for this to work (the loader field, and getClassLoader).
+                //loader = getClassLoader(getCodeBase(), getClassLoaderCacheKey());
+                //applet = createApplet(loader);
+
+                // This shows that when using NetX's JNLPClassLoader, keyboard input
+                // won't make it to the applet, whereas using sun.applet.AppletClassLoader
+                // works just fine.
+
+                dispatchAppletEvent(APPLET_LOADING_COMPLETED, null);
 
-    		if (applet != null)
-    		{
-    			// Stick it in the frame
-    			applet.setStub(this);
-    			applet.setVisible(false);
-    			add("Center", applet);
-    			showAppletStatus("loaded");
-    			validate();
-    		}
-    	} catch (Exception e) {
-    	    this.appletAlive = false;
-    		e.printStackTrace();
-    	}
+                if (applet != null)
+                {
+                        // Stick it in the frame
+                        applet.setStub(this);
+                        applet.setVisible(false);
+                        add("Center", applet);
+                        showAppletStatus("loaded");
+                        validate();
+                }
+        } catch (Exception e) {
+            this.appletAlive = false;
+                e.printStackTrace();
+        }
     }
 
     // Reminder: Relax visibility in sun.applet.AppletPanel
     protected synchronized void createAppletThread() {
-    	handler = new Thread(this);
-    	handler.start();
+        handler = new Thread(this);
+        handler.start();
     }
-    
+
     public void updateSizeInAtts(int height, int width) {
-    	this.atts.put("height", Integer.toString(height));
-    	this.atts.put("width", Integer.toString(width));
+        this.atts.put("height", Integer.toString(height));
+        this.atts.put("width", Integer.toString(width));
     }
-    
+
     public ClassLoader getAppletClassLoader() {
         return appInst.getClassLoader();
     }
-    
+
     public boolean isAlive() {
         return handler != null && handler.isAlive() && this.appletAlive;
     }
 }
-
--- a/netx/net/sourceforge/jnlp/Node.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/Node.java	Fri Jul 23 10:53:49 2010 +0100
@@ -81,7 +81,7 @@
  * This class converts the TinyXML's ParsedXML nodes into the
  * regular XML Node interface (for the methods used by Parser).
  */
-/* TINY 
+/* TINY
 class Node {
     private ParsedXML tinyNode;
     private Node next;
@@ -144,4 +144,3 @@
     }
 }
 */
-
--- a/netx/net/sourceforge/jnlp/PackageDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/PackageDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -77,7 +77,7 @@
         return false;
     }
 
-    /** 
+    /**
      * Returns the package name.
      */
     public String getName() {
@@ -100,6 +100,3 @@
     }
 
 }
-
-
-
--- a/netx/net/sourceforge/jnlp/ParseException.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/ParseException.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -32,7 +32,7 @@
 
     // todo: add meaningful information, such as the invalid
     // element, parse position, etc.
-    
+
     /** the original exception */
     private Throwable cause = null;
 
@@ -90,5 +90,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/Parser.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/Parser.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,16 +1,16 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -34,7 +34,7 @@
  * Implements JNLP specification version 1.0.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.13 $ 
+ * @version $Revision: 1.13 $
  */
 class Parser {
 
@@ -113,7 +113,7 @@
      * constructor.
      *
      * @param file the (uninitialized) file reference
-     * @param base if codebase is not specified, a default base for relative URLs 
+     * @param base if codebase is not specified, a default base for relative URLs
      * @param root the root node
      * @param strict whether to enforce strict compliance with the JNLP spec
      * @param allowExtensions whether to allow extensions to the JNLP spec
@@ -150,37 +150,37 @@
         return supportedVersions;
     }
 
-    /** 
+    /**
      * Returns the file version.
      */
     public Version getFileVersion() {
         return getVersion(root, "version", null);
     }
 
-    /** 
+    /**
      * Returns the file location.
      */
     public URL getFileLocation() {
         return fileLocation;
     }
 
-    /** 
+    /**
      * Returns the codebase.
      */
     public URL getCodeBase() {
         return codebase;
     }
 
-    /** 
+    /**
      * Returns the specification version.
      */
     public Version getSpecVersion() {
         return spec;
     }
 
-    // 
+    //
     // This section loads the resources elements
-    // 
+    //
 
     /**
      * Returns all of the ResourcesDesc elements under the specified
@@ -216,9 +216,9 @@
         boolean mainFlag = false; // if found a main tag
 
         // create resources
-        ResourcesDesc resources = 
-            new ResourcesDesc(file, 
-                              getLocales(node), 
+        ResourcesDesc resources =
+            new ResourcesDesc(file,
+                              getLocales(node),
                               splitString(getAttribute(node, "os", null)),
                               splitString(getAttribute(node, "arch", null)));
 
@@ -227,7 +227,7 @@
         while (child != null) {
             String name = child.getNodeName();
 
-            // check for nativelib but no trusted environment 
+            // check for nativelib but no trusted environment
             if ("nativelib".equals(name))
                 if (!isTrustedEnvironment())
                     throw new ParseException(R("PUntrustedNative"));
@@ -259,7 +259,7 @@
             if ("extension".equals(name))
                 resources.addResource( getExtension(child) );
 
-            if ("property".equals(name)) 
+            if ("property".equals(name))
                 resources.addResource( getProperty(child) );
 
             if ("package".equals(name))
@@ -274,7 +274,7 @@
     /**
      * Returns the JRE element at the specified node.
      *
-     * @param node the j2se/java node 
+     * @param node the j2se/java node
      * @throws ParseException if the JNLP file is invalid
      */
     public JREDesc getJRE(Node node) throws ParseException {
@@ -301,7 +301,7 @@
     /**
      * Returns the JAR element at the specified node.
      *
-     * @param node the jar or nativelib node 
+     * @param node the jar or nativelib node
      * @throws ParseException if the JNLP file is invalid
      */
     public JARDesc getJAR(Node node) throws ParseException {
@@ -314,7 +314,7 @@
         int size = Integer.parseInt(getAttribute(node, "size", "0"));
 
         if (nativeJar && main)
-            if (strict) 
+            if (strict)
                 throw new ParseException(R("PNativeHasMain"));
 
         return new JARDesc(location, version, part, lazy, main, nativeJar, true);
@@ -324,7 +324,7 @@
     /**
      * Returns the Extension element at the specified node.
      *
-     * @param node the extension node 
+     * @param node the extension node
      * @throws ParseException if the JNLP file is invalid
      */
     public ExtensionDesc getExtension(Node node) throws ParseException {
@@ -349,7 +349,7 @@
     /**
      * Returns the Property element at the specified node.
      *
-     * @param node the property node 
+     * @param node the property node
      * @throws ParseException if the JNLP file is invalid
      */
     public PropertyDesc getProperty(Node node) throws ParseException {
@@ -362,7 +362,7 @@
     /**
      * Returns the Package element at the specified node.
      *
-     * @param node the package node 
+     * @param node the package node
      * @throws ParseException if the JNLP file is invalid
      */
     public PackageDesc getPackage(Node node) throws ParseException {
@@ -373,9 +373,9 @@
         return new PackageDesc(name, part, recursive);
     }
 
-    // 
+    //
     // This section loads the information elements
-    // 
+    //
 
     /**
      * Returns all of the information elements under the specified
@@ -462,7 +462,7 @@
     /**
      * Adds a key,value pair to the information object.
      *
-     * @param info the information object 
+     * @param info the information object
      * @param node node name to be used as the key
      * @param mod key name appended with "-"+mod if not null
      * @param value the info object to add (icon or string)
@@ -488,14 +488,14 @@
         int size = Integer.parseInt(getAttribute(node, "size", "-1"));
         int depth = Integer.parseInt(getAttribute(node, "depth", "-1"));
         URL location = getRequiredURL(node, "href", base);
-        Object kind = getAttribute(node, "kind", "default"); 
+        Object kind = getAttribute(node, "kind", "default");
 
         return new IconDesc(location, kind, width, height, depth, size);
     }
 
-    // 
+    //
     // This section loads the security descriptor element
-    // 
+    //
 
     /**
      * Returns the security descriptor element.  If no security
@@ -509,7 +509,7 @@
         Node nodes[] = getChildNodes(parent, "security");
 
         // test for too many security elements
-        if (nodes.length > 1) 
+        if (nodes.length > 1)
             if (strict)
                 throw new ParseException(R("PTwoSecurity"));
 
@@ -545,9 +545,9 @@
         return false;
     }
 
-    // 
+    //
     // This section loads the launch descriptor element
-    // 
+    //
 
     /**
      * Returns the launch descriptor element, either AppletDesc,
@@ -633,12 +633,12 @@
         Node args[] = getChildNodes(node, "argument");
         for (int i=0; i < args.length; i++) {
             //argsList.add( args[i].getNodeValue() );
-            
+
             //This approach was not finding the argument text
             argsList.add( getSpanText(args[i]) );
         }
 
-        String argStrings[] = 
+        String argStrings[] =
             (String[]) argsList.toArray( new String[argsList.size()] );
 
         return new ApplicationDesc(main, argStrings);
@@ -669,18 +669,18 @@
 
         return new AssociationDesc(mimeType, extensions);
     }
-    
+
     /**
      * Returns the shortcut descriptor.
      */
     public ShortcutDesc getShortcut(Node node) throws ParseException {
-        
+
         String online = getAttribute(node, "online", "true");
         boolean shortcutIsOnline = Boolean.valueOf(online);
-        
+
         boolean showOnDesktop = false;
         MenuDesc menu = null;
-        
+
         // step through the elements
         Node child = node.getFirstChild();
         while (child != null) {
@@ -697,44 +697,44 @@
                 }
                 menu = getMenu(child);
             }
-            
+
             child = child.getNextSibling();
         }
-        
+
         ShortcutDesc shortcut = new ShortcutDesc(shortcutIsOnline, showOnDesktop);
         if (menu != null) {
             shortcut.addMenu(menu);
         }
         return shortcut;
     }
-    
+
     /**
      * Returns the menu descriptor.
      */
     public MenuDesc getMenu(Node node) {
         String subMenu = getAttribute(node, "submenu", null);
-        
+
         return new MenuDesc(subMenu);
     }
 
-    
+
     /**
      * Returns the related-content descriptor.
      */
     public RelatedContentDesc getRelatedContent(Node node) throws ParseException {
-        
+
         getRequiredAttribute(node, "href", null);
         URL location = getURL(node, "href", base);
-        
+
         String title = null;
         String description = null;
         IconDesc icon = null;
-        
+
         // step through the elements
         Node child = node.getFirstChild();
         while (child != null) {
             String name = child.getNodeName();
-            
+
             if ("title".equals(name)) {
                 if (title != null && strict) {
                     throw new ParseException(R("PTwoTitles"));
@@ -751,19 +751,19 @@
                 }
                 icon = getIcon(child);
             }
-            
+
             child = child.getNextSibling();
         }
-        
+
         RelatedContentDesc relatedContent = new RelatedContentDesc(location);
         relatedContent.setDescription(description);
         relatedContent.setIconDesc(icon);
         relatedContent.setTitle(title);
-        
+
         return relatedContent;
-        
+
     }
-    
+
     // other methods
 
     /**
@@ -790,7 +790,7 @@
                     part.setCharAt(part.length()-1, ' '); // join with the space
                 else
                     break; // bizarre while format gets \ at end of string right (no extra space added at end)
-            } 
+            }
 
             // delete \ quote chars
             for (int i = part.length(); i-- > 0;) // sweet syntax for reverse loop
@@ -810,7 +810,7 @@
      */
     public Locale[] getLocales(Node node) {
         List locales = new ArrayList();
-        String localeParts[] = 
+        String localeParts[] =
             splitString(getAttribute(node, "locale", ""));
 
         for (int i=0; i < localeParts.length; i++) {
@@ -909,8 +909,8 @@
             return null;
 
         if (!source.toString().endsWith("/")) {
-            try { 
-                source = new URL(source.toString()+"/"); 
+            try {
+                source = new URL(source.toString()+"/");
             }
             catch (MalformedURLException ex) {
             }
@@ -1000,7 +1000,7 @@
         else
             return new Version(version);
     }
-    
+
     /**
      * Check that the VM args are valid and safe
      * @param vmArgs a string containing the args
@@ -1010,15 +1010,15 @@
         if (vmArgs == null) {
             return;
         }
-        
+
         List<String> validArguments = Arrays.asList(getValidVMArguments());
         List<String> validStartingArguments = Arrays.asList(getValidStartingVMArguments());
-        
+
         String[] arguments = vmArgs.split(" ");
         boolean argumentIsValid = false;
         for (String argument: arguments) {
             argumentIsValid = false;
-            
+
             if (validArguments.contains(argument)) {
                 argumentIsValid = true;
             } else {
@@ -1029,17 +1029,17 @@
                     }
                 }
             }
-            
+
             if (!argumentIsValid) {
                 throw new IllegalArgumentException(argument);
             }
         }
-        
+
     }
-    
+
     /**
      * Returns an array of valid (ie safe and supported) arguments for the JVM
-     * 
+     *
      * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html
      */
     private String[] getValidVMArguments() {
@@ -1049,7 +1049,7 @@
         "-server",                          /* to select the server VM */
         "-verbose",                         /* enable verbose output */
         "-version",                         /* print product version and exit */
-        "-showversion",                     /* print product version and continue */                              
+        "-showversion",                     /* print product version and continue */
         "-help",                            /* print this help message */
         "-X",                               /* print help on non-standard options */
         "-ea",                              /* enable assertions */
@@ -1077,7 +1077,7 @@
     /**
      * Returns an array containing the starts of valid (ie safe and supported)
      * arguments for the JVM
-     * 
+     *
      * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html
      */
     private String[] getValidStartingVMArguments() {
@@ -1142,7 +1142,7 @@
         // String result = ((Element) node).getAttribute(name);
         String result = node.getAttribute(name);
 
-        if (result == null || result.length()==0) 
+        if (result == null || result.length()==0)
             return defaultValue;
 
         return result;
@@ -1171,16 +1171,16 @@
             Node document = new Node(TinyParser.parseXML(input));
             Node jnlpNode = getChildNode(document, "jnlp"); // skip comments
             */
-            
-            //A BufferedInputStream is used to allow marking and reseting 
-            //of a stream.    
+
+            //A BufferedInputStream is used to allow marking and reseting
+            //of a stream.
             BufferedInputStream bs = new BufferedInputStream(input);
 
             /* NANO */
             final XMLElement xml = new XMLElement();
             final PipedInputStream pin = new PipedInputStream();
-            final PipedOutputStream pout = new PipedOutputStream(pin);   
-            final InputStreamReader isr = new InputStreamReader(bs, getEncoding(bs));    
+            final PipedOutputStream pout = new PipedOutputStream(pin);
+            final InputStreamReader isr = new InputStreamReader(bs, getEncoding(bs));
             // Clean the jnlp xml file of all comments before passing
             // it to the parser.
             new Thread(
@@ -1203,7 +1203,7 @@
             throw new ParseException(R("PBadXML"), ex);
         }
     }
-    
+
     /**
      * Returns the name of the encoding used in this InputStream.
      *
@@ -1211,22 +1211,22 @@
      * @return a String representation of encoding
      */
     private static String getEncoding(InputStream input) throws IOException{
-        //Fixme: This only recognizes UTF-8, UTF-16, and 
+        //Fixme: This only recognizes UTF-8, UTF-16, and
         //UTF-32, which is enough to parse the prolog portion of xml to
         //find out the exact encoding (if it exists). The reason being
         //there could be other encodings, such as ISO 8859 which is 8-bits
-        //but it supports latin characters.  
+        //but it supports latin characters.
         //So what needs to be done is to parse the prolog and retrieve
         //the exact encoding from it.
 
         int[] s = new int[4];
         String encoding = "UTF-8";
 
-        //Determine what the first four bytes are and store 
+        //Determine what the first four bytes are and store
         //them into an int array.
         input.mark(4);
         for (int i = 0; i < 4; i++) {
-            s[i] = input.read(); 
+            s[i] = input.read();
         }
         input.reset();
 
@@ -1241,31 +1241,30 @@
                     encoding = "X-UTF-32LE-BOM";
                 }
             }
-        } else if (s[0] == 254 && s[1] == 255 && (s[2] != 0 || 
+        } else if (s[0] == 254 && s[1] == 255 && (s[2] != 0 ||
           s[3] != 0)) {
             encoding = "UTF-16";
 
-        } else if (s[0] == 0 && s[1] == 0 && s[2] == 254 && 
+        } else if (s[0] == 0 && s[1] == 0 && s[2] == 254 &&
           s[3] == 255) {
             encoding = "X-UTF-32BE-BOM";
 
-        } else if (s[0] == 0 && s[1] == 0 && s[2] == 0 && 
+        } else if (s[0] == 0 && s[1] == 0 && s[2] == 0 &&
           s[3] == 60) {
             encoding = "UTF-32BE";
- 
-        } else if (s[0] == 60 && s[1] == 0 && s[2] == 0 && 
+
+        } else if (s[0] == 60 && s[1] == 0 && s[2] == 0 &&
           s[3] == 0) {
             encoding = "UTF-32LE";
 
-        } else if (s[0] == 0 && s[1] == 60 && s[2] == 0 && 
-          s[3] == 63) { 
-            encoding = "UTF-16BE"; 
+        } else if (s[0] == 0 && s[1] == 60 && s[2] == 0 &&
+          s[3] == 63) {
+            encoding = "UTF-16BE";
         } else if (s[0] == 60 && s[1] == 0 && s[2] == 63 &&
-          s[3] == 0) { 
+          s[3] == 0) {
             encoding = "UTF-16LE";
         }
 
         return encoding;
     }
 }
-
--- a/netx/net/sourceforge/jnlp/PluginBridge.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/PluginBridge.java	Fri Jul 23 10:53:49 2010 +0100
@@ -53,27 +53,27 @@
 
         // also, see if cache_archive is specified
         if (atts.get("cache_archive") != null && ((String) atts.get("cache_archive")).length() > 0) {
-            
+
             String[] versions = new String[0];
-            
+
             // are there accompanying versions?
             if (atts.get("cache_version") != null) {
                 versions = ((String) atts.get("cache_version")).split(",");
             }
-            
+
             String[] jars = ((String) atts.get("cache_archive")).split(",");
             cache_jars = new String[jars.length];
-            
+
             for (int i=0; i < jars.length; i++) {
-                
+
                 cache_jars[i] = jars[i].trim();
 
                 if (versions.length > 0) {
-                    cache_jars[i] += ";" + versions[i].trim(); 
+                    cache_jars[i] += ";" + versions[i].trim();
                 }
             }
         }
-        
+
         if (atts.get("cache_archive_ex") != null && ((String) atts.get("cache_archive_ex")).length() > 0) {
             cache_ex_jars = ((String) atts.get("cache_archive_ex")).split(",");
         }
@@ -147,23 +147,23 @@
                             if (jars[i].length() > 0)
                                 result.add(new JARDesc(new URL(codeBase, jars[i]),
                                         null, null, false, true, false, true));
-                        
+
                         boolean cacheable = true;
 
-                        if (atts.get("cache_option") != null && 
+                        if (atts.get("cache_option") != null &&
                                 ((String) atts.get("cache_option")).equalsIgnoreCase("no"))
                             cacheable = false;
 
                         for (int i = 0; i < cache_jars.length; i++) {
-                            
+
                             String[] jar_and_ver = cache_jars[i].split(";");
-                            
+
                             String jar = jar_and_ver[0];
                             Version version = null;
-                            
+
                             if (jar.length() == 0)
                                 continue;
-                            
+
                             if (jar_and_ver.length > 1) {
                                 version = new Version(jar_and_ver[1]);
                             }
@@ -171,20 +171,20 @@
                             result.add(new JARDesc(new URL(codeBase, jar),
                                     version, null, false, true, false, cacheable));
                         }
-                        
+
                         for (int i = 0; i < cache_ex_jars.length; i++) {
 
                             if (cache_ex_jars[i].length() == 0)
                                 continue;
-                            
+
                             String[] jar_info = cache_ex_jars[i].split(";");
-                            
+
                             String jar = jar_info[0].trim();
                             Version version = null;
                             boolean lazy = true;
-                            
+
                             if (jar_info.length > 1) {
-                                
+
                                 // format is name[[;preload];version]
 
                                 if (jar_info[1].equals("preload")) {
@@ -192,7 +192,7 @@
                                 } else {
                                     version = new Version(jar_info[1].trim());
                                 }
-                                
+
                                 if (jar_info.length > 2) {
                                     lazy = false;
                                     version = new Version(jar_info[2].trim());
@@ -226,9 +226,9 @@
                 for (int i = 0; i < objectArray.length; i++)
                     jarArray[i] = (JARDesc) objectArray[i];
 
-                return jarArray;  
+                return jarArray;
             }
-            
+
             public void addResource(Object resource)
             {
                 // todo: honor the current locale, os, arch values
--- a/netx/net/sourceforge/jnlp/PropertyDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/PropertyDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -21,7 +21,7 @@
 import java.net.*;
 import java.util.*;
 
-/** 
+/**
  * The property element.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
@@ -48,19 +48,17 @@
     }
 
     /**
-     * Returns the property's key 
+     * Returns the property's key
      */
     public String getKey() {
         return key;
     }
 
     /**
-     * Returns the property's value 
+     * Returns the property's value
      */
     public String getValue() {
         return value;
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/RelatedContentDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/RelatedContentDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
--- a/netx/net/sourceforge/jnlp/ResourcesDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/ResourcesDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -84,12 +84,12 @@
 
         if (jars.length > 0)
             return jars[0];
-        else 
+        else
             return null;
     }
 
     /**
-     * Returns all of the JARs. 
+     * Returns all of the JARs.
      */
     public JARDesc[] getJARs() {
         List resources = getResources(JARDesc.class);
@@ -97,7 +97,7 @@
     }
 
     /**
-     * Returns the JARs with the specified part name. 
+     * Returns the JARs with the specified part name.
      *
      * @param partName the part name, null and "" equivalent
      */
@@ -228,4 +228,3 @@
     }
 
 }
-
--- a/netx/net/sourceforge/jnlp/SecurityDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/SecurityDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -164,12 +164,12 @@
 
         return permissions;
     }
-    
+
     /**
      * Returns a PermissionCollection containing the sandbox permissions
      */
     public PermissionCollection getSandBoxPermissions() {
-        
+
         Permissions permissions = new Permissions();
 
         for (int i=0; i < sandboxPermissions.length; i++)
@@ -190,6 +190,3 @@
     }
 
 }
-
-
-
--- a/netx/net/sourceforge/jnlp/ShortcutDesc.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/ShortcutDesc.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
--- a/netx/net/sourceforge/jnlp/StreamEater.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/StreamEater.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
--- a/netx/net/sourceforge/jnlp/Version.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/Version.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -36,7 +36,7 @@
  * 1.4.0-beta1, but may not in future versions.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.5 $ 
+ * @version $Revision: 1.5 $
  */
 public class Version {
 
@@ -59,7 +59,7 @@
 
 
     /**
-     * Create a Version object based on a version string (ie, 
+     * Create a Version object based on a version string (ie,
      * "1.2.3+ 4.56*").
      */
     public Version(String versions) {
@@ -178,7 +178,7 @@
      * Returns whether the parts of one version are equal to the
      * parts of another version.
      *
-     * @param parts1 normalized version parts 
+     * @param parts1 normalized version parts
      * @param parts2 normalized version parts
      */
     protected boolean equal(List parts1, List parts2) {
@@ -191,10 +191,10 @@
     }
 
     /**
-     * Returns whether the parts of one version are greater than 
+     * Returns whether the parts of one version are greater than
      * the parts of another version.
      *
-     * @param parts1 normalized version parts 
+     * @param parts1 normalized version parts
      * @param parts2 normalized version parts
      */
     protected boolean greater(List parts1, List parts2) {
@@ -350,5 +350,3 @@
     */
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/cache/CacheEntry.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/cache/CacheEntry.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -32,7 +32,7 @@
  * Describes an entry in the cache.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.10 $ 
+ * @version $Revision: 1.10 $
  */
 public class CacheEntry {
 
@@ -170,5 +170,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java	Fri Jul 23 10:53:49 2010 +0100
@@ -37,8 +37,8 @@
  */
 public class CacheUtil {
 
-    private static String R(String key, Object param) { 
-        return JNLPRuntime.getMessage(key, new Object[] {param}); 
+    private static String R(String key, Object param) {
+        return JNLPRuntime.getMessage(key, new Object[] {param});
     }
 
     /**
@@ -120,8 +120,8 @@
             }
             catch (java.io.IOException ioe) {
                 // should try to figure out the permission
-            	if (JNLPRuntime.isDebug())
-            		ioe.printStackTrace();
+                if (JNLPRuntime.isDebug())
+                        ioe.printStackTrace();
             }
         }
 
@@ -325,7 +325,7 @@
 
             // see if resources can be downloaded very quickly; avoids
             // overhead of creating display components for the resources
-            if (tracker.waitForResources(resources, indicator.getInitialDelay())) 
+            if (tracker.waitForResources(resources, indicator.getInitialDelay()))
                 return;
 
             // only resources not starting out downloaded are displayed
@@ -377,5 +377,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -33,7 +33,7 @@
  * Show the progress of downloads.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.3 $ 
+ * @version $Revision: 1.3 $
  */
 public class DefaultDownloadIndicator implements DownloadIndicator {
 
@@ -56,12 +56,12 @@
     private static final int CLOSE_DELAY = 750;
 
     /** the display window */
-    private static JFrame frame; 
+    private static JFrame frame;
 
     /** shared constraint */
     static GridBagConstraints vertical;
     static GridBagConstraints verticalIndent;
-    static { 
+    static {
         vertical = new GridBagConstraints();
         vertical.gridwidth = GridBagConstraints.REMAINDER;
         vertical.weightx = 1.0;
@@ -112,7 +112,7 @@
         if (!frame.isVisible()) {
             Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
             Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());
-            Dimension screen = new Dimension(screenSize.width - insets.left , 
+            Dimension screen = new Dimension(screenSize.width - insets.left ,
                     screenSize.height - insets.top);
             frame.setLocation(screen.width-frame.getWidth(),
                               screen.height-frame.getHeight());
@@ -318,4 +318,3 @@
     };
 
 }
-
--- a/netx/net/sourceforge/jnlp/cache/DownloadIndicator.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/cache/DownloadIndicator.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -34,7 +34,7 @@
  * notified of resources being transferred and their progress.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.8 $ 
+ * @version $Revision: 1.8 $
  */
 public interface DownloadIndicator {
 
@@ -53,7 +53,7 @@
      * @param resources initial urls to display, empty if none known at start
      */
     public DownloadServiceListener getListener(ApplicationInstance app,
-                                               String downloadName, 
+                                               String downloadName,
                                                URL resources[]);
 
     /**
@@ -89,4 +89,3 @@
     public int getInitialDelay();
 
 }
-
--- a/netx/net/sourceforge/jnlp/cache/Resource.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/cache/Resource.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -39,7 +39,7 @@
  * order added to the media tracker.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.9 $ 
+ * @version $Revision: 1.9 $
  */
 public class Resource {
 
@@ -67,7 +67,7 @@
 
     /** the remote location of the resource */
     URL location;
-    
+
     /** the local file downloaded to */
     File localFile;
 
@@ -88,7 +88,7 @@
 
     /** the status of the resource */
     int status = UNINITIALIZED;
-    
+
     /** Update policy for this resource */
     UpdatePolicy updatePolicy;
 
@@ -156,7 +156,7 @@
 
     /**
      * Returns the update policy for this resource
-     * 
+     *
      * @return The update policy
      */
     public UpdatePolicy getUpdatePolicy() {
@@ -200,9 +200,9 @@
         if (JNLPRuntime.isDebug())
             if (status != orig) {
                 System.out.print("Status: "+getStatusString(status));
-                if ((status & ~orig) != 0) 
+                if ((status & ~orig) != 0)
                     System.out.print(" +("+getStatusString(status & ~orig)+")");
-                if ((~status & orig) != 0) 
+                if ((~status & orig) != 0)
                     System.out.print(" -("+getStatusString(~status & orig)+")");
                 System.out.println(" @ "+location.getPath());
             }
@@ -267,5 +267,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -64,7 +64,7 @@
  * as needed.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.22 $ 
+ * @version $Revision: 1.22 $
  */
 public class ResourceTracker {
 
@@ -86,7 +86,7 @@
     // version of a resource, but probably not very useful.
 
 
-    // defines 
+    // defines
     //    ResourceTracker.Downloader (download threads)
 
     // separately locks on (in order of aquire order, ie, sync on prefetch never syncs on lock):
@@ -119,7 +119,7 @@
     private static ArrayList queue = new ArrayList();
 
     /** resource trackers threads are working for (used for load balancing across multi-tracker downloads) */
-    private static ArrayList active = new ArrayList(); // 
+    private static ArrayList active = new ArrayList(); //
 
     /** the resources known about by this resource tracker */
     private List resources = new ArrayList();
@@ -127,7 +127,7 @@
     /** download listeners for this tracker */
     private List listeners = new ArrayList();
 
-    /** whether to download parts before requested */ 
+    /** whether to download parts before requested */
     private boolean prefetch;
 
 
@@ -141,7 +141,7 @@
     /**
      * Creates a resource tracker.
      *
-     * @param prefetch whether to download resources before requested. 
+     * @param prefetch whether to download resources before requested.
      */
     public ResourceTracker(boolean prefetch) {
         this.prefetch = prefetch;
@@ -217,7 +217,7 @@
      * as already downloaded if found. <p>
      *
      * @param updatePolicy whether to check for updates if already in cache
-     * @return whether the resource are already downloaded 
+     * @return whether the resource are already downloaded
      */
     private boolean checkCache(Resource resource, UpdatePolicy updatePolicy) {
         if (!CacheUtil.isCacheable(resource.location, resource.downloadVersion)) {
@@ -248,7 +248,7 @@
                 return true;
             }
         }
-        
+
         if (updatePolicy == UpdatePolicy.FORCE) { // ALWAYS update
             // When we are "always" updating, we update for each instance. Reset resource status.
             resource.changeStatus(Integer.MAX_VALUE, 0);
@@ -420,7 +420,7 @@
     public boolean waitForResources(URL urls[], long timeout) throws InterruptedException {
         Resource resources[] = new Resource[ urls.length ];
 
-        synchronized(resources) { 
+        synchronized(resources) {
             // keep the lock so getResource doesn't have to aquire it each time
             for (int i=0; i < urls.length; i++)
                 resources[i] = getResource(urls[i]);
@@ -476,7 +476,7 @@
      * by the tracker because the tracker will only prefetch one
      * resource at a time to conserve system resources.
      *
-     * @return true if the resource is already downloaded (or an error occurred) 
+     * @return true if the resource is already downloaded (or an error occurred)
      * @throws IllegalArgumentException if the resource is not being tracked
      */
     public boolean startResource(URL location) {
@@ -489,7 +489,7 @@
      * Sets the resource status to connect and download, and
      * enqueues the resource if not already started.
      *
-     * @return true if the resource is already downloaded (or an error occurred) 
+     * @return true if the resource is already downloaded (or an error occurred)
      * @throws IllegalArgumentException if the resource is not being tracked
      */
     private boolean startResource(Resource resource) {
@@ -562,7 +562,7 @@
         }
 
         if (threads == 0) {
-            synchronized (prefetchTrackers) { 
+            synchronized (prefetchTrackers) {
                 queue.trimToSize(); // these only accessed by threads so no sync needed
                 active.clear(); // no threads so no trackers actively downloading
                 active.trimToSize();
@@ -615,7 +615,7 @@
 
     /**
      * Downloads a resource to a file, uncompressing it if required
-     * 
+     *
      * @param resource the resource to download
      */
     private void downloadResource(Resource resource) {
@@ -625,7 +625,7 @@
             // create out second in case in does not exist
             URLConnection con = getVersionedResourceURL(resource).openConnection();
             con.addRequestProperty("Accept-Encoding", "pack200-gzip, gzip");
-            
+
             con.connect();
 
             /*
@@ -666,7 +666,7 @@
             // explicitly close the URLConnection.
             if (con instanceof HttpURLConnection)
                 ((HttpURLConnection)con).disconnect();
-            
+
             /*
              * If the file was compressed, uncompress it.
              */
@@ -687,7 +687,7 @@
                     outputStream.close();
                     inputStream.close();
                     gzInputStream.close();
-                    
+
                 } else if (contentEncoding.equals("pack200-gzip")) {
                     GZIPInputStream gzInputStream = new GZIPInputStream(new FileInputStream(
                             CacheUtil.getCacheFile(downloadLocation, resource.downloadVersion)));
@@ -704,7 +704,7 @@
                     gzInputStream.close();
                 }
             }
-            
+
             resource.changeStatus(DOWNLOADING, DOWNLOADED);
             synchronized(lock) {
                 lock.notifyAll(); // wake up wait's to check for completion
@@ -765,7 +765,7 @@
             resource.fireDownloadEvent(); // fire CONNECTED
 
             // explicitly close the URLConnection.
-			if (connection instanceof HttpURLConnection)
+                        if (connection instanceof HttpURLConnection)
                 ((HttpURLConnection)connection).disconnect();
         }
         catch (Exception ex) {
@@ -782,7 +782,7 @@
 
     /**
      * Returns the versioned url for a resource
-     * @param resource the resource to get the url for 
+     * @param resource the resource to get the url for
      */
     private URL getVersionedResourceURL(Resource resource) {
         String actualLocation = resource.location.getProtocol() + "://"
@@ -803,8 +803,8 @@
         }
         return versionedURL;
     }
- 
-    
+
+
     /**
      * Pick the next resource to download or initialize.  If there
      * are no more resources requested then one is taken from a
@@ -862,7 +862,7 @@
         Resource result = null;
         Resource alternate = null;
 
-        // first find one to initialize 
+        // first find one to initialize
         synchronized (prefetchTrackers) {
             for (int i=0; i < prefetchTrackers.size() && result == null; i++) {
                 ResourceTracker tracker = (ResourceTracker) prefetchTrackers.get(i);
@@ -978,10 +978,10 @@
             boolean finished = true;
 
             synchronized (lock) {
-                // check for completion 
+                // check for completion
                 for (int i=0; i < resources.length; i++) {
-                	//NetX Deadlocking may be solved by removing this 
-                	//synch block.
+                        //NetX Deadlocking may be solved by removing this
+                        //synch block.
                     synchronized (resources[i]) {
                         if (!resources[i].isSet(DOWNLOADED | ERROR)) {
                             finished = false;
@@ -1009,7 +1009,7 @@
 
     // inner classes
 
-    /** 
+    /**
      * This class downloads and initializes the queued resources.
      */
     class Downloader implements Runnable {
@@ -1047,5 +1047,3 @@
     };
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/cache/UpdatePolicy.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/cache/UpdatePolicy.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2002 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -32,7 +32,7 @@
  * an updated version.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.3 $ 
+ * @version $Revision: 1.3 $
  */
 public class UpdatePolicy {
 
@@ -86,5 +86,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/event/ApplicationEvent.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/event/ApplicationEvent.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2002 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -25,7 +25,7 @@
  * This event is sent when an application is terminated.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.5 $ 
+ * @version $Revision: 1.5 $
  */
 public class ApplicationEvent extends EventObject {
 
@@ -45,7 +45,7 @@
         this.application = source;
     }
 
-    /** 
+    /**
      * Returns the application instance.
      */
     public ApplicationInstance getApplication() {
@@ -53,5 +53,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/event/ApplicationListener.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/event/ApplicationListener.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2002 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -25,7 +25,7 @@
  * terminated.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.5 $ 
+ * @version $Revision: 1.5 $
  */
 public interface ApplicationListener extends EventListener {
 
@@ -35,4 +35,3 @@
     public void applicationDestroyed(ApplicationEvent applicationEvent);
 
 }
-
--- a/netx/net/sourceforge/jnlp/event/DownloadEvent.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/event/DownloadEvent.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2002 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -28,7 +28,7 @@
  * application.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.3 $ 
+ * @version $Revision: 1.3 $
  */
 public class DownloadEvent extends EventObject {
 
@@ -60,7 +60,7 @@
         return tracker;
     }
 
-    /** 
+    /**
      * Returns the location of the resource being downloaded.
      */
     public URL getResourceLocation() {
@@ -68,5 +68,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/event/DownloadListener.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/event/DownloadListener.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2002 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -28,7 +28,7 @@
  * progress by tying up a thread.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.3 $ 
+ * @version $Revision: 1.3 $
  */
 public interface DownloadListener extends EventListener {
 
@@ -48,4 +48,3 @@
     public void downloadCompleted(DownloadEvent downloadEvent);
 
 }
-
--- a/netx/net/sourceforge/jnlp/runtime/AppThreadGroup.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/AppThreadGroup.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -23,7 +23,7 @@
  * Thread group for a JNLP application.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.5 $ 
+ * @version $Revision: 1.5 $
  */
 public class AppThreadGroup extends ThreadGroup {
 
--- a/netx/net/sourceforge/jnlp/runtime/AppletAudioClip.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/AppletAudioClip.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -28,7 +28,7 @@
  * An applet audio clip using the javax.sound API.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.8 $ 
+ * @version $Revision: 1.8 $
  */
 public class AppletAudioClip implements AudioClip {
 
@@ -36,7 +36,7 @@
     private Clip clip;
 
 
-    /** 
+    /**
      * Creates new AudioClip.  If the clip cannot be opened no
      * exception is thrown, instead the methods of the AudioClip
      * return without performing any operations.
@@ -105,5 +105,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -37,7 +37,7 @@
  * resizable.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.12 $ 
+ * @version $Revision: 1.12 $
  */
 public class AppletEnvironment implements AppletContext, AppletStub {
 
@@ -168,22 +168,22 @@
                 frame.setSize(appletDesc.getWidth() + insets.left + insets.right,
                               appletDesc.getHeight() + insets.top + insets.bottom);
             }
-    
+
             try {
-            	SwingUtilities.invokeAndWait(new Runnable() {
-            		public void run() {
-            			// do first because some applets need to be displayed before
-            			// starting (they use Component.getImage or something)
-            			cont.setVisible(true);
+                SwingUtilities.invokeAndWait(new Runnable() {
+                        public void run() {
+                                // do first because some applets need to be displayed before
+                                // starting (they use Component.getImage or something)
+                                cont.setVisible(true);
 
-            			applet.init();
-            			applet.start();
+                                applet.init();
+                                applet.start();
 
-            			cont.invalidate(); // this should force the applet to
-            			cont.validate();   // the correct size and to repaint
-            			cont.repaint();
-            		}
-            	});
+                                cont.invalidate(); // this should force the applet to
+                                cont.validate();   // the correct size and to repaint
+                                cont.repaint();
+                        }
+                });
             } catch (InterruptedException ie) {
 
             } catch (InvocationTargetException ite) {
@@ -198,7 +198,7 @@
         }
     }
 
-    // applet context methods 
+    // applet context methods
 
     /**
      * Returns the applet if the applet's name is specified,
--- a/netx/net/sourceforge/jnlp/runtime/AppletInstance.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/AppletInstance.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -36,7 +36,7 @@
  * use the AppletEnvironment class to start and stop the applet.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.9 $ 
+ * @version $Revision: 1.9 $
  */
 public class AppletInstance extends ApplicationInstance {
 
@@ -62,7 +62,7 @@
     }
 
     /**
-     * 
+     *
      */
     public AppletInstance(JNLPFile file, ThreadGroup group, ClassLoader loader, Applet applet, Container cont) {
         super(file, group, loader);
@@ -136,4 +136,3 @@
     }
 
 }
-
--- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -35,7 +35,7 @@
  * resources and destroy the application.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.15 $ 
+ * @version $Revision: 1.15 $
  */
 public class ApplicationInstance {
 
@@ -61,8 +61,8 @@
     /** list of application listeners  */
     private EventListenerList listeners = new EventListenerList();
 
-	/** whether or not this application is signed */
-	private boolean isSigned = false;
+        /** whether or not this application is signed */
+        private boolean isSigned = false;
 
     /**
      * Create an application instance for the file.
@@ -112,7 +112,7 @@
 
         //Fixme: -Should check whether a desktop entry already exists for
         //        for this jnlp file, and do nothing if it exists.
-        //       -If no href is specified in the jnlp tag, it should 
+        //       -If no href is specified in the jnlp tag, it should
         //        default to using the one passed in as an argument.
         addMenuAndDesktopEntries();
     }
@@ -172,7 +172,7 @@
         AccessController.doPrivileged(installProps);
     }
 
-    /** 
+    /**
      * Returns the JNLP file for this task.
      */
     public JNLPFile getJNLPFile() {
@@ -251,7 +251,7 @@
         return group;
     }
 
-    /** 
+    /**
      * Returns the classloader.
      *
      * @throws IllegalStateException if the app is not running
@@ -272,11 +272,10 @@
         weakWindows.trimToSize();
     }
 
-	/**
-	 * Returns whether or not this jar is signed.
-	 */
-	public boolean isSigned() {
-		return isSigned;
-	}
+        /**
+         * Returns whether or not this jar is signed.
+         */
+        public boolean isSigned() {
+                return isSigned;
+        }
 }
-
--- a/netx/net/sourceforge/jnlp/runtime/Boot.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/Boot.java	Fri Jul 23 10:53:49 2010 +0100
@@ -61,7 +61,7 @@
 
     // todo: decide whether a spawned netx (external launch)
     // should inherit the same options as this instance (store argv?)
-    
+
     private static String R(String key) { return JNLPRuntime.getMessage(key); }
     private static String R(String key, Object param) { return JNLPRuntime.getMessage(key, new Object[] {param}); }
 
@@ -126,7 +126,7 @@
      */
     public static void main(String[] argsIn) {
         args = argsIn;
-        
+
         if (null != getOption("-viewer")) {
 
             try {
@@ -166,11 +166,11 @@
 
         if (null != getOption("-noupdate"))
             JNLPRuntime.setDefaultUpdatePolicy(UpdatePolicy.NEVER);
-        
+
         if (null != getOption("-Xnofork")) {
             JNLPRuntime.setForksAllowed(false);
         }
-        
+
         // wire in custom authenticator
         try {
             SSLSocketFactory sslSocketFactory;
@@ -178,7 +178,7 @@
             TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() };
             context.init(null, trust, null);
             sslSocketFactory = context.getSocketFactory();
-            
+
             HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);
         } catch (Exception e) {
             System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway...");
@@ -186,7 +186,7 @@
         }
 
         JNLPRuntime.setInitialArgments(Arrays.asList(argsIn));
-        
+
         // do in a privileged action to clear the security context of
         // the Boot13 class, which doesn't have any privileges in
         // JRE1.3; JRE1.4 works without Boot13 or this PrivilegedAction.
@@ -212,7 +212,7 @@
             if (JNLPRuntime.isDebug())
                 ex.printStackTrace();
 
-            fatalError(JNLPRuntime.getMessage("RUnexpected", 
+            fatalError(JNLPRuntime.getMessage("RUnexpected",
                         new Object[] {ex.toString(), ex.getStackTrace()[0]} ));
         }
 
@@ -241,9 +241,9 @@
      * specified.
      */
     private static JNLPFile getFile() throws ParseException, MalformedURLException, IOException {
-    
+
         String location = getJNLPFile();
-        
+
         // override -jnlp with aboutFile
         if (getOption("-about") != null) {
             location = getAboutFile();
@@ -257,7 +257,7 @@
             System.out.println(helpMessage);
             System.exit(1);
         }
-        
+
         if (JNLPRuntime.isDebug())
             System.out.println(R("BFileLoc")+": "+location);
 
@@ -266,19 +266,19 @@
         try {
             if (new File(location).exists())
                 url = new File(location).toURL(); // Why use file.getCanonicalFile?
-            else 
+            else
                 url = new URL(ServiceUtil.getBasicService().getCodeBase(), location);
         } catch (Exception e) {
             fatalError("Invalid jnlp file " + location);
             if (JNLPRuntime.isDebug())
                 e.printStackTrace();
         }
-        
+
         boolean strict = (null != getOption("-strict"));
 
         JNLPFile file = new JNLPFile(url, strict);
 
-        // Launches the jnlp file where this file originated. 
+        // Launches the jnlp file where this file originated.
         if (file.getSourceLocation() != null) {
             file = new JNLPFile(file.getSourceLocation(), strict);
         }
@@ -382,7 +382,7 @@
         }
         return null;
     }
-    
+
     /**
      * Return value of the first occurence of the specified
      * option, or null if the option is not present.  If the
@@ -426,7 +426,7 @@
     /**
      * Return the base dir.  If the base dir parameter is not set
      * the value is read from JNLPRuntime.NETX_ABOUT_FILE file.
-     * If that file does not exist, an install dialog is displayed 
+     * If that file does not exist, an install dialog is displayed
      * to select the base directory.
      */
     private static File getBaseDir() {
@@ -448,4 +448,3 @@
     }
 
 }
-
--- a/netx/net/sourceforge/jnlp/runtime/Boot13.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/Boot13.java	Fri Jul 23 10:53:49 2010 +0100
@@ -100,4 +100,3 @@
     }
 
 }
-
--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -67,7 +67,7 @@
  * security context when the classloader was created.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.20 $ 
+ * @version $Revision: 1.20 $
  */
 public class JNLPClassLoader extends URLClassLoader {
 
@@ -116,29 +116,29 @@
 
     /** the security section */
     private SecurityDesc security;
-    
+
     /** Permissions granted by the user during runtime. */
     private ArrayList<Permission> runtimePermissions = new ArrayList<Permission>();
 
     /** all jars not yet part of classloader or active */
     private List available = new ArrayList();
 
-	/** all of the jar files that were verified */
-	private ArrayList<String> verifiedJars = null;
+        /** all of the jar files that were verified */
+        private ArrayList<String> verifiedJars = null;
 
-	/** all of the jar files that were not verified */
-	private ArrayList<String> unverifiedJars = null;
+        /** all of the jar files that were not verified */
+        private ArrayList<String> unverifiedJars = null;
 
-	/** the jarsigner tool to verify our jars */
-	private JarSigner js = null;
+        /** the jarsigner tool to verify our jars */
+        private JarSigner js = null;
+
+        private boolean signing = false;
 
-	private boolean signing = false;
-	
-	/** ArrayList containing jar indexes for various jars available to this classloader */
-	private ArrayList<JarIndex> jarIndexes = new ArrayList<JarIndex>();
-	
-	/** File entries in the jar files available to this classloader */
-	private TreeSet jarEntries = new TreeSet();
+        /** ArrayList containing jar indexes for various jars available to this classloader */
+        private ArrayList<JarIndex> jarIndexes = new ArrayList<JarIndex>();
+
+        /** File entries in the jar files available to this classloader */
+        private TreeSet jarEntries = new TreeSet();
 
     /**
      * Create a new JNLPClassLoader from the specified file.
@@ -168,13 +168,13 @@
     }
 
     private void setSecurity() throws LaunchException {
-		
+
         URL codebase = null;
 
         if (file.getCodeBase() != null) {
             codebase = file.getCodeBase();
         } else {
-            //Fixme: codebase should be the codebase of the Main Jar not 
+            //Fixme: codebase should be the codebase of the Main Jar not
             //the location. Although, it still works in the current state.
             codebase = file.getResources().getMainJAR().getLocation();
         }
@@ -186,27 +186,27 @@
          */
         if (file instanceof PluginBridge) {
             if (signing == true) {
-                this.security = new SecurityDesc(file, 
+                this.security = new SecurityDesc(file,
                     SecurityDesc.ALL_PERMISSIONS,
                     codebase.getHost());
             } else {
-                this.security = new SecurityDesc(file, 
-                    SecurityDesc.SANDBOX_PERMISSIONS, 
+                this.security = new SecurityDesc(file,
+                    SecurityDesc.SANDBOX_PERMISSIONS,
                     codebase.getHost());
             }
         } else { //regular jnlp file
-			
+
             /*
              * Various combinations of the jars being signed and <security> tags being
              * present are possible. They are treated as follows
-             * 
+             *
              * Jars          JNLP File         Result
-             * 
+             *
              * Signed        <security>        Appropriate Permissions
              * Signed        no <security>     Sandbox
              * Unsigned      <security>        Error
              * Unsigned      no <security>     Sandbox
-             * 
+             *
              */
             if (!file.getSecurity().getSecurityType().equals(SecurityDesc.SANDBOX_PERMISSIONS) && !signing) {
                 throw new LaunchException(file, null, R("LSFatal"), R("LCClient"), R("LUnsignedJarWithSecurity"), R("LUnsignedJarWithSecurityInfo"));
@@ -214,13 +214,13 @@
             else if (signing == true) {
                 this.security = file.getSecurity();
             } else {
-                this.security = new SecurityDesc(file, 
-                        SecurityDesc.SANDBOX_PERMISSIONS, 
+                this.security = new SecurityDesc(file,
+                        SecurityDesc.SANDBOX_PERMISSIONS,
                         codebase.getHost());
             }
         }
     }
-    
+
     /**
      * Returns a JNLP classloader for the specified JNLP file.
      *
@@ -235,49 +235,49 @@
         if (uniqueKey != null)
             baseLoader = (JNLPClassLoader) urlToLoader.get(uniqueKey);
 
-		try {
-		    
-		    // If base loader is null, or the baseloader's file and this 
-		    // file is different, initialize a new loader
-		    if (baseLoader == null || 
-		        !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation())) {
+                try {
 
-		        loader = new JNLPClassLoader(file, policy);
+                    // If base loader is null, or the baseloader's file and this
+                    // file is different, initialize a new loader
+                    if (baseLoader == null ||
+                        !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation())) {
 
-		        // New loader init may have caused extentions to create a 
-		        // loader for this unique key. Check.
-		        JNLPClassLoader extLoader = (JNLPClassLoader) urlToLoader.get(uniqueKey);
+                        loader = new JNLPClassLoader(file, policy);
+
+                        // New loader init may have caused extentions to create a
+                        // loader for this unique key. Check.
+                        JNLPClassLoader extLoader = (JNLPClassLoader) urlToLoader.get(uniqueKey);
 
-		        if (extLoader != null && extLoader != loader) {
-		            for (URL u : loader.getURLs())
-		                extLoader.addURL(u);
-		            for (File nativeDirectory: loader.getNativeDirectories())
-		                extLoader.addNativeDirectory(nativeDirectory);
+                        if (extLoader != null && extLoader != loader) {
+                            for (URL u : loader.getURLs())
+                                extLoader.addURL(u);
+                            for (File nativeDirectory: loader.getNativeDirectories())
+                                extLoader.addNativeDirectory(nativeDirectory);
 
-		            loader = extLoader;
-		        }
+                            loader = extLoader;
+                        }
 
-                // loader is now current + ext. But we also need to think of 
+                // loader is now current + ext. But we also need to think of
                 // the baseLoader
-		        if (baseLoader != null && baseLoader != loader) {
+                        if (baseLoader != null && baseLoader != loader) {
                     for (URL u : loader.getURLs())
                         baseLoader.addURL(u);
                     for (File nativeDirectory: loader.getNativeDirectories())
                         baseLoader.addNativeDirectory(nativeDirectory);
 
                     loader = baseLoader;
-                } 
+                }
 
-		    } else {
-		        // if key is same and locations match, this is the loader we want
-		        loader = baseLoader;
-		    }
+                    } else {
+                        // if key is same and locations match, this is the loader we want
+                        loader = baseLoader;
+                    }
 
-		} catch (LaunchException e) {
-			throw e;
-		}
+                } catch (LaunchException e) {
+                        throw e;
+                }
 
-        // loaders are mapped to a unique key. Only extensions and parent 
+        // loaders are mapped to a unique key. Only extensions and parent
         // share a key, so it is safe to always share based on it
         urlToLoader.put(uniqueKey, loader);
 
@@ -286,7 +286,7 @@
 
     /**
      * Returns a JNLP classloader for the JNLP file at the specified
-     * location. 
+     * location.
      *
      * @param location the file's location
      * @param version the file's version
@@ -312,18 +312,18 @@
 
         loaderList.add(this);
 
-		//if (ext != null) {
-        	for (int i=0; i < ext.length; i++) {
-            	try {
+                //if (ext != null) {
+                for (int i=0; i < ext.length; i++) {
+                try {
                     String uniqueKey = this.getJNLPFile().getUniqueKey();
                     JNLPClassLoader loader = getInstance(ext[i].getLocation(), uniqueKey, ext[i].getVersion(), updatePolicy);
                     loaderList.add(loader);
-            	}
-            	catch (Exception ex) {
-                	ex.printStackTrace();
-            	}
-        	}
-		//}
+                }
+                catch (Exception ex) {
+                        ex.printStackTrace();
+                }
+                }
+                //}
 
         loaders = (JNLPClassLoader[]) loaderList.toArray(new JNLPClassLoader[ loaderList.size()]);
     }
@@ -340,10 +340,10 @@
                                                        jars[i].getVersion());
 
             if (JNLPRuntime.isDebug()) {
-            	if (p == null)
-            		System.out.println("Unable to add permission for " + jars[i].getLocation());
-            	else
-            		System.out.println("Permission added: " + p.toString());
+                if (p == null)
+                        System.out.println("Unable to add permission for " + jars[i].getLocation());
+                else
+                        System.out.println("Permission added: " + p.toString());
             }
             if (p != null)
                 resourcePermissions.add(p);
@@ -356,14 +356,14 @@
      */
     void initializeResources() throws LaunchException {
         JARDesc jars[] = resources.getJARs();
-		if (jars == null || jars.length == 0)
-			return;
-		/*
-		if (jars == null || jars.length == 0) {
-			throw new LaunchException(null, null, R("LSFatal"),
-			                    R("LCInit"), R("LFatalVerification"), "No jars!");
-		}
-		*/
+                if (jars == null || jars.length == 0)
+                        return;
+                /*
+                if (jars == null || jars.length == 0) {
+                        throw new LaunchException(null, null, R("LSFatal"),
+                                            R("LCInit"), R("LFatalVerification"), "No jars!");
+                }
+                */
         List initialJars = new ArrayList();
 
         for (int i=0; i < jars.length; i++) {
@@ -374,7 +374,7 @@
                 initialJars.add(jars[i]); // regardless of part
 
             tracker.addResource(jars[i].getLocation(),
-                                jars[i].getVersion(), 
+                                jars[i].getVersion(),
                                 jars[i].isCacheable() ? JNLPRuntime.getDefaultUpdatePolicy() : UpdatePolicy.FORCE
                                );
         }
@@ -382,42 +382,42 @@
         if (strict)
             fillInPartJars(initialJars); // add in each initial part's lazy jars
 
-		if (JNLPRuntime.isVerifying()) {
+                if (JNLPRuntime.isVerifying()) {
 
-			JarSigner js;
-			waitForJars(initialJars); //download the jars first.
+                        JarSigner js;
+                        waitForJars(initialJars); //download the jars first.
 
-			try {
-				js = verifyJars(initialJars);
-			} catch (Exception e) {
-				//we caught an Exception from the JarSigner class.
-				//Note: one of these exceptions could be from not being able
-				//to read the cacerts or trusted.certs files.
-				e.printStackTrace();
-				throw new LaunchException(null, null, R("LSFatal"),
-					R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo"));
-			}
+                        try {
+                                js = verifyJars(initialJars);
+                        } catch (Exception e) {
+                                //we caught an Exception from the JarSigner class.
+                                //Note: one of these exceptions could be from not being able
+                                //to read the cacerts or trusted.certs files.
+                                e.printStackTrace();
+                                throw new LaunchException(null, null, R("LSFatal"),
+                                        R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo"));
+                        }
 
-			//Case when at least one jar has some signing
-			if (js.anyJarsSigned()){
-				signing = true;
+                        //Case when at least one jar has some signing
+                        if (js.anyJarsSigned()){
+                                signing = true;
 
-				//user does not trust this publisher
-				if (!js.getAlreadyTrustPublisher()) {
-				    checkTrustWithUser(js);
-				} else {
-					/**
-					 * If the user trusts this publisher (i.e. the publisher's certificate
-					 * is in the user's trusted.certs file), we do not show any dialogs.
-					 */
-				}
-			} else {
+                                //user does not trust this publisher
+                                if (!js.getAlreadyTrustPublisher()) {
+                                    checkTrustWithUser(js);
+                                } else {
+                                        /**
+                                         * If the user trusts this publisher (i.e. the publisher's certificate
+                                         * is in the user's trusted.certs file), we do not show any dialogs.
+                                         */
+                                }
+                        } else {
 
-				signing = false;
-				//otherwise this jar is simply unsigned -- make sure to ask
-				//for permission on certain actions
-			}
-		}
+                                signing = false;
+                                //otherwise this jar is simply unsigned -- make sure to ask
+                                //for permission on certain actions
+                        }
+                }
 
         activateJars(initialJars);
     }
@@ -427,7 +427,7 @@
             boolean b = SecurityWarningDialog.showCertWarningDialog(
                 SecurityWarningDialog.AccessType.UNVERIFIED, file, js);
             if (!b)
-                throw new LaunchException(null, null, R("LSFatal"), 
+                throw new LaunchException(null, null, R("LSFatal"),
                     R("LCLaunching"), R("LNotVerified"), "");
         } else if (js.getRootInCacerts()) { //root cert is in cacerts
             boolean b = false;
@@ -492,14 +492,14 @@
         // access w/o security dialog once we actually check certificates.
 
         // copy security permissions from SecurityDesc element
-	 if (security != null) {
+         if (security != null) {
             // Security desc. is used only to track security settings for the
             // application. However, an application may comprise of multiple
             // jars, and as such, security must be evaluated on a per jar basis.
-            
+
             // set default perms
             PermissionCollection permissions = security.getSandBoxPermissions();
-            
+
             // If more than default is needed, evaluate based on codesource
             if (security.getSecurityType().equals(SecurityDesc.ALL_PERMISSIONS) ||
                 security.getSecurityType().equals(SecurityDesc.J2EE_PERMISSIONS)) {
@@ -520,15 +520,15 @@
 
         // add in the permissions that the user granted.
         for (int i=0; i < runtimePermissions.size(); i++)
-        	result.add(runtimePermissions.get(i));
+                result.add(runtimePermissions.get(i));
 
         return result;
     }
 
     protected void addPermission(Permission p) {
-    	runtimePermissions.add(p);
+        runtimePermissions.add(p);
     }
-    
+
     /**
      * Adds to the specified list of JARS any other JARs that need
      * to be loaded at the same time as the JARs specified (ie, are
@@ -574,25 +574,25 @@
                         URL location = jar.getLocation(); // non-cacheable, use source location
                         if (localFile != null) {
                             location = localFile.toURL(); // cached file
-                            
-                            // This is really not the best way.. but we need some way for 
-                            // PluginAppletViewer::getCachedImageRef() to check if the image 
-                            // is available locally, and it cannot use getResources() because 
-                            // that prefetches the resource, which confuses MediaTracker.waitForAll() 
-                            // which does a wait(), waiting for notification (presumably 
+
+                            // This is really not the best way.. but we need some way for
+                            // PluginAppletViewer::getCachedImageRef() to check if the image
+                            // is available locally, and it cannot use getResources() because
+                            // that prefetches the resource, which confuses MediaTracker.waitForAll()
+                            // which does a wait(), waiting for notification (presumably
                             // thrown after a resource is fetched). This bug manifests itself
                             // particularly when using The FileManager applet from Webmin.
-                            
+
                             JarFile jarFile = new JarFile(localFile);
                             Enumeration e = jarFile.entries();
                             while (e.hasMoreElements()) {
-                                
+
                                 JarEntry je = (JarEntry) e.nextElement();
-                                
-                                // another jar in my jar? it is more likely than you think  
+
+                                // another jar in my jar? it is more likely than you think
                                 if (je.getName().endsWith(".jar")) {
-                                    // We need to extract that jar so that it can be loaded 
-                                    // (inline loading with "jar:..!/..." path will not work 
+                                    // We need to extract that jar so that it can be loaded
+                                    // (inline loading with "jar:..!/..." path will not work
                                     // with standard classloader methods)
 
                                     String extractedJarLocation = localFile.getParent() + "/" + je.getName();
@@ -637,7 +637,7 @@
 
                         addURL(location);
 
-                        // there is currently no mechanism to cache files per 
+                        // there is currently no mechanism to cache files per
                         // instance.. so only index cached files
                         if (localFile != null) {
                             JarIndex index = JarIndex.getJarIndex(new JarFile(localFile.getAbsolutePath()), null);
@@ -725,11 +725,11 @@
      * calls.
      */
     protected File getNativeDir() {
-        nativeDir = new File(System.getProperty("java.io.tmpdir") 
-                             + File.separator + "netx-native-" 
+        nativeDir = new File(System.getProperty("java.io.tmpdir")
+                             + File.separator + "netx-native-"
                              + (new Random().nextInt() & 0xFFFF));
 
-        if (!nativeDir.mkdirs()) 
+        if (!nativeDir.mkdirs())
             return null;
         else {
             // add this new native directory to the search path
@@ -810,16 +810,16 @@
     }
 
     /**
-	 * Verifies code signing of jars to be used.
-	 *
-	 * @param jars the jars to be verified.
-	 */
-	private JarSigner verifyJars(List<JARDesc> jars) throws Exception {
-	
-		js = new JarSigner();
-		js.verifyJars(jars, tracker);
-		return js;
-	}
+         * Verifies code signing of jars to be used.
+         *
+         * @param jars the jars to be verified.
+         */
+        private JarSigner verifyJars(List<JARDesc> jars) throws Exception {
+
+                js = new JarSigner();
+                js.verifyJars(jars, tracker);
+                return js;
+        }
 
     /**
      * Find the loaded class in this loader or any of its extension loaders.
@@ -872,7 +872,7 @@
 
                 // Not found in external loader either. As a last resort, look in any available indexes
 
-                // Currently this loads jars directly from the site. We cannot cache it because this 
+                // Currently this loads jars directly from the site. We cannot cache it because this
                 // call is initiated from within the applet, which does not have disk read/write permissions
                 for (JarIndex index: jarIndexes) {
                     LinkedList<String> jarList = index.get(name.replace('.', '/'));
@@ -890,7 +890,7 @@
                             available.add(desc);
 
                             tracker.addResource(desc.getLocation(),
-                                    desc.getVersion(), 
+                                    desc.getVersion(),
                                     JNLPRuntime.getDefaultUpdatePolicy()
                             );
 
@@ -914,7 +914,7 @@
 
                         }
 
-                        // If it still fails, let it error out                        
+                        // If it still fails, let it error out
                         result = loadClassExt(name);
                     }
                 }
@@ -998,7 +998,7 @@
 
             if (loaders[i] == this)
                 e = super.findResources(name);
-            else 
+            else
                 e = loaders[i].findResources(name);
 
             while (e.hasMoreElements())
@@ -1007,10 +1007,10 @@
 
         return resources.elements();
     }
-    
+
     /**
      * Returns if the specified resource is available locally from a cached jar
-     * 
+     *
      * @param s The name of the resource
      * @return Whether or not the resource is available locally
      */
@@ -1056,8 +1056,8 @@
 
         fillInPartJars(jars);
 
-		
-		activateJars(jars);
+
+                activateJars(jars);
 
         return this;
     }
@@ -1086,13 +1086,11 @@
         return file.getFileLocation().toString();
     }
 
-	public boolean getSigning() {
-		return signing;
-	}
+        public boolean getSigning() {
+                return signing;
+        }
 
-	protected SecurityDesc getSecurity() {
-		return security;
-	}
+        protected SecurityDesc getSecurity() {
+                return security;
+        }
 }
-
-
--- a/netx/net/sourceforge/jnlp/runtime/JNLPPolicy.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPPolicy.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -28,7 +28,7 @@
  * approved by the user.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.7 $ 
+ * @version $Revision: 1.7 $
  */
 public class JNLPPolicy extends Policy {
 
@@ -59,19 +59,19 @@
         // if we check the SecurityDesc here then keep in mind that
         // code can add properties at runtime to the ResourcesDesc!
         if (JNLPRuntime.getApplication() != null) {
-        	if (JNLPRuntime.getApplication().getClassLoader() instanceof JNLPClassLoader) {
-        		JNLPClassLoader cl = (JNLPClassLoader) JNLPRuntime.getApplication().getClassLoader();
-        		
-        		PermissionCollection clPermissions = cl.getPermissions(source);
-        		
-        		// systempolicy permissions need to be accounted for as well
-        		CodeSource appletCS = new CodeSource(JNLPRuntime.getApplication().getJNLPFile().getSourceLocation(), (java.security.cert.Certificate[]) null);
-        		Enumeration e = systemPolicy.getPermissions(appletCS).elements();
+                if (JNLPRuntime.getApplication().getClassLoader() instanceof JNLPClassLoader) {
+                        JNLPClassLoader cl = (JNLPClassLoader) JNLPRuntime.getApplication().getClassLoader();
+
+                        PermissionCollection clPermissions = cl.getPermissions(source);
+
+                        // systempolicy permissions need to be accounted for as well
+                        CodeSource appletCS = new CodeSource(JNLPRuntime.getApplication().getJNLPFile().getSourceLocation(), (java.security.cert.Certificate[]) null);
+                        Enumeration e = systemPolicy.getPermissions(appletCS).elements();
                 while (e.hasMoreElements())
                     clPermissions.add((Permission) e.nextElement());
 
-        		return clPermissions;
-        	}
+                        return clPermissions;
+                }
         }
 
         // delegate to original Policy object; required to run under WebStart
@@ -95,11 +95,9 @@
         return result;
     }
 
-	public boolean implies(ProtectionDomain domain, Permission permission) {
-		//Include the permissions that may be added during runtime.
-		PermissionCollection pc = getPermissions(domain.getCodeSource());
-		return super.implies(domain, permission) || pc.implies(permission);
-	}
+        public boolean implies(ProtectionDomain domain, Permission permission) {
+                //Include the permissions that may be added during runtime.
+                PermissionCollection pc = getPermissions(domain.getCodeSource());
+                return super.implies(domain, permission) || pc.implies(permission);
+        }
 }
-
-
--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java	Fri Jul 23 10:53:49 2010 +0100
@@ -83,21 +83,21 @@
     /** whether netx is in command-line mode (headless) */
     private static boolean headless = false;
 
-	/** whether we'll be checking for jar signing */
-	private static boolean verify = true;
+        /** whether we'll be checking for jar signing */
+        private static boolean verify = true;
 
     /** whether the runtime uses security */
     private static boolean securityEnabled = true;
 
     /** whether debug mode is on */
     private static boolean debug = false; // package access by Boot
-    
+
     /** mutex to wait on, for initialization */
     public static Object initMutex = new Object();
 
     /** set to true if this is a webstart application. */
-    private static boolean isWebstartApplication; 
-    
+    private static boolean isWebstartApplication;
+
     /** set to false to indicate another JVM should not be spawned, even if necessary */
     private static boolean forksAllowed = true;
 
@@ -134,17 +134,17 @@
 
     /** the java.home directory */
     public static final String JAVA_HOME_DIR = System.getProperty("java.home");
-    
+
     /** the JNLP file to open to display the network-based about window */
     public static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib"
             + File.separator + "about.jnlp";
 
-    
-    
+
+
     /**
      * Returns whether the JNLP runtime environment has been
      * initialized.  Once initialized, some properties such as the
-     * base directory cannot be changed.  Before 
+     * base directory cannot be changed.  Before
      */
     public static boolean isInitialized() {
         return initialized;
@@ -165,9 +165,9 @@
      */
     public static void initialize(boolean isApplication) throws IllegalStateException {
         checkInitialized();
-     
+
         isWebstartApplication = isApplication;
-        
+
         //Setting the system property for javawebstart's version.
         //The version stored will be the same as java's version.
         System.setProperty("javawebstart.version", "javaws-" +
@@ -192,7 +192,7 @@
             throw new IllegalStateException(JNLPRuntime.getMessage("BNoBase"));
 
         ServiceManager.setServiceManagerStub(new XServiceManagerStub()); // ignored if we're running under Web Start
-	
+
         policy = new JNLPPolicy();
         security = new JNLPSecurityManager(); // side effect: create JWindow
 
@@ -238,12 +238,12 @@
         return headless;
     }
 
-	/**
-	 * Returns whether we are verifying code signing.
-	 */
-	public static boolean isVerifying() {
-		return verify;
-	}
+        /**
+         * Returns whether we are verifying code signing.
+         */
+        public static boolean isVerifying() {
+                return verify;
+        }
     /**
      * Sets whether the JNLP client will use any AWT/Swing
      * components.  In headless mode, client features that use the
@@ -258,12 +258,12 @@
     }
 
    /**
-	* Sets whether we will verify code signing.
-	* @throws IllegalStateException if the runtime was previously initialized
-	*/
+        * Sets whether we will verify code signing.
+        * @throws IllegalStateException if the runtime was previously initialized
+        */
     public static void setVerify(boolean enabled) {
-		checkInitialized();
-		verify = enabled;
+                checkInitialized();
+                verify = enabled;
     }
 
     /**
@@ -345,14 +345,14 @@
         checkExitClass();
         security.setExitClass(exitClass);
     }
-    
+
     /**
      * Disables applets from calling exit.
-     * 
+     *
      * Once disabled, exit cannot be re-enabled for the duration of the JVM instance
      */
     public static void disableExit() {
-    	security.disableExit();
+        security.disableExit();
     }
 
     /**
@@ -477,12 +477,12 @@
     public static boolean getForksAllowed() {
         return forksAllowed;
     }
-    
+
     public static void setForksAllowed(boolean value) {
         checkInitialized();
         forksAllowed = value;
     }
-    
+
     /**
      * Throws an exception if called when the runtime is
      * already initialized.
@@ -538,7 +538,7 @@
 
         try {
             windowIcon = new javax.swing.ImageIcon((new sun.misc.Launcher())
-            		.getClassLoader().getResource("net/sourceforge/jnlp/resources/netx-icon.png")).getImage();
+                        .getClassLoader().getResource("net/sourceforge/jnlp/resources/netx-icon.png")).getImage();
         }
         catch (Exception ex) {
             if (JNLPRuntime.isDebug())
@@ -554,11 +554,9 @@
             securityManager.checkPermission(new AllPermission());
         initialArguments = args;
     }
-    
+
     public static List<String> getInitialArguments() {
         return initialArguments;
     }
-    
+
 }
-
-
--- a/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java	Fri Jul 23 10:53:49 2010 +0100
@@ -106,7 +106,7 @@
 
     /** listener installs the app's classloader on the event dispatch thread */
     private ContextUpdater contextListener = new ContextUpdater();
-    
+
     /** Sets whether or not exit is allowed (in the context of the plugin, this is always false) */
     private boolean exitAllowed = true;
 
@@ -133,10 +133,10 @@
         public void windowDeactivated(WindowEvent e) {
             activeApplication = null;
         }
-        
+
         public void windowClosing(WindowEvent e) {
-        	System.err.println("Disposing window");
-        	e.getWindow().dispose();
+                System.err.println("Disposing window");
+                e.getWindow().dispose();
         }
     };
 
@@ -222,21 +222,21 @@
      * Return the current Application, or null.
      */
     protected ApplicationInstance getApplication(Class stack[], int maxDepth) {
-    	if (maxDepth <= 0)
-    		maxDepth = stack.length;
+        if (maxDepth <= 0)
+                maxDepth = stack.length;
 
-    	// this needs to be tightened up
-    	for (int i=0; i < stack.length && i < maxDepth; i++) {
-    		if (stack[i].getClassLoader() instanceof JNLPClassLoader) {
-    			JNLPClassLoader loader = (JNLPClassLoader) stack[i].getClassLoader();
+        // this needs to be tightened up
+        for (int i=0; i < stack.length && i < maxDepth; i++) {
+                if (stack[i].getClassLoader() instanceof JNLPClassLoader) {
+                        JNLPClassLoader loader = (JNLPClassLoader) stack[i].getClassLoader();
 
-    			if (loader != null && loader.getApplication() != null) {
-    				return loader.getApplication();
-    			}
-    		} 
-    	}
+                        if (loader != null && loader.getApplication() != null) {
+                                return loader.getApplication();
+                        }
+                }
+        }
 
-    	return null;
+        return null;
     }
 
     /**
@@ -261,17 +261,17 @@
 
         // Enable this manually -- it'll produce too much output for -verbose
         // otherwise.
-	//	if (true)
-	//  	  System.out.println("Checking permission: " + perm.toString());
+        //      if (true)
+        //        System.out.println("Checking permission: " + perm.toString());
 
-        if (!JNLPRuntime.isWebstartApplication() && 
-	      ("setPolicy".equals(name) || "setSecurityManager".equals(name)))
+        if (!JNLPRuntime.isWebstartApplication() &&
+              ("setPolicy".equals(name) || "setSecurityManager".equals(name)))
             throw new SecurityException(R("RCantReplaceSM"));
 
         try {
             // deny all permissions to stopped applications
-        	// The call to getApplication() below might not work if an 
-        	// application hasn't been fully initialized yet.
+                // The call to getApplication() below might not work if an
+                // application hasn't been fully initialized yet.
 //            if (JNLPRuntime.isDebug()) {
 //                if (!"getClassLoader".equals(name)) {
 //                    ApplicationInstance app = getApplication();
@@ -279,157 +279,157 @@
 //                        throw new SecurityException(R("RDenyStopped"));
 //                }
 //            }
-        	
-			try {
-				super.checkPermission(perm);
-			} catch (SecurityException se) {
 
-				//This section is a special case for dealing with SocketPermissions.
-				if (JNLPRuntime.isDebug())
-					System.err.println("Requesting permission: " + perm.toString());
+                        try {
+                                super.checkPermission(perm);
+                        } catch (SecurityException se) {
+
+                                //This section is a special case for dealing with SocketPermissions.
+                                if (JNLPRuntime.isDebug())
+                                        System.err.println("Requesting permission: " + perm.toString());
 
-				//Change this SocketPermission's action to connect and accept
-				//(and resolve). This is to avoid asking for connect permission 
-				//on every address resolve.
-				Permission tmpPerm = null;
-				if (perm instanceof SocketPermission) {
-					tmpPerm = new SocketPermission(perm.getName(), 
-							SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION);
-					
-					// before proceeding, check if we are trying to connect to same origin
-					ApplicationInstance app = getApplication();
-					JNLPFile file = app.getJNLPFile();
+                                //Change this SocketPermission's action to connect and accept
+                                //(and resolve). This is to avoid asking for connect permission
+                                //on every address resolve.
+                                Permission tmpPerm = null;
+                                if (perm instanceof SocketPermission) {
+                                        tmpPerm = new SocketPermission(perm.getName(),
+                                                        SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION);
+
+                                        // before proceeding, check if we are trying to connect to same origin
+                                        ApplicationInstance app = getApplication();
+                                        JNLPFile file = app.getJNLPFile();
+
+                                        String srcHost =  file.getSourceLocation().getAuthority();
+                                        String destHost = name;
+
+                                        // host = abc.xyz.com or abc.xyz.com:<port>
+                                        if (destHost.indexOf(':') >= 0)
+                                                destHost = destHost.substring(0, destHost.indexOf(':'));
+
+                                        // host = abc.xyz.com
+                                        String[] hostComponents = destHost.split("\\.");
 
-					String srcHost =  file.getSourceLocation().getAuthority();
-					String destHost = name;
-					
-					// host = abc.xyz.com or abc.xyz.com:<port> 
-					if (destHost.indexOf(':') >= 0)
-						destHost = destHost.substring(0, destHost.indexOf(':'));
-					
-					// host = abc.xyz.com
-					String[] hostComponents = destHost.split("\\.");
-					
-					int length = hostComponents.length;
-					if (length >= 2) {
-						
-						// address is in xxx.xxx.xxx format
-						destHost = hostComponents[length -2] + "." + hostComponents[length -1];
-					
-						// host = xyz.com i.e. origin
-						boolean isDestHostName = false;
+                                        int length = hostComponents.length;
+                                        if (length >= 2) {
+
+                                                // address is in xxx.xxx.xxx format
+                                                destHost = hostComponents[length -2] + "." + hostComponents[length -1];
+
+                                                // host = xyz.com i.e. origin
+                                                boolean isDestHostName = false;
+
+                                                // make sure that it is not an ip address
+                                                try {
+                                                        Integer.parseInt(hostComponents[length -1]);
+                                                } catch (NumberFormatException e) {
+                                                        isDestHostName = true;
+                                                }
 
-						// make sure that it is not an ip address
-						try {
-							Integer.parseInt(hostComponents[length -1]);
-						} catch (NumberFormatException e) {
-							isDestHostName = true;
-						}
+                                                if (isDestHostName) {
+                                                        // okay, destination is hostname. Now figure out if it is a subset of origin
+                                                        if (srcHost.endsWith(destHost)) {
+                                                                addPermission(tmpPerm);
+                                                                return;
+                                                        }
+                                                }
+                                        }
 
-						if (isDestHostName) {
-							// okay, destination is hostname. Now figure out if it is a subset of origin
-							if (srcHost.endsWith(destHost)) {
-								addPermission(tmpPerm);
-								return;
-							}
-						}
-					}
+                                } else if (perm instanceof PropertyPermission) {
+
+                                    if (JNLPRuntime.isDebug())
+                                        System.err.println("Requesting property: " + perm.toString());
 
-				} else if (perm instanceof PropertyPermission) {
-
-				    if (JNLPRuntime.isDebug())
-				        System.err.println("Requesting property: " + perm.toString());
+                                    // We go by the rules here:
+                                    // http://java.sun.com/docs/books/tutorial/deployment/doingMoreWithRIA/properties.html
 
-				    // We go by the rules here:
-				    // http://java.sun.com/docs/books/tutorial/deployment/doingMoreWithRIA/properties.html
-
-				    // Since this is security sensitive, take a conservative approach:
-				    // Allow only what is specifically allowed, and deny everything else
+                                    // Since this is security sensitive, take a conservative approach:
+                                    // Allow only what is specifically allowed, and deny everything else
 
-				    // First, allow what everyone is allowed to read
-				    if (perm.getActions().equals("read")) {
-				        if (    perm.getName().equals("java.class.version") ||
-				                perm.getName().equals("java.vendor") ||
-				                perm.getName().equals("java.vendor.url")  ||
-				                perm.getName().equals("java.version") ||
-				                perm.getName().equals("os.name") ||
-				                perm.getName().equals("os.arch") ||
-				                perm.getName().equals("os.version") ||
-				                perm.getName().equals("file.separator") ||
-				                perm.getName().equals("path.separator") ||
-				                perm.getName().equals("line.separator") ||
-				                perm.getName().startsWith("javaplugin.")
-				            ) {
-				            return;
-				        }
-				    }
+                                    // First, allow what everyone is allowed to read
+                                    if (perm.getActions().equals("read")) {
+                                        if (    perm.getName().equals("java.class.version") ||
+                                                perm.getName().equals("java.vendor") ||
+                                                perm.getName().equals("java.vendor.url")  ||
+                                                perm.getName().equals("java.version") ||
+                                                perm.getName().equals("os.name") ||
+                                                perm.getName().equals("os.arch") ||
+                                                perm.getName().equals("os.version") ||
+                                                perm.getName().equals("file.separator") ||
+                                                perm.getName().equals("path.separator") ||
+                                                perm.getName().equals("line.separator") ||
+                                                perm.getName().startsWith("javaplugin.")
+                                            ) {
+                                            return;
+                                        }
+                                    }
 
-				    // Next, allow what only JNLP apps can do
-				    if (getApplication().getJNLPFile().isApplication()) {
-				        if (    perm.getName().equals("awt.useSystemAAFontSettings") ||
-				                perm.getName().equals("http.agent") ||
-				                perm.getName().equals("http.keepAlive") ||
-				                perm.getName().equals("java.awt.syncLWRequests") ||
-				                perm.getName().equals("java.awt.Window.locationByPlatform") ||
-				                perm.getName().equals("javaws.cfg.jauthenticator") ||
-				                perm.getName().equals("javax.swing.defaultlf") ||
-				                perm.getName().equals("sun.awt.noerasebackground") ||
-				                perm.getName().equals("sun.awt.erasebackgroundonresize") ||
-				                perm.getName().equals("sun.java2d.d3d") ||
-				                perm.getName().equals("sun.java2d.dpiaware") ||
-				                perm.getName().equals("sun.java2d.noddraw") ||
-				                perm.getName().equals("sun.java2d.opengl") ||
-				                perm.getName().equals("swing.boldMetal") ||
-				                perm.getName().equals("swing.metalTheme") ||
-				                perm.getName().equals("swing.noxp") ||
-				                perm.getName().equals("swing.useSystemFontSettings")
-				        ) {
-				            return; // JNLP apps can read and write to these
-				        }
-				    }
+                                    // Next, allow what only JNLP apps can do
+                                    if (getApplication().getJNLPFile().isApplication()) {
+                                        if (    perm.getName().equals("awt.useSystemAAFontSettings") ||
+                                                perm.getName().equals("http.agent") ||
+                                                perm.getName().equals("http.keepAlive") ||
+                                                perm.getName().equals("java.awt.syncLWRequests") ||
+                                                perm.getName().equals("java.awt.Window.locationByPlatform") ||
+                                                perm.getName().equals("javaws.cfg.jauthenticator") ||
+                                                perm.getName().equals("javax.swing.defaultlf") ||
+                                                perm.getName().equals("sun.awt.noerasebackground") ||
+                                                perm.getName().equals("sun.awt.erasebackgroundonresize") ||
+                                                perm.getName().equals("sun.java2d.d3d") ||
+                                                perm.getName().equals("sun.java2d.dpiaware") ||
+                                                perm.getName().equals("sun.java2d.noddraw") ||
+                                                perm.getName().equals("sun.java2d.opengl") ||
+                                                perm.getName().equals("swing.boldMetal") ||
+                                                perm.getName().equals("swing.metalTheme") ||
+                                                perm.getName().equals("swing.noxp") ||
+                                                perm.getName().equals("swing.useSystemFontSettings")
+                                        ) {
+                                            return; // JNLP apps can read and write to these
+                                        }
+                                    }
 
-				    // Next, allow access to customizable properties 
-				    if (perm.getName().startsWith("jnlp.") || 
-				        perm.getName().startsWith("javaws.")) {
-				        return;
-				    }
+                                    // Next, allow access to customizable properties
+                                    if (perm.getName().startsWith("jnlp.") ||
+                                        perm.getName().startsWith("javaws.")) {
+                                        return;
+                                    }
 
-				    // Everything else is denied
-				    throw se;
+                                    // Everything else is denied
+                                    throw se;
 
-				} else if (perm instanceof SecurityPermission) {
+                                } else if (perm instanceof SecurityPermission) {
 
-				    // JCE's initialization requires putProviderProperty permission
-				    if (perm.equals(new SecurityPermission("putProviderProperty.SunJCE"))) {
-				        if (inTrustedCallChain("com.sun.crypto.provider.SunJCE", "run")) {
-				            return;
-				        }
-				    }
+                                    // JCE's initialization requires putProviderProperty permission
+                                    if (perm.equals(new SecurityPermission("putProviderProperty.SunJCE"))) {
+                                        if (inTrustedCallChain("com.sun.crypto.provider.SunJCE", "run")) {
+                                            return;
+                                        }
+                                    }
 
-				} else if (perm instanceof RuntimePermission) {
+                                } else if (perm instanceof RuntimePermission) {
 
-				    // KeyGenerator's init method requires internal spec access
-				    if (perm.equals(new SecurityPermission("accessClassInPackage.sun.security.internal.spec"))) {
-				        if (inTrustedCallChain("javax.crypto.KeyGenerator", "init")) {
-				            return;
-				        }
-				    }
+                                    // KeyGenerator's init method requires internal spec access
+                                    if (perm.equals(new SecurityPermission("accessClassInPackage.sun.security.internal.spec"))) {
+                                        if (inTrustedCallChain("javax.crypto.KeyGenerator", "init")) {
+                                            return;
+                                        }
+                                    }
 
-				} else {
-				    tmpPerm = perm;
-				}
+                                } else {
+                                    tmpPerm = perm;
+                                }
 
-				if (tmpPerm != null) {
-				    //askPermission will only prompt the user on SocketPermission 
-				    //meaning we're denying all other SecurityExceptions that may arise.
-				    if (askPermission(tmpPerm)) {
-				        addPermission(tmpPerm);
-				        //return quietly.
-				    } else {
-				        throw se;
-				    }
-				}
-			}
+                                if (tmpPerm != null) {
+                                    //askPermission will only prompt the user on SocketPermission
+                                    //meaning we're denying all other SecurityExceptions that may arise.
+                                    if (askPermission(tmpPerm)) {
+                                        addPermission(tmpPerm);
+                                        //return quietly.
+                                    } else {
+                                        throw se;
+                                    }
+                                }
+                        }
         }
         catch (SecurityException ex) {
             if (JNLPRuntime.isDebug()) {
@@ -439,18 +439,18 @@
         }
     }
 
-    /** 
-     * Returns weather the given class and method are in the current stack, 
+    /**
+     * Returns weather the given class and method are in the current stack,
      * and whether or not everything upto then is trusted
-     * 
+     *
      * @param className The name of the class to look for in the stack
      * @param methodName The name of the method for the given class to look for in the stack
      * @return Weather or not class::method() are in the chain, and everything upto there is trusted
      */
     private boolean inTrustedCallChain(String className, String methodName) {
-        
+
         StackTraceElement[] stack =  Thread.currentThread().getStackTrace();
-        
+
         for (int i=0; i < stack.length; i++) {
 
             // Everything up to the desired class/method must be trusted
@@ -463,49 +463,49 @@
                 return true;
             }
         }
-        
+
         return false;
     }
-    
+
     /**
      * Asks the user whether or not to grant permission.
      * @param perm the permission to be granted
      * @return true if the permission was granted, false otherwise.
      */
-    private boolean askPermission(Permission perm)	{
-    	
-    	ApplicationInstance app = getApplication();
-    	if (app != null && !app.isSigned()) {
-        	if (perm instanceof SocketPermission 
-        			&& ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.NETWORK, perm.getName())) {
-        		return true;
-        	}
-    	}
+    private boolean askPermission(Permission perm)      {
 
-    	return false;
+        ApplicationInstance app = getApplication();
+        if (app != null && !app.isSigned()) {
+                if (perm instanceof SocketPermission
+                                && ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.NETWORK, perm.getName())) {
+                        return true;
+                }
+        }
+
+        return false;
     }
 
     /**
      * Adds a permission to the JNLPClassLoader.
      * @param perm the permission to add to the JNLPClassLoader
      */
-    private void addPermission(Permission perm)	{
-    	if (JNLPRuntime.getApplication().getClassLoader() instanceof JNLPClassLoader) {
+    private void addPermission(Permission perm) {
+        if (JNLPRuntime.getApplication().getClassLoader() instanceof JNLPClassLoader) {
 
-    		JNLPClassLoader cl = (JNLPClassLoader) JNLPRuntime.getApplication().getClassLoader();
-    		cl.addPermission(perm);
-        	if (JNLPRuntime.isDebug()) {
-        		if (cl.getPermissions(null).implies(perm))
-        			System.err.println("Added permission: " + perm.toString());
-        		else
-        			System.err.println("Unable to add permission: " + perm.toString());
-        	}
-    	} else {
-        	if (JNLPRuntime.isDebug())
-        		System.err.println("Unable to add permission: " + perm + ", classloader not JNLP.");
-    	}
+                JNLPClassLoader cl = (JNLPClassLoader) JNLPRuntime.getApplication().getClassLoader();
+                cl.addPermission(perm);
+                if (JNLPRuntime.isDebug()) {
+                        if (cl.getPermissions(null).implies(perm))
+                                System.err.println("Added permission: " + perm.toString());
+                        else
+                                System.err.println("Unable to add permission: " + perm.toString());
+                }
+        } else {
+                if (JNLPRuntime.isDebug())
+                        System.err.println("Unable to add permission: " + perm + ", classloader not JNLP.");
+        }
     }
-    
+
     /**
      * Checks whether the window can be displayed without an applet
      * warning banner, and adds the window to the list of windows to
@@ -514,7 +514,7 @@
     public boolean checkTopLevelWindow(Object window) {
         ApplicationInstance app = getApplication();
 
-        // remember window -> application mapping for focus, close on exit 
+        // remember window -> application mapping for focus, close on exit
         if (app != null && window instanceof Window) {
             Window w = (Window) window;
 
@@ -537,7 +537,7 @@
 
         // todo: set awt.appletWarning to custom message
         // todo: logo on with glass pane on JFrame/JWindow?
-        
+
         return super.checkTopLevelWindow(window);
     }
 
@@ -556,16 +556,16 @@
      */
     public void checkExit(int status) {
 
-    	// applets are not allowed to exit, but the plugin main class (primordial loader) is
+        // applets are not allowed to exit, but the plugin main class (primordial loader) is
         Class stack[] = getClassContext();
         if (!exitAllowed) {
-        	for (int i=0; i < stack.length; i++)
-        		if (stack[i].getClassLoader() != null)
-        			throw new AccessControlException("Applets may not call System.exit()");
+                for (int i=0; i < stack.length; i++)
+                        if (stack[i].getClassLoader() != null)
+                                throw new AccessControlException("Applets may not call System.exit()");
         }
 
-    	super.checkExit(status);
-        
+        super.checkExit(status);
+
         boolean realCall = (stack[1] == Runtime.class);
 
         if (isExitClass(stack)) // either exitClass called or no exitClass set
@@ -596,9 +596,7 @@
     }
 
     protected void disableExit() {
-    	exitAllowed = false;
+        exitAllowed = false;
     }
-    
+
 }
-
-
--- a/netx/net/sourceforge/jnlp/security/AccessWarningPane.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/AccessWarningPane.java	Fri Jul 23 10:53:49 2010 +0100
@@ -59,7 +59,7 @@
 
 /**
  * Provides a panel to show inside a SecurityWarningDialog. These dialogs are
- * used to warn the user when either signed code (with or without signing 
+ * used to warn the user when either signed code (with or without signing
  * issues) is going to be run, or when service permission (file, clipboard,
  * printer, etc) is needed with unsigned code.
  *
@@ -67,134 +67,134 @@
  */
 public class AccessWarningPane extends SecurityDialogPanel {
 
-	JCheckBox alwaysAllow;
-	Object[] extras;
-	
-	public AccessWarningPane(SecurityWarningDialog x, CertVerifier certVerifier) {
-		super(x, certVerifier);
-		addComponents();
-	}
+        JCheckBox alwaysAllow;
+        Object[] extras;
+
+        public AccessWarningPane(SecurityWarningDialog x, CertVerifier certVerifier) {
+                super(x, certVerifier);
+                addComponents();
+        }
 
-	public AccessWarningPane(SecurityWarningDialog x, Object[] extras, CertVerifier certVerifier) {
-		super(x, certVerifier);
-		this.extras = extras;
-		addComponents();
-	}
+        public AccessWarningPane(SecurityWarningDialog x, Object[] extras, CertVerifier certVerifier) {
+                super(x, certVerifier);
+                this.extras = extras;
+                addComponents();
+        }
 
-	/**
-	 * Creates the actual GUI components, and adds it to this panel
-	 */
-	private void addComponents() {
-		SecurityWarningDialog.AccessType type = parent.getType();
-		JNLPFile file = parent.getFile();
+        /**
+         * Creates the actual GUI components, and adds it to this panel
+         */
+        private void addComponents() {
+                SecurityWarningDialog.AccessType type = parent.getType();
+                JNLPFile file = parent.getFile();
 
-		String name = "";
-		String publisher = "";
-		String from = "";
+                String name = "";
+                String publisher = "";
+                String from = "";
 
-		//We don't worry about exceptions when trying to fill in
-		//these strings -- we just want to fill in as many as possible.
-		try {
-			name = file.getInformation().getTitle() != null ? file.getInformation().getTitle() : "<no associated certificate>";
-		} catch (Exception e) {
-		}
+                //We don't worry about exceptions when trying to fill in
+                //these strings -- we just want to fill in as many as possible.
+                try {
+                        name = file.getInformation().getTitle() != null ? file.getInformation().getTitle() : "<no associated certificate>";
+                } catch (Exception e) {
+                }
 
-		try {
-			publisher = file.getInformation().getVendor() != null ? file.getInformation().getVendor() : "<no associated certificate>";
-		} catch (Exception e) {
-		}
+                try {
+                        publisher = file.getInformation().getVendor() != null ? file.getInformation().getVendor() : "<no associated certificate>";
+                } catch (Exception e) {
+                }
 
-		try {
-			from = !file.getInformation().getHomepage().toString().equals("") ? file.getInformation().getHomepage().toString() : file.getSourceLocation().getAuthority();
-		} catch (Exception e) {
-			from = file.getSourceLocation().getAuthority();
-		}
+                try {
+                        from = !file.getInformation().getHomepage().toString().equals("") ? file.getInformation().getHomepage().toString() : file.getSourceLocation().getAuthority();
+                } catch (Exception e) {
+                        from = file.getSourceLocation().getAuthority();
+                }
 
-		//Top label
-		String topLabelText = "";
-		switch (type) {
-			case READ_FILE:
-				topLabelText = R("SFileReadAccess");
-				break;
-			case WRITE_FILE:
-				topLabelText = R("SFileWriteAccess");
-				break;
-			case CREATE_DESTKOP_SHORTCUT:
-			    topLabelText = R("SDesktopShortcut");
-			    break;
-			case CLIPBOARD_READ:
-				topLabelText = R("SClipboardReadAccess");
-				break;
-			case CLIPBOARD_WRITE:
-				topLabelText = R("SClipboardWriteAccess");
-				break;
-			case PRINTER:
-				topLabelText = R("SPrinterAccess");
-				break;
-			case NETWORK:
-				if (extras != null && extras.length >= 0)
-					topLabelText = R("SNetworkAccess", extras[0]);
-				else
-					topLabelText = R("SNetworkAccess", "(address here)");
-		}
-		
-		ImageIcon icon = new ImageIcon((new sun.misc.Launcher()).getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"));
-		JLabel topLabel = new JLabel(htmlWrap(topLabelText), icon, SwingConstants.LEFT);
-		topLabel.setFont(new Font(topLabel.getFont().toString(), 
-			Font.BOLD, 12));
-		JPanel topPanel = new JPanel(new BorderLayout());
-		topPanel.setBackground(Color.WHITE);
-		topPanel.add(topLabel, BorderLayout.CENTER);
-		topPanel.setPreferredSize(new Dimension(400,60));
-		topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                //Top label
+                String topLabelText = "";
+                switch (type) {
+                        case READ_FILE:
+                                topLabelText = R("SFileReadAccess");
+                                break;
+                        case WRITE_FILE:
+                                topLabelText = R("SFileWriteAccess");
+                                break;
+                        case CREATE_DESTKOP_SHORTCUT:
+                            topLabelText = R("SDesktopShortcut");
+                            break;
+                        case CLIPBOARD_READ:
+                                topLabelText = R("SClipboardReadAccess");
+                                break;
+                        case CLIPBOARD_WRITE:
+                                topLabelText = R("SClipboardWriteAccess");
+                                break;
+                        case PRINTER:
+                                topLabelText = R("SPrinterAccess");
+                                break;
+                        case NETWORK:
+                                if (extras != null && extras.length >= 0)
+                                        topLabelText = R("SNetworkAccess", extras[0]);
+                                else
+                                        topLabelText = R("SNetworkAccess", "(address here)");
+                }
+
+                ImageIcon icon = new ImageIcon((new sun.misc.Launcher()).getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"));
+                JLabel topLabel = new JLabel(htmlWrap(topLabelText), icon, SwingConstants.LEFT);
+                topLabel.setFont(new Font(topLabel.getFont().toString(),
+                        Font.BOLD, 12));
+                JPanel topPanel = new JPanel(new BorderLayout());
+                topPanel.setBackground(Color.WHITE);
+                topPanel.add(topLabel, BorderLayout.CENTER);
+                topPanel.setPreferredSize(new Dimension(400,60));
+                topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
 
-		//application info
-		JLabel nameLabel = new JLabel("Name:   " + name);
-		nameLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
-		JLabel publisherLabel = new JLabel("Publisher: " + publisher);
-		publisherLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
-		JLabel fromLabel = new JLabel("From:   " + from);
-		fromLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+                //application info
+                JLabel nameLabel = new JLabel("Name:   " + name);
+                nameLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+                JLabel publisherLabel = new JLabel("Publisher: " + publisher);
+                publisherLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+                JLabel fromLabel = new JLabel("From:   " + from);
+                fromLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
 
-		alwaysAllow = new JCheckBox("Always allow this action");
-		alwaysAllow.setEnabled(false);
+                alwaysAllow = new JCheckBox("Always allow this action");
+                alwaysAllow.setEnabled(false);
 
-		JPanel infoPanel = new JPanel(new GridLayout(4,1));
-		infoPanel.add(nameLabel);
-		infoPanel.add(publisherLabel);
-		infoPanel.add(fromLabel);
-		infoPanel.add(alwaysAllow);
-		infoPanel.setBorder(BorderFactory.createEmptyBorder(25,25,25,25));
+                JPanel infoPanel = new JPanel(new GridLayout(4,1));
+                infoPanel.add(nameLabel);
+                infoPanel.add(publisherLabel);
+                infoPanel.add(fromLabel);
+                infoPanel.add(alwaysAllow);
+                infoPanel.setBorder(BorderFactory.createEmptyBorder(25,25,25,25));
 
-		//run and cancel buttons
-		JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
-		
-		JButton run = new JButton("Allow");
-		JButton cancel = new JButton("Cancel");
-		run.addActionListener(createSetValueListener(parent,0));
-		run.addActionListener(new CheckBoxListener());
-		cancel.addActionListener(createSetValueListener(parent, 1));
-		initialFocusComponent = cancel;
-		buttonPanel.add(run);
-		buttonPanel.add(cancel);
-		buttonPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                //run and cancel buttons
+                JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
 
-		//all of the above
-		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-		add(topPanel);
-		add(infoPanel);
-		add(buttonPanel);
+                JButton run = new JButton("Allow");
+                JButton cancel = new JButton("Cancel");
+                run.addActionListener(createSetValueListener(parent,0));
+                run.addActionListener(new CheckBoxListener());
+                cancel.addActionListener(createSetValueListener(parent, 1));
+                initialFocusComponent = cancel;
+                buttonPanel.add(run);
+                buttonPanel.add(cancel);
+                buttonPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
 
-	}
+                //all of the above
+                setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+                add(topPanel);
+                add(infoPanel);
+                add(buttonPanel);
+
+        }
 
 
-	private class CheckBoxListener implements ActionListener {
-		public void actionPerformed(ActionEvent e) {
-			if (alwaysAllow != null && alwaysAllow.isSelected()) {
-				// TODO: somehow tell the ApplicationInstance
-				// to stop asking for permission
-			}
-		}
-	}
+        private class CheckBoxListener implements ActionListener {
+                public void actionPerformed(ActionEvent e) {
+                        if (alwaysAllow != null && alwaysAllow.isSelected()) {
+                                // TODO: somehow tell the ApplicationInstance
+                                // to stop asking for permission
+                        }
+                }
+        }
 
 }
--- a/netx/net/sourceforge/jnlp/security/AppletWarningPane.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/AppletWarningPane.java	Fri Jul 23 10:53:49 2010 +0100
@@ -52,65 +52,64 @@
 
 public class AppletWarningPane extends SecurityDialogPanel {
 
-	public AppletWarningPane(SecurityWarningDialog x, CertVerifier certVerifier) {
-		super(x, certVerifier);
-		addComponents();
-	}
+        public AppletWarningPane(SecurityWarningDialog x, CertVerifier certVerifier) {
+                super(x, certVerifier);
+                addComponents();
+        }
 
-	protected void addComponents() {
+        protected void addComponents() {
 
-		//Top label
-		String topLabelText = "While support for verifying signed code" +
-				" has not been implemented yet, some applets will not run " +
-				"properly under the default restricted security level.";
-		String bottomLabelText = "Do you want to run this applet under the " +
-				"restricted security level? (clicking No will run this applet " +
-				"without any security checking, and should only be done if you " +
-				"trust the applet!)";
-		
-		JLabel topLabel = new JLabel(htmlWrap(topLabelText));
-		topLabel.setFont(new Font(topLabel.getFont().toString(), 
-			Font.BOLD, 12));
-		JPanel topPanel = new JPanel(new BorderLayout());
-		topPanel.setBackground(Color.WHITE);
-		topPanel.add(topLabel, BorderLayout.CENTER);
-		topPanel.setPreferredSize(new Dimension(400,80));
-		topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                //Top label
+                String topLabelText = "While support for verifying signed code" +
+                                " has not been implemented yet, some applets will not run " +
+                                "properly under the default restricted security level.";
+                String bottomLabelText = "Do you want to run this applet under the " +
+                                "restricted security level? (clicking No will run this applet " +
+                                "without any security checking, and should only be done if you " +
+                                "trust the applet!)";
+
+                JLabel topLabel = new JLabel(htmlWrap(topLabelText));
+                topLabel.setFont(new Font(topLabel.getFont().toString(),
+                        Font.BOLD, 12));
+                JPanel topPanel = new JPanel(new BorderLayout());
+                topPanel.setBackground(Color.WHITE);
+                topPanel.add(topLabel, BorderLayout.CENTER);
+                topPanel.setPreferredSize(new Dimension(400,80));
+                topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
 
-		JLabel bottomLabel = new JLabel(htmlWrap(bottomLabelText));
-		JPanel infoPanel = new JPanel(new BorderLayout());
-		infoPanel.add(bottomLabel, BorderLayout.CENTER);
-		infoPanel.setPreferredSize(new Dimension(400,80));
-		infoPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
-		
-		//run and cancel buttons
-		JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
-		
-		JButton yes = new JButton("Yes");
-		JButton no = new JButton("No");
-		JButton cancel = new JButton("Cancel");
-		int buttonWidth = cancel.getMinimumSize().width;
-		int buttonHeight = cancel.getMinimumSize().height;
-		Dimension d = new Dimension(buttonWidth, buttonHeight);
-		yes.setPreferredSize(d);
-		no.setPreferredSize(d);
-		cancel.setPreferredSize(d);
-		yes.addActionListener(createSetValueListener(parent, 0));
-		no.addActionListener(createSetValueListener(parent, 1));
-		cancel.addActionListener(createSetValueListener(parent, 2));
-		initialFocusComponent = cancel;
-		buttonPanel.add(yes);
-		buttonPanel.add(no);
-		buttonPanel.add(cancel);
-		buttonPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                JLabel bottomLabel = new JLabel(htmlWrap(bottomLabelText));
+                JPanel infoPanel = new JPanel(new BorderLayout());
+                infoPanel.add(bottomLabel, BorderLayout.CENTER);
+                infoPanel.setPreferredSize(new Dimension(400,80));
+                infoPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+
+                //run and cancel buttons
+                JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
 
-		//all of the above
-		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-		add(topPanel);
-		add(infoPanel);
-		add(buttonPanel);
+                JButton yes = new JButton("Yes");
+                JButton no = new JButton("No");
+                JButton cancel = new JButton("Cancel");
+                int buttonWidth = cancel.getMinimumSize().width;
+                int buttonHeight = cancel.getMinimumSize().height;
+                Dimension d = new Dimension(buttonWidth, buttonHeight);
+                yes.setPreferredSize(d);
+                no.setPreferredSize(d);
+                cancel.setPreferredSize(d);
+                yes.addActionListener(createSetValueListener(parent, 0));
+                no.addActionListener(createSetValueListener(parent, 1));
+                cancel.addActionListener(createSetValueListener(parent, 2));
+                initialFocusComponent = cancel;
+                buttonPanel.add(yes);
+                buttonPanel.add(no);
+                buttonPanel.add(cancel);
+                buttonPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
 
-	}
+                //all of the above
+                setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+                add(topPanel);
+                add(infoPanel);
+                add(buttonPanel);
+
+        }
 
 }
-
--- a/netx/net/sourceforge/jnlp/security/CertVerifier.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/CertVerifier.java	Fri Jul 23 10:53:49 2010 +0100
@@ -42,7 +42,7 @@
 import java.util.ArrayList;
 
 /**
- * An interface that provides various details about a certificate 
+ * An interface that provides various details about a certificate
  */
 
 public interface CertVerifier {
@@ -78,7 +78,7 @@
      */
     public ArrayList<CertPath> getCerts();
 
-    /** 
+    /**
      * Returns the application's publisher's certificate.
      */
     public abstract Certificate getPublisher();
--- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java	Fri Jul 23 10:53:49 2010 +0100
@@ -64,7 +64,7 @@
 
 /**
  * Provides the panel for using inside a SecurityWarningDialog. These dialogs are
- * used to warn the user when either signed code (with or without signing 
+ * used to warn the user when either signed code (with or without signing
  * issues) is going to be run, or when service permission (file, clipboard,
  * printer, etc) is needed with unsigned code.
  *
@@ -72,183 +72,183 @@
  */
 public class CertWarningPane extends SecurityDialogPanel {
 
-	JCheckBox alwaysTrust;
-	CertVerifier certVerifier;
+        JCheckBox alwaysTrust;
+        CertVerifier certVerifier;
 
-	public CertWarningPane(SecurityWarningDialog x, CertVerifier certVerifier) {
-		super(x, certVerifier);
-		this.certVerifier = certVerifier;
-		addComponents();
-	}
+        public CertWarningPane(SecurityWarningDialog x, CertVerifier certVerifier) {
+                super(x, certVerifier);
+                this.certVerifier = certVerifier;
+                addComponents();
+        }
 
-	/**
-	 * Creates the actual GUI components, and adds it to this panel
-	 */
-	private void addComponents() {
-		SecurityWarningDialog.AccessType type = parent.getType();
-		JNLPFile file = parent.getFile();
-		Certificate c = parent.getJarSigner().getPublisher();
-		
-		String name = "";
-		String publisher = "";
-		String from = "";
+        /**
+         * Creates the actual GUI components, and adds it to this panel
+         */
+        private void addComponents() {
+                SecurityWarningDialog.AccessType type = parent.getType();
+                JNLPFile file = parent.getFile();
+                Certificate c = parent.getJarSigner().getPublisher();
+
+                String name = "";
+                String publisher = "";
+                String from = "";
 
-		//We don't worry about exceptions when trying to fill in
-		//these strings -- we just want to fill in as many as possible.
-		try {
-			if ((certVerifier instanceof HttpsCertVerifier) && 
-			     (c instanceof X509Certificate))
-			   name = SecurityUtil.getCN(((X509Certificate)c)
+                //We don't worry about exceptions when trying to fill in
+                //these strings -- we just want to fill in as many as possible.
+                try {
+                        if ((certVerifier instanceof HttpsCertVerifier) &&
+                             (c instanceof X509Certificate))
+                           name = SecurityUtil.getCN(((X509Certificate)c)
                                         .getSubjectX500Principal().getName());
-			else if (file instanceof PluginBridge)
-				name = file.getTitle();
-			else
-				name = file.getInformation().getTitle();
-		} catch (Exception e) {
-		}
+                        else if (file instanceof PluginBridge)
+                                name = file.getTitle();
+                        else
+                                name = file.getInformation().getTitle();
+                } catch (Exception e) {
+                }
 
-		try {
-			if (c instanceof X509Certificate) {
-				publisher = SecurityUtil.getCN(((X509Certificate)c)
-					.getSubjectX500Principal().getName());
-			}
-		} catch (Exception e) {
-		}
+                try {
+                        if (c instanceof X509Certificate) {
+                                publisher = SecurityUtil.getCN(((X509Certificate)c)
+                                        .getSubjectX500Principal().getName());
+                        }
+                } catch (Exception e) {
+                }
 
-		try {
-			if (file instanceof PluginBridge)
-				from = file.getCodeBase().getHost();
-			else
-				from = file.getInformation().getHomepage().toString();
-		} catch (Exception e) {
-		}
+                try {
+                        if (file instanceof PluginBridge)
+                                from = file.getCodeBase().getHost();
+                        else
+                                from = file.getInformation().getHomepage().toString();
+                } catch (Exception e) {
+                }
 
-		//Top label
-		String topLabelText = "";
-		String propertyName = "";
-		if (certVerifier instanceof HttpsCertVerifier)
-		{
-		  topLabelText = "The website's certificate cannot be verified. " +
-				 "Do you want to continue?";
-		  propertyName = "OptionPane.warningIcon";
-		}
-		else
-		  switch (type) {
-		  case VERIFIED:
-		 	topLabelText = R("SSigVerified");
-			propertyName = "OptionPane.informationIcon";
-			break;
-		  case UNVERIFIED:
-			topLabelText = R("SSigUnverified");
-			propertyName = "OptionPane.warningIcon";
-			break;
-	  	  case SIGNING_ERROR:
-			topLabelText = R("SSignatureError");
-			propertyName = "OptionPane.warningIcon";
-			break;
-		  }
-		ImageIcon icon = new ImageIcon((new sun.misc.Launcher())
-				.getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"));
-		JLabel topLabel = new JLabel(htmlWrap(topLabelText), icon, SwingConstants.LEFT);
-		topLabel.setFont(new Font(topLabel.getFont().toString(), 
-				Font.BOLD, 12));
-		JPanel topPanel = new JPanel(new BorderLayout());
-		topPanel.setBackground(Color.WHITE);
-		topPanel.add(topLabel, BorderLayout.CENTER);
-		topPanel.setPreferredSize(new Dimension(400,60));
-		topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                //Top label
+                String topLabelText = "";
+                String propertyName = "";
+                if (certVerifier instanceof HttpsCertVerifier)
+                {
+                  topLabelText = "The website's certificate cannot be verified. " +
+                                 "Do you want to continue?";
+                  propertyName = "OptionPane.warningIcon";
+                }
+                else
+                  switch (type) {
+                  case VERIFIED:
+                        topLabelText = R("SSigVerified");
+                        propertyName = "OptionPane.informationIcon";
+                        break;
+                  case UNVERIFIED:
+                        topLabelText = R("SSigUnverified");
+                        propertyName = "OptionPane.warningIcon";
+                        break;
+                  case SIGNING_ERROR:
+                        topLabelText = R("SSignatureError");
+                        propertyName = "OptionPane.warningIcon";
+                        break;
+                  }
+                ImageIcon icon = new ImageIcon((new sun.misc.Launcher())
+                                .getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"));
+                JLabel topLabel = new JLabel(htmlWrap(topLabelText), icon, SwingConstants.LEFT);
+                topLabel.setFont(new Font(topLabel.getFont().toString(),
+                                Font.BOLD, 12));
+                JPanel topPanel = new JPanel(new BorderLayout());
+                topPanel.setBackground(Color.WHITE);
+                topPanel.add(topLabel, BorderLayout.CENTER);
+                topPanel.setPreferredSize(new Dimension(400,60));
+                topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
 
-		//application info
-		JLabel nameLabel = new JLabel("Name:   " + name);
-		nameLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
-		JLabel publisherLabel = new JLabel("Publisher: " + publisher);
-		publisherLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
-		JLabel fromLabel = new JLabel("From:   " + from);
-		fromLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+                //application info
+                JLabel nameLabel = new JLabel("Name:   " + name);
+                nameLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+                JLabel publisherLabel = new JLabel("Publisher: " + publisher);
+                publisherLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+                JLabel fromLabel = new JLabel("From:   " + from);
+                fromLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
 
-		alwaysTrust = new JCheckBox(
-		"Always trust content from this publisher");
-		alwaysTrust.setEnabled(true);
+                alwaysTrust = new JCheckBox(
+                "Always trust content from this publisher");
+                alwaysTrust.setEnabled(true);
 
-		JPanel infoPanel = new JPanel(new GridLayout(4,1));
-		infoPanel.add(nameLabel);
-		infoPanel.add(publisherLabel);
+                JPanel infoPanel = new JPanel(new GridLayout(4,1));
+                infoPanel.add(nameLabel);
+                infoPanel.add(publisherLabel);
 
-		if (!(certVerifier instanceof HttpsCertVerifier))
-		  infoPanel.add(fromLabel);
+                if (!(certVerifier instanceof HttpsCertVerifier))
+                  infoPanel.add(fromLabel);
 
-		infoPanel.add(alwaysTrust);
-		infoPanel.setBorder(BorderFactory.createEmptyBorder(25,25,25,25));
+                infoPanel.add(alwaysTrust);
+                infoPanel.setBorder(BorderFactory.createEmptyBorder(25,25,25,25));
 
-		//run and cancel buttons
-		JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
-		JButton run = new JButton("Run");
-		JButton cancel = new JButton("Cancel");
-		int buttonWidth = Math.max(run.getMinimumSize().width, 
-			cancel.getMinimumSize().width);
-		int buttonHeight = run.getMinimumSize().height;
-		Dimension d = new Dimension(buttonWidth, buttonHeight);
-		run.setPreferredSize(d);
-		cancel.setPreferredSize(d);
-		run.addActionListener(createSetValueListener(parent, 0));
-		run.addActionListener(new CheckBoxListener());
-		cancel.addActionListener(createSetValueListener(parent, 1));
-		initialFocusComponent = cancel;
-		buttonPanel.add(run);
-		buttonPanel.add(cancel);
-		buttonPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                //run and cancel buttons
+                JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+                JButton run = new JButton("Run");
+                JButton cancel = new JButton("Cancel");
+                int buttonWidth = Math.max(run.getMinimumSize().width,
+                        cancel.getMinimumSize().width);
+                int buttonHeight = run.getMinimumSize().height;
+                Dimension d = new Dimension(buttonWidth, buttonHeight);
+                run.setPreferredSize(d);
+                cancel.setPreferredSize(d);
+                run.addActionListener(createSetValueListener(parent, 0));
+                run.addActionListener(new CheckBoxListener());
+                cancel.addActionListener(createSetValueListener(parent, 1));
+                initialFocusComponent = cancel;
+                buttonPanel.add(run);
+                buttonPanel.add(cancel);
+                buttonPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
 
-		//all of the above
-		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-		add(topPanel);
-		add(infoPanel);
-		add(buttonPanel);
+                //all of the above
+                setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+                add(topPanel);
+                add(infoPanel);
+                add(buttonPanel);
 
-		JLabel bottomLabel;
-		JButton moreInfo = new JButton("More information...");
-		moreInfo.addActionListener(new MoreInfoButtonListener());
-		
-		if (parent.getJarSigner().getRootInCacerts())
-			bottomLabel = new JLabel(htmlWrap(R("STrustedSource")));
-		else
-			bottomLabel = new JLabel(htmlWrap(R("SUntrustedSource")));
+                JLabel bottomLabel;
+                JButton moreInfo = new JButton("More information...");
+                moreInfo.addActionListener(new MoreInfoButtonListener());
+
+                if (parent.getJarSigner().getRootInCacerts())
+                        bottomLabel = new JLabel(htmlWrap(R("STrustedSource")));
+                else
+                        bottomLabel = new JLabel(htmlWrap(R("SUntrustedSource")));
 
-		JPanel bottomPanel = new JPanel();
-		bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.X_AXIS));
-		bottomPanel.add(bottomLabel);
-		bottomPanel.add(moreInfo);
-		bottomPanel.setPreferredSize(new Dimension(500,100));
-		bottomPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
-		add(bottomPanel);
+                JPanel bottomPanel = new JPanel();
+                bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.X_AXIS));
+                bottomPanel.add(bottomLabel);
+                bottomPanel.add(moreInfo);
+                bottomPanel.setPreferredSize(new Dimension(500,100));
+                bottomPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                add(bottomPanel);
 
-	}
+        }
 
-	private class MoreInfoButtonListener implements ActionListener {
-		public void actionPerformed(ActionEvent e) {
-			SecurityWarningDialog.showMoreInfoDialog(parent.getJarSigner(), 
-				parent);
-		}
-	}
+        private class MoreInfoButtonListener implements ActionListener {
+                public void actionPerformed(ActionEvent e) {
+                        SecurityWarningDialog.showMoreInfoDialog(parent.getJarSigner(),
+                                parent);
+                }
+        }
 
-	/**
-	 * Updates the user's KeyStore of trusted Certificates.
-	 */
-	private class CheckBoxListener implements ActionListener {
-		public void actionPerformed(ActionEvent e) {
-			if (alwaysTrust != null && alwaysTrust.isSelected()) {
-				try {
-					KeyTool kt = new KeyTool();
-					Certificate c = parent.getJarSigner().getPublisher();
-					kt.importCert(c);
-					if (JNLPRuntime.isDebug()) {
-					    System.out.println("certificate is now permanently trusted");
-					}
-				} catch (Exception ex) {
-					//TODO: Let NetX show a dialog here notifying user 
-					//about being unable to add cert to keystore
-				}
-			}
-		}
-	}
+        /**
+         * Updates the user's KeyStore of trusted Certificates.
+         */
+        private class CheckBoxListener implements ActionListener {
+                public void actionPerformed(ActionEvent e) {
+                        if (alwaysTrust != null && alwaysTrust.isSelected()) {
+                                try {
+                                        KeyTool kt = new KeyTool();
+                                        Certificate c = parent.getJarSigner().getPublisher();
+                                        kt.importCert(c);
+                                        if (JNLPRuntime.isDebug()) {
+                                            System.out.println("certificate is now permanently trusted");
+                                        }
+                                } catch (Exception ex) {
+                                        //TODO: Let NetX show a dialog here notifying user
+                                        //about being unable to add cert to keystore
+                                }
+                        }
+                }
+        }
 
 }
--- a/netx/net/sourceforge/jnlp/security/CertsInfoPane.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/CertsInfoPane.java	Fri Jul 23 10:53:49 2010 +0100
@@ -64,79 +64,79 @@
  * @author <a href="mailto:jsumali@redhat.com">Joshua Sumali</a>
  */
 public class CertsInfoPane extends SecurityDialogPanel {
-	
-	private ArrayList<CertPath> certs;
+
+        private ArrayList<CertPath> certs;
     private JList list;
-	protected JTree tree;
+        protected JTree tree;
     private JTable table;
     private JTextArea output;
     private ListSelectionModel listSelectionModel;
     private ListSelectionModel tableSelectionModel;
     protected String[] certNames;
     private String[] columnNames = { "Field", "Value" };
-	protected ArrayList<String[][]> certsData;
+        protected ArrayList<String[][]> certsData;
 
-	public CertsInfoPane(SecurityWarningDialog x, CertVerifier certVerifier) {
-		super(x, certVerifier);
-		addComponents();
-	}
+        public CertsInfoPane(SecurityWarningDialog x, CertVerifier certVerifier) {
+                super(x, certVerifier);
+                addComponents();
+        }
 
-	/**
-	 * Builds the JTree out of CertPaths.
-	 */
-	void buildTree() {
-		certs = parent.getJarSigner().getCerts();
-		//for now, we're only going to display the first signer, even though
-		//jars can be signed by multiple people.
-		CertPath firstPath = certs.get(0);
-		X509Certificate firstCert = 
-			((X509Certificate)firstPath.getCertificates().get(0));
-		String subjectString = 
-			SecurityUtil.getCN(firstCert.getSubjectX500Principal().getName());
-		String issuerString = 
-			SecurityUtil.getCN(firstCert.getIssuerX500Principal().getName());
+        /**
+         * Builds the JTree out of CertPaths.
+         */
+        void buildTree() {
+                certs = parent.getJarSigner().getCerts();
+                //for now, we're only going to display the first signer, even though
+                //jars can be signed by multiple people.
+                CertPath firstPath = certs.get(0);
+                X509Certificate firstCert =
+                        ((X509Certificate)firstPath.getCertificates().get(0));
+                String subjectString =
+                        SecurityUtil.getCN(firstCert.getSubjectX500Principal().getName());
+                String issuerString =
+                        SecurityUtil.getCN(firstCert.getIssuerX500Principal().getName());
 
-		DefaultMutableTreeNode top =
-			new DefaultMutableTreeNode(subjectString 
-				+ " (" + issuerString + ")");
+                DefaultMutableTreeNode top =
+                        new DefaultMutableTreeNode(subjectString
+                                + " (" + issuerString + ")");
 
-		//not self signed
-		if (!firstCert.getSubjectDN().equals(firstCert.getIssuerDN()) 
-			&& (firstPath.getCertificates().size() > 1)) {
-			X509Certificate secondCert = 
-				((X509Certificate)firstPath.getCertificates().get(1));
-			subjectString = 
-				SecurityUtil.getCN(secondCert.getSubjectX500Principal().getName());
-			issuerString = 
-				SecurityUtil.getCN(secondCert.getIssuerX500Principal().getName());
-			top.add(new DefaultMutableTreeNode(subjectString 
-				+ " (" + issuerString + ")"));
-		}
+                //not self signed
+                if (!firstCert.getSubjectDN().equals(firstCert.getIssuerDN())
+                        && (firstPath.getCertificates().size() > 1)) {
+                        X509Certificate secondCert =
+                                ((X509Certificate)firstPath.getCertificates().get(1));
+                        subjectString =
+                                SecurityUtil.getCN(secondCert.getSubjectX500Principal().getName());
+                        issuerString =
+                                SecurityUtil.getCN(secondCert.getIssuerX500Principal().getName());
+                        top.add(new DefaultMutableTreeNode(subjectString
+                                + " (" + issuerString + ")"));
+                }
 
-		tree = new JTree(top);
-		tree.getSelectionModel().setSelectionMode
-		                (TreeSelectionModel.SINGLE_TREE_SELECTION);
-		tree.addTreeSelectionListener(new TreeSelectionHandler());
-	}
+                tree = new JTree(top);
+                tree.getSelectionModel().setSelectionMode
+                                (TreeSelectionModel.SINGLE_TREE_SELECTION);
+                tree.addTreeSelectionListener(new TreeSelectionHandler());
+        }
 
-	/**
-	 * Fills in certsNames, certsData with data from the certificates.
-	 */
-	protected void populateTable() {
-		certNames = new String[certs.get(0).getCertificates().size()];
-		certsData = new ArrayList<String[][]>();
+        /**
+         * Fills in certsNames, certsData with data from the certificates.
+         */
+        protected void populateTable() {
+                certNames = new String[certs.get(0).getCertificates().size()];
+                certsData = new ArrayList<String[][]>();
 
         for (int i = 0; i < certs.get(0).getCertificates().size(); i++) {
 
             X509Certificate c = (X509Certificate) certs.get(0).getCertificates().get(i);
             certsData.add(parseCert(c));
             certNames[i] = SecurityUtil.getCN(c.getSubjectX500Principal().getName())
-				+ " (" + SecurityUtil.getCN(c.getIssuerX500Principal().getName()) + ")";
+                                + " (" + SecurityUtil.getCN(c.getIssuerX500Principal().getName()) + ")";
+        }
         }
-	}
-	
-	protected String[][] parseCert(X509Certificate c) {
-		
+
+        protected String[][] parseCert(X509Certificate c) {
+
         String version = ""+c.getVersion();
         String serialNumber = c.getSerialNumber().toString();
         String signatureAlg = c.getSigAlgName();
@@ -149,19 +149,19 @@
         HexDumpEncoder encoder = new HexDumpEncoder();
         String signature = encoder.encodeBuffer(c.getSignature());
 
-		String md5Hash = "";
-		String sha1Hash = "";
-		try {
-			MessageDigest digest = MessageDigest.getInstance("MD5");
-			digest.update(c.getEncoded());
-			md5Hash = makeFingerprint(digest.digest());
+                String md5Hash = "";
+                String sha1Hash = "";
+                try {
+                        MessageDigest digest = MessageDigest.getInstance("MD5");
+                        digest.update(c.getEncoded());
+                        md5Hash = makeFingerprint(digest.digest());
 
-			digest = MessageDigest.getInstance("SHA-1");
-			digest.update(c.getEncoded());
-			sha1Hash = makeFingerprint(digest.digest());
-		} catch (Exception e) {
-			//fail quietly
-		}
+                        digest = MessageDigest.getInstance("SHA-1");
+                        digest.update(c.getEncoded());
+                        sha1Hash = makeFingerprint(digest.digest());
+                } catch (Exception e) {
+                        //fail quietly
+                }
 
         String[][] cert = { {"Version", version},
                             {"Serial", serialNumber},
@@ -170,38 +170,38 @@
                             {"Validity", validity},
                             {"Subject", subject},
                             {"Signature", signature},
-							{"MD5 Fingerprint", md5Hash},
-							{"SHA1 Fingerprint", sha1Hash}
-							};
+                                                        {"MD5 Fingerprint", md5Hash},
+                                                        {"SHA1 Fingerprint", sha1Hash}
+                                                        };
         return cert;
-	}
-	
-	/**
-	 * Constructs the GUI components of this panel
-	 */
-	protected void addComponents() {
-		buildTree();
-		populateTable();
-		/**
-		//List of Certs
+        }
+
+        /**
+         * Constructs the GUI components of this panel
+         */
+        protected void addComponents() {
+                buildTree();
+                populateTable();
+                /**
+                //List of Certs
         list = new JList(certNames);
-		list.setSelectedIndex(0); //assuming there's at least 1 cert
+                list.setSelectedIndex(0); //assuming there's at least 1 cert
         listSelectionModel = list.getSelectionModel();
         listSelectionModel.addListSelectionListener(new ListSelectionHandler());
         JScrollPane listPane = new JScrollPane(list);
-		*/
-		JScrollPane listPane = new JScrollPane(tree);
+                */
+                JScrollPane listPane = new JScrollPane(tree);
 
         //Table of field-value pairs
         DefaultTableModel tableModel = new DefaultTableModel(certsData.get(0),
                                                             columnNames);
         table = new JTable(tableModel);
-		table.getTableHeader().setReorderingAllowed(false);
+                table.getTableHeader().setReorderingAllowed(false);
         tableSelectionModel = table.getSelectionModel();
         tableSelectionModel.addListSelectionListener(new TableSelectionHandler());
         table.setFillsViewportHeight(true);
         JScrollPane tablePane = new JScrollPane(table);
-		tablePane.setPreferredSize(new Dimension(500,200));
+                tablePane.setPreferredSize(new Dimension(500,200));
 
         //Text area to display the larger values
         output = new JTextArea();
@@ -209,84 +209,84 @@
         JScrollPane outputPane = new JScrollPane(output,
             ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
             ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
-		outputPane.setPreferredSize(new Dimension(500,200));
+                outputPane.setPreferredSize(new Dimension(500,200));
 
-		//split pane of the field-value pairs and textbox
-		JSplitPane rightSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
-			tablePane, outputPane);
-		rightSplitPane.setDividerLocation(0.50);
-		rightSplitPane.setResizeWeight(0.50);
+                //split pane of the field-value pairs and textbox
+                JSplitPane rightSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
+                        tablePane, outputPane);
+                rightSplitPane.setDividerLocation(0.50);
+                rightSplitPane.setResizeWeight(0.50);
 
-		JSplitPane mainPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
-			listPane, rightSplitPane);
-		mainPane.setDividerLocation(0.30);
-		mainPane.setResizeWeight(0.30);
+                JSplitPane mainPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
+                        listPane, rightSplitPane);
+                mainPane.setDividerLocation(0.30);
+                mainPane.setResizeWeight(0.30);
 
-		JPanel buttonPane = new JPanel(new BorderLayout());
-		JButton close = new JButton("Close");
-		JButton copyToClipboard = new JButton("Copy to Clipboard");
-		close.addActionListener(createSetValueListener(parent, 0));
-		copyToClipboard.addActionListener(new CopyToClipboardHandler());
-		buttonPane.add(close, BorderLayout.EAST);
-		buttonPane.add(copyToClipboard, BorderLayout.WEST);
-		buttonPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+                JPanel buttonPane = new JPanel(new BorderLayout());
+                JButton close = new JButton("Close");
+                JButton copyToClipboard = new JButton("Copy to Clipboard");
+                close.addActionListener(createSetValueListener(parent, 0));
+                copyToClipboard.addActionListener(new CopyToClipboardHandler());
+                buttonPane.add(close, BorderLayout.EAST);
+                buttonPane.add(copyToClipboard, BorderLayout.WEST);
+                buttonPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
 
-		add(mainPane, BorderLayout.CENTER);
-		add(buttonPane, BorderLayout.SOUTH);
-	}
+                add(mainPane, BorderLayout.CENTER);
+                add(buttonPane, BorderLayout.SOUTH);
+        }
 
-	/**
-	 * Copies the currently selected certificate to the system Clipboard.
-	 */
-	private class CopyToClipboardHandler implements ActionListener {
-		public void actionPerformed(ActionEvent e) {
-			Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
-			int certIndex = 0;
-			DefaultMutableTreeNode node = (DefaultMutableTreeNode)
+        /**
+         * Copies the currently selected certificate to the system Clipboard.
+         */
+        private class CopyToClipboardHandler implements ActionListener {
+                public void actionPerformed(ActionEvent e) {
+                        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+                        int certIndex = 0;
+                        DefaultMutableTreeNode node = (DefaultMutableTreeNode)
                 tree.getLastSelectedPathComponent();
             if (node == null) return;
             if (node.isRoot())
-				certIndex = 0;
+                                certIndex = 0;
             else if (node.isLeaf())
-				certIndex = 1;
+                                certIndex = 1;
+
+                        String[][] cert = certsData.get(certIndex);
+                        int rows = cert.length;
+                        int cols = cert[0].length;
 
-			String[][] cert = certsData.get(certIndex);
-			int rows = cert.length;
-			int cols = cert[0].length;
-	
-			String certString = "";
-			for (int i = 0; i < rows; i++) {
-				for (int j = 0; j < cols; j++) {
-					certString += cert[i][j];
-					certString += " ";
-				}
-				certString += "\n";
-			}
+                        String certString = "";
+                        for (int i = 0; i < rows; i++) {
+                                for (int j = 0; j < cols; j++) {
+                                        certString += cert[i][j];
+                                        certString += " ";
+                                }
+                                certString += "\n";
+                        }
 
-			clipboard.setContents(new StringSelection(certString), null);
-		}
-	}
+                        clipboard.setContents(new StringSelection(certString), null);
+                }
+        }
 
-	/**
-	 * Updates the JTable when the JTree selection has changed.
-	 */
-	protected class TreeSelectionHandler implements TreeSelectionListener {
-		public void valueChanged(TreeSelectionEvent e) {
-			DefaultMutableTreeNode node = (DefaultMutableTreeNode)
-				tree.getLastSelectedPathComponent();
+        /**
+         * Updates the JTable when the JTree selection has changed.
+         */
+        protected class TreeSelectionHandler implements TreeSelectionListener {
+                public void valueChanged(TreeSelectionEvent e) {
+                        DefaultMutableTreeNode node = (DefaultMutableTreeNode)
+                                tree.getLastSelectedPathComponent();
 
-			if (node == null) return;
-			if (node.isRoot()) {
-				table.setModel(new DefaultTableModel(certsData.get(0),
-					columnNames));
-			} else if (node.isLeaf()) {
-				table.setModel(new DefaultTableModel(certsData.get(1),
-					columnNames));
-			}
-		}
-	}
+                        if (node == null) return;
+                        if (node.isRoot()) {
+                                table.setModel(new DefaultTableModel(certsData.get(0),
+                                        columnNames));
+                        } else if (node.isLeaf()) {
+                                table.setModel(new DefaultTableModel(certsData.get(1),
+                                        columnNames));
+                        }
+                }
+        }
 
-	/**
+        /**
      * Updates the JTable when the selection on the list has changed.
      */
     private class ListSelectionHandler implements ListSelectionListener {
@@ -324,18 +324,18 @@
         }
     }
 
-	/**
-	 * Makes a human readable hash fingerprint.
-	 * For example: 11:22:33:44:AA:BB:CC:DD:EE:FF.
-	 */
-	private String makeFingerprint(byte[] hash) {
-		String fingerprint = "";
-		for (int i = 0; i < hash.length; i++) {
-			if (!fingerprint.equals(""))
-				fingerprint += ":";
-			fingerprint += Integer.toHexString(
-				((hash[i] & 0xFF)|0x100)).substring(1,3);
-		}
-		return fingerprint.toUpperCase();
-	}
+        /**
+         * Makes a human readable hash fingerprint.
+         * For example: 11:22:33:44:AA:BB:CC:DD:EE:FF.
+         */
+        private String makeFingerprint(byte[] hash) {
+                String fingerprint = "";
+                for (int i = 0; i < hash.length; i++) {
+                        if (!fingerprint.equals(""))
+                                fingerprint += ":";
+                        fingerprint += Integer.toHexString(
+                                ((hash[i] & 0xFF)|0x100)).substring(1,3);
+                }
+                return fingerprint.toUpperCase();
+        }
 }
--- a/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java	Fri Jul 23 10:53:49 2010 +0100
@@ -55,7 +55,7 @@
 import sun.security.util.DerValue;
 import sun.security.util.HostnameChecker;
 import sun.security.x509.X500Name;
- 
+
 public class HttpsCertVerifier implements CertVerifier {
 
     private VariableX509TrustManager tm;
@@ -65,9 +65,9 @@
     private boolean isTrusted;
     private boolean hostMatched;
     private ArrayList<String> details = new ArrayList<String>();
-    
-    public HttpsCertVerifier(VariableX509TrustManager tm, 
-                             X509Certificate[] chain, String authType, 
+
+    public HttpsCertVerifier(VariableX509TrustManager tm,
+                             X509Certificate[] chain, String authType,
                              boolean isTrusted, boolean hostMatched,
                              String hostName) {
         this.tm = tm;
@@ -83,62 +83,62 @@
     }
 
     public ArrayList<CertPath> getCerts() {
-        
+
         ArrayList<X509Certificate> list = new ArrayList<X509Certificate>();
         for (int i=0; i < chain.length; i++)
             list.add(chain[i]);
 
         ArrayList<CertPath> certPaths = new ArrayList<CertPath>();
-        
+
         try {
             certPaths.add(CertificateFactory.getInstance("X.509").generateCertPath(list));
         } catch (CertificateException ce) {
             ce.printStackTrace();
-            
+
             // carry on
         }
 
-        return certPaths; 
+        return certPaths;
     }
 
     public ArrayList<String> getDetails() {
 
-	boolean hasExpiredCert=false; 
-	boolean hasExpiringCert=false;
-	boolean notYetValidCert=false;
-	boolean isUntrusted=false; 
-	boolean CNMisMatch = !hostMatched;
+        boolean hasExpiredCert=false;
+        boolean hasExpiringCert=false;
+        boolean notYetValidCert=false;
+        boolean isUntrusted=false;
+        boolean CNMisMatch = !hostMatched;
 
-	if (! getAlreadyTrustPublisher())
+        if (! getAlreadyTrustPublisher())
               isUntrusted = true;
 
-	for (int i=0; i < chain.length; i++)
-	{
-	   X509Certificate cert = chain[i];	
+        for (int i=0; i < chain.length; i++)
+        {
+           X509Certificate cert = chain[i];
 
            long now = System.currentTimeMillis();
            long SIX_MONTHS = 180*24*60*60*1000L;
-	   long notAfter = cert.getNotAfter().getTime();
+           long notAfter = cert.getNotAfter().getTime();
            if (notAfter < now) {
              hasExpiredCert = true;
            } else if (notAfter < now + SIX_MONTHS) {
              hasExpiringCert = true;
            }
-	
-	   try {
-	     cert.checkValidity();
-	   } catch (CertificateNotYetValidException cnyve) {
+
+           try {
+             cert.checkValidity();
+           } catch (CertificateNotYetValidException cnyve) {
              notYetValidCert = true;
-	   } catch (CertificateExpiredException cee) {
-	     hasExpiredCert = true;
-	   }
-	}
+           } catch (CertificateExpiredException cee) {
+             hasExpiredCert = true;
+           }
+        }
 
-	String altNames = getNamesForCert(chain[0]);
+        String altNames = getNamesForCert(chain[0]);
 
-	if (isUntrusted || hasExpiredCert || hasExpiringCert || notYetValidCert || CNMisMatch) {
-	      if (isUntrusted)
-	        addToDetails(R("SUntrustedCertificate"));
+        if (isUntrusted || hasExpiredCert || hasExpiringCert || notYetValidCert || CNMisMatch) {
+              if (isUntrusted)
+                addToDetails(R("SUntrustedCertificate"));
               if (hasExpiredCert)
                 addToDetails(R("SHasExpiredCert"));
               if (hasExpiringCert)
@@ -146,19 +146,19 @@
               if (notYetValidCert)
                 addToDetails(R("SNotYetValidCert"));
               if (CNMisMatch)
-                  addToDetails(R("SCNMisMatch", altNames, this.hostName));  
+                  addToDetails(R("SCNMisMatch", altNames, this.hostName));
         }
-	
-	
-	return details;
+
+
+        return details;
     }
 
     private String getNamesForCert(X509Certificate c) {
-        
+
         String names = "";
-        
-        
-        // We use the specification from 
+
+
+        // We use the specification from
         // http://java.sun.com/j2se/1.5.0/docs/api/java/security/cert/X509Certificate.html#getSubjectAlternativeNames()
         // to determine the type of address
         int ALTNAME_DNS = 2;
@@ -173,14 +173,14 @@
 
             if (subjAltNames != null) {
                 for (List<?> next : subjAltNames) {
-                    if ( ((Integer)next.get(0)).intValue() == ALTNAME_IP || 
+                    if ( ((Integer)next.get(0)).intValue() == ALTNAME_IP ||
                             ((Integer)next.get(0)).intValue() == ALTNAME_DNS
                     ) {
                         names += ", " + (String)next.get(1);
                     }
                 }
             }
-            
+
             if (subjAltNames != null)
                 names = names.substring(2); // remove proceeding ", "
 
@@ -192,7 +192,7 @@
 
         return names;
     }
-    
+
     private void addToDetails(String detail) {
       if (!details.contains(detail))
         details.add(detail);
@@ -201,7 +201,7 @@
     private static String R(String key) {
       return JNLPRuntime.getMessage(key);
     }
-    
+
     private static String R(String key, String arg1, String arg2) {
         return JNLPRuntime.getMessage(key, new Object[] { arg1, arg2 });
     }
@@ -213,18 +213,18 @@
     }
 
     public Certificate getRoot() {
-      if (chain.length > 0) 
+      if (chain.length > 0)
         return (Certificate)chain[chain.length - 1];
       return null;
     }
 
     public boolean getRootInCacerts() {
-	try {
-	  KeyTool kt = new KeyTool();
+        try {
+          KeyTool kt = new KeyTool();
           return kt.checkCacertsForCertificate(getRoot());
         } catch (Exception e) {
-	}
-	return false;
+        }
+        return false;
     }
 
     public boolean hasSigningIssues() {
--- a/netx/net/sourceforge/jnlp/security/MoreInfoPane.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/MoreInfoPane.java	Fri Jul 23 10:53:49 2010 +0100
@@ -59,52 +59,52 @@
  */
 public class MoreInfoPane extends SecurityDialogPanel {
 
-	public MoreInfoPane(SecurityWarningDialog x, CertVerifier certVerifier) {
-		super(x, certVerifier);
-		addComponents();
-	}
+        public MoreInfoPane(SecurityWarningDialog x, CertVerifier certVerifier) {
+                super(x, certVerifier);
+                addComponents();
+        }
 
-	/**
-	 * Constructs the GUI components of this panel
-	 */
-	private void addComponents() {
-		ArrayList<String> details = certVerifier.getDetails();
+        /**
+         * Constructs the GUI components of this panel
+         */
+        private void addComponents() {
+                ArrayList<String> details = certVerifier.getDetails();
 
-		int numLabels = details.size();
-		JPanel errorPanel = new JPanel(new GridLayout(numLabels,1));
-		errorPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
-		errorPanel.setPreferredSize(new Dimension(400, 70*(numLabels)));
+                int numLabels = details.size();
+                JPanel errorPanel = new JPanel(new GridLayout(numLabels,1));
+                errorPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+                errorPanel.setPreferredSize(new Dimension(400, 70*(numLabels)));
 
-		for (int i = 0; i < numLabels; i++) {
-			ImageIcon icon = null;
-			if (details.get(i).equals(R("STrustedCertificate")))
-				icon = new ImageIcon((new sun.misc.Launcher())
-						.getClassLoader().getResource("net/sourceforge/jnlp/resources/info-small.png"));
-			else
-				icon = new ImageIcon((new sun.misc.Launcher())
-						.getClassLoader().getResource("net/sourceforge/jnlp/resources/warning-small.png"));
+                for (int i = 0; i < numLabels; i++) {
+                        ImageIcon icon = null;
+                        if (details.get(i).equals(R("STrustedCertificate")))
+                                icon = new ImageIcon((new sun.misc.Launcher())
+                                                .getClassLoader().getResource("net/sourceforge/jnlp/resources/info-small.png"));
+                        else
+                                icon = new ImageIcon((new sun.misc.Launcher())
+                                                .getClassLoader().getResource("net/sourceforge/jnlp/resources/warning-small.png"));
 
-			errorPanel.add(new JLabel(htmlWrap(details.get(i)), icon, SwingConstants.LEFT));
-		}
+                        errorPanel.add(new JLabel(htmlWrap(details.get(i)), icon, SwingConstants.LEFT));
+                }
 
-		JPanel buttonsPanel = new JPanel(new BorderLayout());
-		JButton certDetails = new JButton("Certificate Details");
-		certDetails.addActionListener(new CertInfoButtonListener());
-		JButton close = new JButton("Close");
-		close.addActionListener(createSetValueListener(parent, 0));
+                JPanel buttonsPanel = new JPanel(new BorderLayout());
+                JButton certDetails = new JButton("Certificate Details");
+                certDetails.addActionListener(new CertInfoButtonListener());
+                JButton close = new JButton("Close");
+                close.addActionListener(createSetValueListener(parent, 0));
         buttonsPanel.add(certDetails, BorderLayout.WEST);
         buttonsPanel.add(close, BorderLayout.EAST);
-		buttonsPanel.setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
+                buttonsPanel.setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
 
         add(errorPanel, BorderLayout.NORTH);
         add(buttonsPanel, BorderLayout.SOUTH);
 
-	}
+        }
 
-	private class CertInfoButtonListener implements ActionListener {
+        private class CertInfoButtonListener implements ActionListener {
         public void actionPerformed(ActionEvent e) {
             SecurityWarningDialog.showCertInfoDialog(parent.getJarSigner(),
-				parent);
+                                parent);
         }
     }
 }
--- a/netx/net/sourceforge/jnlp/security/SecurityDialogPanel.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialogPanel.java	Fri Jul 23 10:53:49 2010 +0100
@@ -52,78 +52,78 @@
  */
 public abstract class SecurityDialogPanel extends JPanel {
 
-	protected SecurityWarningDialog parent;
-	
-	JComponent initialFocusComponent = null;
-	
-	CertVerifier certVerifier;
+        protected SecurityWarningDialog parent;
+
+        JComponent initialFocusComponent = null;
+
+        CertVerifier certVerifier;
 
-	public SecurityDialogPanel(SecurityWarningDialog dialog, CertVerifier certVerifier){
-		this.parent = dialog;
-		this.certVerifier = certVerifier;
-		this.setLayout(new BorderLayout());
-	}
+        public SecurityDialogPanel(SecurityWarningDialog dialog, CertVerifier certVerifier){
+                this.parent = dialog;
+                this.certVerifier = certVerifier;
+                this.setLayout(new BorderLayout());
+        }
 
-	/*
-	 * String translation functions
-	 */
+        /*
+         * String translation functions
+         */
 
-	protected static String R(String key) {
-		return JNLPRuntime.getMessage(key);
-	}
+        protected static String R(String key) {
+                return JNLPRuntime.getMessage(key);
+        }
 
     protected static String R(String key, Object param) {
         return JNLPRuntime.getMessage(key, new Object[] {param});
     }
 
-	/**
-	 * Needed to get word wrap working in JLabels.
-	 */
-	protected String htmlWrap (String s) {
-		return "<html>"+s+"</html>";
-	}
+        /**
+         * Needed to get word wrap working in JLabels.
+         */
+        protected String htmlWrap (String s) {
+                return "<html>"+s+"</html>";
+        }
+
+        /**
+         * Create an ActionListener suitable for use with buttons. When this {@link ActionListener}
+         * is invoked, it will set the value of the {@link SecurityWarningDialog} and then dispossed.
+         *
+         * @param buttonIndex the index of the button. By convention 0 = Yes. 1 = No, 2 = Cancel
+         * @return
+         */
+        protected ActionListener createSetValueListener(SecurityWarningDialog dialog, int buttonIndex) {
+            return new SetValueHandler(dialog, buttonIndex);
+        }
 
-	/** 
-	 * Create an ActionListener suitable for use with buttons. When this {@link ActionListener}
-	 * is invoked, it will set the value of the {@link SecurityWarningDialog} and then dispossed.
-	 * 
-	 * @param buttonIndex the index of the button. By convention 0 = Yes. 1 = No, 2 = Cancel
-	 * @return
-	 */
-	protected ActionListener createSetValueListener(SecurityWarningDialog dialog, int buttonIndex) {
-	    return new SetValueHandler(dialog, buttonIndex);
-	}
-	
-	@Override
-	public void setVisible(boolean aFlag) {
-	    super.setVisible(aFlag);
-	    requestFocusOnDefaultButton();
-	}
-	
-	public void requestFocusOnDefaultButton() {
-	       if (initialFocusComponent != null) {
-	            initialFocusComponent.requestFocusInWindow();
-	        }
-	}
-	
-	/**
-	 * Creates a handler that sets a dialog's value and then disposes it when activated
-	 *
-	 */
-	private class SetValueHandler implements ActionListener {
+        @Override
+        public void setVisible(boolean aFlag) {
+            super.setVisible(aFlag);
+            requestFocusOnDefaultButton();
+        }
+
+        public void requestFocusOnDefaultButton() {
+               if (initialFocusComponent != null) {
+                    initialFocusComponent.requestFocusInWindow();
+                }
+        }
 
-	    Integer buttonIndex;
-	    SecurityWarningDialog dialog;
-	    
-	    public SetValueHandler(SecurityWarningDialog dialog, int buttonIndex) {
-	        this.dialog = dialog;
-	        this.buttonIndex = buttonIndex;
-	    }
-	    
+        /**
+         * Creates a handler that sets a dialog's value and then disposes it when activated
+         *
+         */
+        private class SetValueHandler implements ActionListener {
+
+            Integer buttonIndex;
+            SecurityWarningDialog dialog;
+
+            public SetValueHandler(SecurityWarningDialog dialog, int buttonIndex) {
+                this.dialog = dialog;
+                this.buttonIndex = buttonIndex;
+            }
+
         @Override
         public void actionPerformed(ActionEvent e) {
             dialog.setValue(buttonIndex);
             dialog.dispose();
         }
-	}
+        }
 }
--- a/netx/net/sourceforge/jnlp/security/SecurityUtil.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/SecurityUtil.java	Fri Jul 23 10:53:49 2010 +0100
@@ -46,27 +46,27 @@
 
 public class SecurityUtil {
 
-	private static final char[] password = "changeit".toCharArray();
-	
-	public static String getTrustedCertsFilename() throws Exception{
-		
-		String homeDir = JNLPRuntime.HOME_DIR;
-		
-		if (homeDir == null) {
-			throw new Exception("Could not access home directory");
-		} else {
-			return JNLPRuntime.CERTIFICATES_FILE;
-		}
-	}
-	
-	public static char[] getTrustedCertsPassword() {
-		return password;
-	}
-	
+        private static final char[] password = "changeit".toCharArray();
+
+        public static String getTrustedCertsFilename() throws Exception{
+
+                String homeDir = JNLPRuntime.HOME_DIR;
+
+                if (homeDir == null) {
+                        throw new Exception("Could not access home directory");
+                } else {
+                        return JNLPRuntime.CERTIFICATES_FILE;
+                }
+        }
+
+        public static char[] getTrustedCertsPassword() {
+                return password;
+        }
+
     /**
      * Extracts the CN field from a Certificate principal string. Or, if it
      * can't find that, return the principal unmodified.
-     * 
+     *
      * This is a simple (and hence 'wrong') version. See
      * http://www.ietf.org/rfc/rfc2253.txt for all the gory details.
      */
@@ -74,14 +74,14 @@
 
         /*
          * FIXME Incomplete
-         * 
+         *
          * This does not implement RFC 2253 completely
-         * 
+         *
          * Issues:
          * - rfc2253 talks about utf8, java uses utf16.
          * - theoretically, java should have dealt with all byte encodings
          *   so we shouldnt even see cases like \FF
-         * - if the above is wrong, then we need to deal with cases like 
+         * - if the above is wrong, then we need to deal with cases like
          *   \FF\FF
          */
 
@@ -163,123 +163,123 @@
         return ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f'));
     }
 
-	/**
-	 * Checks the user's home directory to see if the trusted.certs file exists.
-	 * If it does not exist, it tries to create an empty keystore.
-	 * @return true if the trusted.certs file exists or a new trusted.certs
-	 * was created successfully, otherwise false.
-	 */
-	public static boolean checkTrustedCertsFile() throws Exception {
-		
-		File certFile = new File(getTrustedCertsFilename());
-		
-		//file does not exist
-		if (!certFile.isFile()) {
-			File dir = certFile.getAbsoluteFile().getParentFile();
-			boolean madeDir = false;
-			if (!dir.isDirectory()) {
-				madeDir = dir.mkdirs();
-			}
-			
-			//made directory, or directory exists
-			if (madeDir || dir.isDirectory()) {
-				KeyStore ks = KeyStore.getInstance("JKS");
-				ks.load(null, password);
-				FileOutputStream fos = new FileOutputStream(certFile);
-				ks.store(fos, password);
-				fos.close();
-				return true;
-			} else {
-				return false;
-			}
-		} else {
-			return true;
-		}
-	}
-	
-	/**
-	 * Returns the keystore associated with the user's trusted.certs file,
-	 * or null otherwise.
-	 */
-	public static KeyStore getUserKeyStore() throws Exception {
-		
-		KeyStore ks = null;
-		FileInputStream fis = null;
-		
-		if (checkTrustedCertsFile()) {
+        /**
+         * Checks the user's home directory to see if the trusted.certs file exists.
+         * If it does not exist, it tries to create an empty keystore.
+         * @return true if the trusted.certs file exists or a new trusted.certs
+         * was created successfully, otherwise false.
+         */
+        public static boolean checkTrustedCertsFile() throws Exception {
+
+                File certFile = new File(getTrustedCertsFilename());
+
+                //file does not exist
+                if (!certFile.isFile()) {
+                        File dir = certFile.getAbsoluteFile().getParentFile();
+                        boolean madeDir = false;
+                        if (!dir.isDirectory()) {
+                                madeDir = dir.mkdirs();
+                        }
 
-			try {
-				File file = new File(getTrustedCertsFilename());
-				if (file.exists()) {
-					fis = new FileInputStream(file);
-					ks = KeyStore.getInstance("JKS");
-					ks.load(fis, password);
-				}
-			} catch (Exception e) {
-				e.printStackTrace();
-				throw e;
-			} finally {
-				if (fis != null)
-					fis.close();
-			}
-		}
-		return ks;
-	}
-	
+                        //made directory, or directory exists
+                        if (madeDir || dir.isDirectory()) {
+                                KeyStore ks = KeyStore.getInstance("JKS");
+                                ks.load(null, password);
+                                FileOutputStream fos = new FileOutputStream(certFile);
+                                ks.store(fos, password);
+                                fos.close();
+                                return true;
+                        } else {
+                                return false;
+                        }
+                } else {
+                        return true;
+                }
+        }
+
+        /**
+         * Returns the keystore associated with the user's trusted.certs file,
+         * or null otherwise.
+         */
+        public static KeyStore getUserKeyStore() throws Exception {
+
+                KeyStore ks = null;
+                FileInputStream fis = null;
+
+                if (checkTrustedCertsFile()) {
+
+                        try {
+                                File file = new File(getTrustedCertsFilename());
+                                if (file.exists()) {
+                                        fis = new FileInputStream(file);
+                                        ks = KeyStore.getInstance("JKS");
+                                        ks.load(fis, password);
+                                }
+                        } catch (Exception e) {
+                                e.printStackTrace();
+                                throw e;
+                        } finally {
+                                if (fis != null)
+                                        fis.close();
+                        }
+                }
+                return ks;
+        }
+
     /**
-     * Returns the keystore associated with the JDK cacerts file, 
-	 * or null otherwise.
+     * Returns the keystore associated with the JDK cacerts file,
+         * or null otherwise.
      */
     public static KeyStore getCacertsKeyStore() throws Exception {
 
-		KeyStore caks = null;
-		FileInputStream fis = null;
+                KeyStore caks = null;
+                FileInputStream fis = null;
 
-		try {
-        	File file = new File(System.getProperty("java.home") 
-        			+ "/lib/security/cacerts");
-        	if (file.exists()) {
-        		fis = new FileInputStream(file);
-        		caks = KeyStore.getInstance("JKS"); 
-        		caks.load(fis, null);
-        	}
-		} catch (Exception e) {
-			caks = null;
-		} finally {
-			if (fis != null)
-				fis.close();
-		}
+                try {
+                File file = new File(System.getProperty("java.home")
+                                + "/lib/security/cacerts");
+                if (file.exists()) {
+                        fis = new FileInputStream(file);
+                        caks = KeyStore.getInstance("JKS");
+                        caks.load(fis, null);
+                }
+                } catch (Exception e) {
+                        caks = null;
+                } finally {
+                        if (fis != null)
+                                fis.close();
+                }
 
-		return caks;
+                return caks;
     }
-    
-	/**
-	 * Returns the keystore associated with the system certs file,
-	 * or null otherwise.
-	 */
-	public static KeyStore getSystemCertStore() throws Exception {
 
-		KeyStore caks = null;
-		FileInputStream fis = null;
+        /**
+         * Returns the keystore associated with the system certs file,
+         * or null otherwise.
+         */
+        public static KeyStore getSystemCertStore() throws Exception {
+
+                KeyStore caks = null;
+                FileInputStream fis = null;
 
-		try {
-			File file = new File(System.getProperty("javax.net.ssl.trustStore"));
-			String type = System.getProperty("javax.net.ssl.trustStoreType");
-			//String provider = "SUN";
-			char[] password = System.getProperty(
-				"javax.net.ssl.trustStorePassword").toCharArray();
-			if (file.exists()) {
-				fis = new FileInputStream(file);
-				caks = KeyStore.getInstance(type);
-				caks.load(fis, password);
-			}
-		} catch (Exception e) {
-			caks = null;
-		} finally {
-			if (fis != null)
-				fis.close();
-		}
-		
-		return caks;
-	}
+                try {
+                        File file = new File(System.getProperty("javax.net.ssl.trustStore"));
+                        String type = System.getProperty("javax.net.ssl.trustStoreType");
+                        //String provider = "SUN";
+                        char[] password = System.getProperty(
+                                "javax.net.ssl.trustStorePassword").toCharArray();
+                        if (file.exists()) {
+                                fis = new FileInputStream(file);
+                                caks = KeyStore.getInstance(type);
+                                caks.load(fis, password);
+                        }
+                } catch (Exception e) {
+                        caks = null;
+                } finally {
+                        if (fis != null)
+                                fis.close();
+                }
+
+                return caks;
+        }
 }
--- a/netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java	Fri Jul 23 10:53:49 2010 +0100
@@ -56,18 +56,18 @@
  */
 public class SecurityWarningDialog extends JDialog {
 
-	/** Types of dialogs we can create */
-	public static enum DialogType {
-		CERT_WARNING,
-		MORE_INFO,
-		CERT_INFO,
-		SINGLE_CERT_INFO,
-		ACCESS_WARNING,
-		APPLET_WARNING
-	}
-	
-	/** The types of access which may need user permission. */
-	public static enum AccessType {
+        /** Types of dialogs we can create */
+        public static enum DialogType {
+                CERT_WARNING,
+                MORE_INFO,
+                CERT_INFO,
+                SINGLE_CERT_INFO,
+                ACCESS_WARNING,
+                APPLET_WARNING
+        }
+
+        /** The types of access which may need user permission. */
+        public static enum AccessType {
         READ_FILE,
         WRITE_FILE,
         CREATE_DESTKOP_SHORTCUT,
@@ -80,262 +80,262 @@
         SIGNING_ERROR
     }
 
-	/** The type of dialog we want to show */
-	private DialogType dialogType;
+        /** The type of dialog we want to show */
+        private DialogType dialogType;
 
-	/** The type of access that this dialog is for */
-	private AccessType accessType;
+        /** The type of access that this dialog is for */
+        private AccessType accessType;
 
-	private SecurityDialogPanel panel;
+        private SecurityDialogPanel panel;
 
-	/** The application file associated with this security warning */
-	private JNLPFile file;
+        /** The application file associated with this security warning */
+        private JNLPFile file;
 
-	private CertVerifier certVerifier;
-	
-	private X509Certificate cert;
-	
-	/** An optional String array that's only necessary when a dialog
-	 * label requires some parameters (e.g. showing which address an application
-	 * is trying to connect to).
-	 */ 
-	private Object[] extras;
-	
-	/** Whether or not this object has been fully initialized */
-	private boolean initialized = false;
+        private CertVerifier certVerifier;
+
+        private X509Certificate cert;
+
+        /** An optional String array that's only necessary when a dialog
+         * label requires some parameters (e.g. showing which address an application
+         * is trying to connect to).
+         */
+        private Object[] extras;
+
+        /** Whether or not this object has been fully initialized */
+        private boolean initialized = false;
 
     /**
      * the return value of this dialog. result: 0 = Yes, 1 = No, 2 = Cancel,
      * null = Window closed.
      */
-	private Object value;
+        private Object value;
+
+        public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
+                        JNLPFile file) {
+            super();
+                this.dialogType = dialogType;
+                this.accessType = accessType;
+                this.file = file;
+                this.certVerifier = null;
+                initialized = true;
+                initDialog();
+        }
 
-	public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
-			JNLPFile file) {
-	    super();
-		this.dialogType = dialogType;
-		this.accessType = accessType;
-		this.file = file;
-		this.certVerifier = null;
-		initialized = true;
-		initDialog();
-	}
-	
-	public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
-			JNLPFile file, CertVerifier jarSigner) {
-	    super();
-		this.dialogType = dialogType;
-		this.accessType = accessType;
-		this.file = file;
-		this.certVerifier = jarSigner;
-		initialized = true;
-		initDialog();
-	}
-	
-	public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
-	        CertVerifier certVerifier) {
-	    super();
-	    this.dialogType = dialogType;
-	    this.accessType = accessType;
-	    this.file = null;
-	    this.certVerifier = certVerifier;
-	    initialized = true;
-	    initDialog();
-	}
+        public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
+                        JNLPFile file, CertVerifier jarSigner) {
+            super();
+                this.dialogType = dialogType;
+                this.accessType = accessType;
+                this.file = file;
+                this.certVerifier = jarSigner;
+                initialized = true;
+                initDialog();
+        }
+
+        public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
+                CertVerifier certVerifier) {
+            super();
+            this.dialogType = dialogType;
+            this.accessType = accessType;
+            this.file = null;
+            this.certVerifier = certVerifier;
+            initialized = true;
+            initDialog();
+        }
+
+        public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
+                        JNLPFile file, Object[] extras) {
+            super();
+                this.dialogType = dialogType;
+                this.accessType = accessType;
+                this.file = file;
+                this.certVerifier = null;
+                initialized = true;
+                this.extras = extras;
+                initDialog();
+        }
 
-	public SecurityWarningDialog(DialogType dialogType, AccessType accessType,
-			JNLPFile file, Object[] extras) {
-	    super();
-		this.dialogType = dialogType;
-		this.accessType = accessType;
-		this.file = file;
-		this.certVerifier = null;
-		initialized = true;
-		this.extras = extras;
-		initDialog();
-	}
-	
-	//for displaying a single certificate
-	public SecurityWarningDialog(DialogType dialogType, X509Certificate c) {
-	    super();
-		this.dialogType = dialogType;
-		this.accessType = null;
-		this.file = null;
-		this.certVerifier = null;
-		this.cert = c;
-		initialized = true;
-		initDialog();
-	}
-	
-	/**
-	 * Returns if this dialog has been fully initialized yet.
-	 * @return true if this dialog has been initialized, and false otherwise.
-	 */
-	public boolean isInitialized(){
-		return initialized;
-	}
-	
-	/**
-	 * Shows a warning dialog for different types of system access (i.e. file
-	 * open/save, clipboard read/write, printing, etc).
-	 * 
-	 * @param accessType the type of system access requested.
-	 * @param file the jnlp file associated with the requesting application.
-	 * @return true if permission was granted by the user, false otherwise.
-	 */
-	public static boolean showAccessWarningDialog(AccessType accessType, 
-		JNLPFile file) {
-		return showAccessWarningDialog(accessType, file, null);
-	}
-	
-	/**
-	 * Shows a warning dialog for different types of system access (i.e. file
-	 * open/save, clipboard read/write, printing, etc).
-	 * 
-	 * @param accessType the type of system access requested.
-	 * @param file the jnlp file associated with the requesting application.
-	 * @param extras an optional array of Strings (typically) that gets 
-	 * passed to the dialog labels.
-	 * @return true if permission was granted by the user, false otherwise.
-	 */
-	public static boolean showAccessWarningDialog(AccessType accessType, 
-			JNLPFile file, Object[] extras) {
-			SecurityWarningDialog dialog = new SecurityWarningDialog(
-					DialogType.ACCESS_WARNING, accessType, file, extras);
-			dialog.setVisible(true);
-			dialog.dispose();
+        //for displaying a single certificate
+        public SecurityWarningDialog(DialogType dialogType, X509Certificate c) {
+            super();
+                this.dialogType = dialogType;
+                this.accessType = null;
+                this.file = null;
+                this.certVerifier = null;
+                this.cert = c;
+                initialized = true;
+                initDialog();
+        }
+
+        /**
+         * Returns if this dialog has been fully initialized yet.
+         * @return true if this dialog has been initialized, and false otherwise.
+         */
+        public boolean isInitialized(){
+                return initialized;
+        }
+
+        /**
+         * Shows a warning dialog for different types of system access (i.e. file
+         * open/save, clipboard read/write, printing, etc).
+         *
+         * @param accessType the type of system access requested.
+         * @param file the jnlp file associated with the requesting application.
+         * @return true if permission was granted by the user, false otherwise.
+         */
+        public static boolean showAccessWarningDialog(AccessType accessType,
+                JNLPFile file) {
+                return showAccessWarningDialog(accessType, file, null);
+        }
+
+        /**
+         * Shows a warning dialog for different types of system access (i.e. file
+         * open/save, clipboard read/write, printing, etc).
+         *
+         * @param accessType the type of system access requested.
+         * @param file the jnlp file associated with the requesting application.
+         * @param extras an optional array of Strings (typically) that gets
+         * passed to the dialog labels.
+         * @return true if permission was granted by the user, false otherwise.
+         */
+        public static boolean showAccessWarningDialog(AccessType accessType,
+                        JNLPFile file, Object[] extras) {
+                        SecurityWarningDialog dialog = new SecurityWarningDialog(
+                                        DialogType.ACCESS_WARNING, accessType, file, extras);
+                        dialog.setVisible(true);
+                        dialog.dispose();
+
+                        Object selectedValue = dialog.getValue();
+                        if (selectedValue == null) {
+                                return false;
+                        } else if (selectedValue instanceof Integer) {
+                                if (((Integer)selectedValue).intValue() == 0)
+                                        return true;
+                                else
+                                        return false;
+                        } else {
+                                return false;
+                        }
+                }
 
-			Object selectedValue = dialog.getValue();
-			if (selectedValue == null) {
-				return false;
-			} else if (selectedValue instanceof Integer) {
-				if (((Integer)selectedValue).intValue() == 0)
-					return true;
-				else
-					return false;
-			} else {
-				return false;
-			}
-		}
-	
-	/**
-	 * Shows a security warning dialog according to the specified type of
-	 * access. If <code>type</code> is one of AccessType.VERIFIED or
-	 * AccessType.UNVERIFIED, extra details will be available with regards
-	 * to code signing and signing certificates.
-	 *
-	 * @param accessType the type of warning dialog to show
-	 * @param file the JNLPFile associated with this warning
-	 * @param jarSigner the JarSigner used to verify this application
-	 */
-	public static boolean showCertWarningDialog(AccessType accessType, 
-			JNLPFile file, CertVerifier jarSigner) {
-		SecurityWarningDialog dialog = 
-			new SecurityWarningDialog(DialogType.CERT_WARNING, accessType, file,
-			jarSigner);
-		dialog.setVisible(true);
-		dialog.dispose();
+        /**
+         * Shows a security warning dialog according to the specified type of
+         * access. If <code>type</code> is one of AccessType.VERIFIED or
+         * AccessType.UNVERIFIED, extra details will be available with regards
+         * to code signing and signing certificates.
+         *
+         * @param accessType the type of warning dialog to show
+         * @param file the JNLPFile associated with this warning
+         * @param jarSigner the JarSigner used to verify this application
+         */
+        public static boolean showCertWarningDialog(AccessType accessType,
+                        JNLPFile file, CertVerifier jarSigner) {
+                SecurityWarningDialog dialog =
+                        new SecurityWarningDialog(DialogType.CERT_WARNING, accessType, file,
+                        jarSigner);
+                dialog.setVisible(true);
+                dialog.dispose();
 
-		Object selectedValue = dialog.getValue();
-		if (selectedValue == null) {
-			return false;
-		} else if (selectedValue instanceof Integer) {
-			if (((Integer)selectedValue).intValue() == 0)
-				return true;
-			else
-				return false;
-		} else {
-			return false;
-		}
-	}
-	
-	/**
-	 * Shows more information regarding jar code signing
-	 *
-	 * @param jarSigner the JarSigner used to verify this application
-	 * @param parent the parent option pane
-	 */
-	public static void showMoreInfoDialog(
-		CertVerifier jarSigner, SecurityWarningDialog parent) {
+                Object selectedValue = dialog.getValue();
+                if (selectedValue == null) {
+                        return false;
+                } else if (selectedValue instanceof Integer) {
+                        if (((Integer)selectedValue).intValue() == 0)
+                                return true;
+                        else
+                                return false;
+                } else {
+                        return false;
+                }
+        }
 
-		SecurityWarningDialog dialog =
-			new SecurityWarningDialog(DialogType.MORE_INFO, null, null,
-			jarSigner);
-		dialog.setVisible(true);
-		dialog.dispose();
-	}
+        /**
+         * Shows more information regarding jar code signing
+         *
+         * @param jarSigner the JarSigner used to verify this application
+         * @param parent the parent option pane
+         */
+        public static void showMoreInfoDialog(
+                CertVerifier jarSigner, SecurityWarningDialog parent) {
+
+                SecurityWarningDialog dialog =
+                        new SecurityWarningDialog(DialogType.MORE_INFO, null, null,
+                        jarSigner);
+                dialog.setVisible(true);
+                dialog.dispose();
+        }
 
-	/**
-	 * Displays CertPath information in a readable table format.
-	 *
-	 * @param certs the certificates used in signing.
-	 */
-	public static void showCertInfoDialog(CertVerifier jarSigner,
-		SecurityWarningDialog parent) {
-		SecurityWarningDialog dialog = new SecurityWarningDialog(DialogType.CERT_INFO,
-			null, null, jarSigner);
-		dialog.setLocationRelativeTo(parent);
-		dialog.setVisible(true);
-		dialog.dispose();
-	}
+        /**
+         * Displays CertPath information in a readable table format.
+         *
+         * @param certs the certificates used in signing.
+         */
+        public static void showCertInfoDialog(CertVerifier jarSigner,
+                SecurityWarningDialog parent) {
+                SecurityWarningDialog dialog = new SecurityWarningDialog(DialogType.CERT_INFO,
+                        null, null, jarSigner);
+                dialog.setLocationRelativeTo(parent);
+                dialog.setVisible(true);
+                dialog.dispose();
+        }
 
-	/**
-	 * Displays a single certificate's information.
-	 * 
-	 * @param c
-	 * @param optionPane
-	 */
-	public static void showSingleCertInfoDialog(X509Certificate c, 
-			JDialog parent) {
-		SecurityWarningDialog dialog = new SecurityWarningDialog(DialogType.SINGLE_CERT_INFO, c);
-			dialog.setLocationRelativeTo(parent);
-			dialog.setVisible(true);
-			dialog.dispose();
-	}
-	
-	public static int showAppletWarning() {
-        	SecurityWarningDialog dialog = new SecurityWarningDialog(DialogType.APPLET_WARNING,
-            		null, null, (CertVerifier) null);
-        	dialog.setVisible(true);
-        	dialog.dispose();
+        /**
+         * Displays a single certificate's information.
+         *
+         * @param c
+         * @param optionPane
+         */
+        public static void showSingleCertInfoDialog(X509Certificate c,
+                        JDialog parent) {
+                SecurityWarningDialog dialog = new SecurityWarningDialog(DialogType.SINGLE_CERT_INFO, c);
+                        dialog.setLocationRelativeTo(parent);
+                        dialog.setVisible(true);
+                        dialog.dispose();
+        }
 
-		Object selectedValue = dialog.getValue();
+        public static int showAppletWarning() {
+                SecurityWarningDialog dialog = new SecurityWarningDialog(DialogType.APPLET_WARNING,
+                        null, null, (CertVerifier) null);
+                dialog.setVisible(true);
+                dialog.dispose();
+
+                Object selectedValue = dialog.getValue();
 
-		//result 0 = Yes, 1 = No, 2 = Cancel
-		if (selectedValue == null) {
-			return 2;
-		} else if (selectedValue instanceof Integer) {
-			return ((Integer)selectedValue).intValue();
-		} else {
-			return 2;
-		}
-	}
+                //result 0 = Yes, 1 = No, 2 = Cancel
+                if (selectedValue == null) {
+                        return 2;
+                } else if (selectedValue instanceof Integer) {
+                        return ((Integer)selectedValue).intValue();
+                } else {
+                        return 2;
+                }
+        }
 
-	private void initDialog() {
-	    setSystemLookAndFeel();
+        private void initDialog() {
+            setSystemLookAndFeel();
 
-		String dialogTitle = "";
-		if (dialogType == DialogType.CERT_WARNING)
-			dialogTitle = "Warning - Security";
-		else if (dialogType == DialogType.MORE_INFO)
-			dialogTitle = "More Information";
-		else if (dialogType == DialogType.CERT_INFO)
-			dialogTitle = "Details - Certificate";
-		else if (dialogType == DialogType.ACCESS_WARNING)
-			dialogTitle = "Security Warning";
-		else if (dialogType == DialogType.APPLET_WARNING)
-			dialogTitle = "Applet Warning";
+                String dialogTitle = "";
+                if (dialogType == DialogType.CERT_WARNING)
+                        dialogTitle = "Warning - Security";
+                else if (dialogType == DialogType.MORE_INFO)
+                        dialogTitle = "More Information";
+                else if (dialogType == DialogType.CERT_INFO)
+                        dialogTitle = "Details - Certificate";
+                else if (dialogType == DialogType.ACCESS_WARNING)
+                        dialogTitle = "Security Warning";
+                else if (dialogType == DialogType.APPLET_WARNING)
+                        dialogTitle = "Applet Warning";
 
-		setTitle(dialogTitle);
-		setModal(true);
+                setTitle(dialogTitle);
+                setModal(true);
 
-		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+                setDefaultCloseOperation(DISPOSE_ON_CLOSE);
 
-		installPanel();
+                installPanel();
 
-		pack();
+                pack();
 
-		WindowAdapter adapter = new WindowAdapter() {
+                WindowAdapter adapter = new WindowAdapter() {
             private boolean gotFocus = false;
             @Override
             public void windowClosing(WindowEvent we) {
@@ -359,55 +359,55 @@
                 }
             }
         };
-		addWindowListener(adapter);
-		addWindowFocusListener(adapter);
+                addWindowListener(adapter);
+                addWindowFocusListener(adapter);
 
-	}
+        }
 
-	public AccessType getType() {
-		return accessType;
-	}
+        public AccessType getType() {
+                return accessType;
+        }
 
-	public JNLPFile getFile() {
-		return file;
-	}
-	
-	public CertVerifier getJarSigner() {
-		return certVerifier;
-	}
-	
-	public X509Certificate getCert() {
-		return cert;
-	}
+        public JNLPFile getFile() {
+                return file;
+        }
+
+        public CertVerifier getJarSigner() {
+                return certVerifier;
+        }
+
+        public X509Certificate getCert() {
+                return cert;
+        }
 
-	/**
-	 * Adds the appropriate JPanel to this Dialog, based on {@link DialogType}.
-	 */
-	private void installPanel() {
+        /**
+         * Adds the appropriate JPanel to this Dialog, based on {@link DialogType}.
+         */
+        private void installPanel() {
 
-		if (dialogType == DialogType.CERT_WARNING)
-			panel = new CertWarningPane(this, this.certVerifier);
-		else if (dialogType == DialogType.MORE_INFO)
-			panel = new MoreInfoPane(this, this.certVerifier);
-		else if (dialogType == DialogType.CERT_INFO)
-			panel = new CertsInfoPane(this, this.certVerifier);
-		else if (dialogType == DialogType.SINGLE_CERT_INFO)
-			panel = new SingleCertInfoPane(this, this.certVerifier);
-		else if (dialogType == DialogType.ACCESS_WARNING)
-			panel = new AccessWarningPane(this, extras, this.certVerifier);
-		else if (dialogType == DialogType.APPLET_WARNING)
-			panel = new AppletWarningPane(this, this.certVerifier);
+                if (dialogType == DialogType.CERT_WARNING)
+                        panel = new CertWarningPane(this, this.certVerifier);
+                else if (dialogType == DialogType.MORE_INFO)
+                        panel = new MoreInfoPane(this, this.certVerifier);
+                else if (dialogType == DialogType.CERT_INFO)
+                        panel = new CertsInfoPane(this, this.certVerifier);
+                else if (dialogType == DialogType.SINGLE_CERT_INFO)
+                        panel = new SingleCertInfoPane(this, this.certVerifier);
+                else if (dialogType == DialogType.ACCESS_WARNING)
+                        panel = new AccessWarningPane(this, extras, this.certVerifier);
+                else if (dialogType == DialogType.APPLET_WARNING)
+                        panel = new AppletWarningPane(this, this.certVerifier);
 
-		add(panel, BorderLayout.CENTER);
-	}
+                add(panel, BorderLayout.CENTER);
+        }
 
-	private static void centerDialog(JDialog dialog) {
-		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
-		Dimension dialogSize = dialog.getSize();
+        private static void centerDialog(JDialog dialog) {
+                Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
+                Dimension dialogSize = dialog.getSize();
 
-		dialog.setLocation((screen.width - dialogSize.width)/2,
-			(screen.height - dialogSize.height)/2);
-	}
+                dialog.setLocation((screen.width - dialogSize.width)/2,
+                        (screen.height - dialogSize.height)/2);
+        }
 
     private void selectDefaultButton() {
         if (panel == null) {
--- a/netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java	Fri Jul 23 10:53:49 2010 +0100
@@ -47,31 +47,31 @@
 
 public class SingleCertInfoPane extends CertsInfoPane {
 
-	public SingleCertInfoPane(SecurityWarningDialog x, CertVerifier certVerifier) {
-		super(x, certVerifier);
-	}
-	
-	protected void buildTree() {
-		X509Certificate cert = parent.getCert();
-		String subjectString = 
-			SecurityUtil.getCN(cert.getSubjectX500Principal().getName());
-		String issuerString = 
-			SecurityUtil.getCN(cert.getIssuerX500Principal().getName());
+        public SingleCertInfoPane(SecurityWarningDialog x, CertVerifier certVerifier) {
+                super(x, certVerifier);
+        }
+
+        protected void buildTree() {
+                X509Certificate cert = parent.getCert();
+                String subjectString =
+                        SecurityUtil.getCN(cert.getSubjectX500Principal().getName());
+                String issuerString =
+                        SecurityUtil.getCN(cert.getIssuerX500Principal().getName());
+
+                DefaultMutableTreeNode top = new DefaultMutableTreeNode(subjectString
+                                + " (" + issuerString + ")");
 
-		DefaultMutableTreeNode top = new DefaultMutableTreeNode(subjectString 
-				+ " (" + issuerString + ")");
-		
-		tree = new JTree(top);
-		tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
-		tree.addTreeSelectionListener(new TreeSelectionHandler());
-	}
-	
-	protected void populateTable() {
-		X509Certificate c = parent.getCert();
-		certNames = new String[1];
-		certsData = new ArrayList<String[][]>();
-		certsData.add(parseCert(c));
-		certNames[0] = SecurityUtil.getCN(c.getSubjectX500Principal().getName())
-		+ " (" + SecurityUtil.getCN(c.getIssuerX500Principal().getName()) + ")";
-	}
+                tree = new JTree(top);
+                tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
+                tree.addTreeSelectionListener(new TreeSelectionHandler());
+        }
+
+        protected void populateTable() {
+                X509Certificate c = parent.getCert();
+                certNames = new String[1];
+                certsData = new ArrayList<String[][]>();
+                certsData.add(parseCert(c));
+                certNames[0] = SecurityUtil.getCN(c.getSubjectX500Principal().getName())
+                + " (" + SecurityUtil.getCN(c.getIssuerX500Principal().getName()) + ")";
+        }
 }
--- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java	Fri Jul 23 10:53:49 2010 +0100
@@ -53,21 +53,21 @@
 import com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager;
 
 /**
- * This class implements an X509 Trust Manager. The certificates it trusts are 
- * "variable", in the sense that it can dynamically, and temporarily support 
- * different certificates that are not in the keystore.  
+ * This class implements an X509 Trust Manager. The certificates it trusts are
+ * "variable", in the sense that it can dynamically, and temporarily support
+ * different certificates that are not in the keystore.
  */
 
 public class VariableX509TrustManager extends X509ExtendedTrustManager {
 
     KeyStore userKeyStore = null;
     KeyStore caKeyStore = null;
-    
+
     X509TrustManager userTrustManager = null;
     X509TrustManager caTrustManager = null;
-    
+
     ArrayList<Certificate> temporarilyTrusted = new ArrayList();
-    
+
     static VariableX509TrustManager instance = null;
 
     /**
@@ -79,10 +79,10 @@
             userKeyStore = SecurityUtil.getUserKeyStore();
             TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE");
             tmFactory.init(userKeyStore);
-            
+
             // tm factory initialized, now get the managers so we can assign the X509 one
             TrustManager[] trustManagers = tmFactory.getTrustManagers();
-            
+
             for (int i=0; i < trustManagers.length; i++) {
                 if (trustManagers[i] instanceof X509TrustManager) {
                     userTrustManager = (X509TrustManager) trustManagers[i];
@@ -117,7 +117,7 @@
     /**
      * Check if client is trusted (no support for custom here, only system/user)
      */
-    public void checkClientTrusted(X509Certificate[] chain, String authType, 
+    public void checkClientTrusted(X509Certificate[] chain, String authType,
                                    String hostName, String algorithm)
             throws CertificateException {
         // First try catrustmanager, then try usertrustmanager
@@ -127,8 +127,8 @@
             try {
                 userTrustManager.checkClientTrusted(chain, authType);
             } catch (Exception userex) {
-                // Do nothing here. This trust manager is intended to be used 
-                // only in the plugin instance vm, which does not act as a 
+                // Do nothing here. This trust manager is intended to be used
+                // only in the plugin instance vm, which does not act as a
                 // server
             }
         }
@@ -139,12 +139,12 @@
         checkClientTrusted(chain, authType, null, null);
     }
 
-    public void checkServerTrusted(X509Certificate[] chain, String authType, 
+    public void checkServerTrusted(X509Certificate[] chain, String authType,
                                    String hostName, String algorithm)
             throws CertificateException {
         checkServerTrusted(chain, authType, hostName, false);
     }
-    
+
     public void checkServerTrusted(X509Certificate[] chain, String authType)
             throws CertificateException {
         checkServerTrusted(chain, authType, null, null);
@@ -152,13 +152,13 @@
 
     /**
      * Check if the server is trusted
-     * 
+     *
      * @param chain The cert chain
      * @param authType The auth type algorithm
-     * @param checkOnly Whether to "check only" i.e. no user prompt, or to prompt for permission 
+     * @param checkOnly Whether to "check only" i.e. no user prompt, or to prompt for permission
      */
-    public synchronized void checkServerTrusted(X509Certificate[] chain, 
-                             String authType, String hostName, 
+    public synchronized void checkServerTrusted(X509Certificate[] chain,
+                             String authType, String hostName,
                              boolean checkOnly) throws CertificateException {
         CertificateException ce = null;
         boolean trusted = true;
@@ -171,7 +171,7 @@
             ce = e;
         }
 
-        // If the certificate is not explicitly trusted, we 
+        // If the certificate is not explicitly trusted, we
         // need to prompt the user
         if (!isExplicitlyTrusted(chain, authType)) {
 
@@ -203,9 +203,9 @@
             }
         }
     }
-    
+
     /**
-     * Check system, user and custom trust manager  
+     * Check system, user and custom trust manager
      */
     private void checkAllManagers(X509Certificate[] chain, String authType) throws CertificateException {
         // First try catrustmanager, then try usertrustmanager, and finally, check temp trusted certs
@@ -218,15 +218,15 @@
                 if (!temporarilyTrusted.contains(chain[0]))
                     throw (CertificateException) uex;
             }
-        }        
+        }
     }
-    
+
     /**
      * Return if the user explicitly trusted this i.e. in userTrustManager or temporarilyTrusted
      */
     private boolean isExplicitlyTrusted(X509Certificate[] chain, String authType) {
         boolean explicitlyTrusted = false;
-        
+
         try {
             userTrustManager.checkServerTrusted(chain, authType);
             explicitlyTrusted = true;
@@ -238,7 +238,7 @@
         }
 
         return explicitlyTrusted;
-        
+
     }
 
     public X509Certificate[] getAcceptedIssuers() {
@@ -248,39 +248,39 @@
 
     /**
      * Temporarily trust the given cert (runtime)
-     * 
+     *
      * @param c The certificate to trust
      */
     private void temporarilyTrust(Certificate c) {
         temporarilyTrusted.add(c);
     }
-    
+
     /**
-     * Ask user if the certificate should be trusted 
-     * 
+     * Ask user if the certificate should be trusted
+     *
      * @param chain The certificate chain
      * @param authType The authentication algorithm
      * @return user's response
      */
-    private boolean askUser(X509Certificate[] chain, String authType, 
-                            boolean isTrusted, boolean hostMatched, 
+    private boolean askUser(X509Certificate[] chain, String authType,
+                            boolean isTrusted, boolean hostMatched,
                             String hostName) {
-    	return SecurityWarningDialog.showCertWarningDialog(
-    	                SecurityWarningDialog.AccessType.UNVERIFIED, null, 
-    	                new HttpsCertVerifier(this, chain, authType, 
-    	                                      isTrusted, hostMatched,
-    	                                      hostName)); 
+        return SecurityWarningDialog.showCertWarningDialog(
+                        SecurityWarningDialog.AccessType.UNVERIFIED, null,
+                        new HttpsCertVerifier(this, chain, authType,
+                                              isTrusted, hostMatched,
+                                              hostName));
     }
 
     /**
      * Return an instance of this singleton
-     * 
+     *
      * @return The instance
      */
     public static VariableX509TrustManager getInstance() {
         if (instance == null)
             instance = new VariableX509TrustManager();
-        
+
         return instance;
     }
 }
--- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java	Fri Jul 23 10:53:49 2010 +0100
@@ -68,269 +68,268 @@
 import net.sourceforge.jnlp.tools.KeyTool;
 
 public class CertificatePane extends JPanel {
-	
-	/**
-	 * The certificates stored in the user's trusted.certs file.
-	 */
-	private ArrayList<X509Certificate> certs = null;
-	
-	/**
-	 * "Issued To" and "Issued By" string pairs for certs.
-	 */
-	private String[][] issuedToAndBy = null;
-	private final String[] columnNames = { "Issued To", "Issued By" };
-	
-	private JTable table;
-	
-	private JDialog parent;
+
+        /**
+         * The certificates stored in the user's trusted.certs file.
+         */
+        private ArrayList<X509Certificate> certs = null;
+
+        /**
+         * "Issued To" and "Issued By" string pairs for certs.
+         */
+        private String[][] issuedToAndBy = null;
+        private final String[] columnNames = { "Issued To", "Issued By" };
+
+        private JTable table;
 
-	private JComponent defaultFocusComponent = null;
+        private JDialog parent;
+
+        private JComponent defaultFocusComponent = null;
+
+        /**
+         * The KeyStore associated with the user's trusted.certs file.
+         */
+        private KeyStore keyStore = null;
+
+        public CertificatePane(JDialog parent) {
+                super();
+                this.parent = parent;
+                initializeKeyStore();
+                addComponents();
+        }
 
-	/**
-	 * The KeyStore associated with the user's trusted.certs file.
-	 */
-	private KeyStore keyStore = null;
-	
-	public CertificatePane(JDialog parent) {
-		super();
-		this.parent = parent;
-		initializeKeyStore();
-		addComponents();
-	}
-	
-	/**
-	 * Reads the user's trusted.cacerts keystore.
-	 */
-	private void initializeKeyStore() {
-		try {
-			keyStore = SecurityUtil.getUserKeyStore();
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-	}
-	
-	//create the GUI here.
-	protected void addComponents() {
-		readKeyStore();
-		
-		JPanel main = new JPanel(new BorderLayout());
-		
-		JPanel tablePanel = new JPanel(new BorderLayout());
-		
-		//Table
-		DefaultTableModel tableModel 
-			= new DefaultTableModel(issuedToAndBy, columnNames);
-		table = new JTable(tableModel);
-		table.getTableHeader().setReorderingAllowed(false);
-		table.setFillsViewportHeight(true);
-		JScrollPane tablePane = new JScrollPane(table);
-		tablePane.setPreferredSize(new Dimension(500,200));
-		tablePane.setSize(new Dimension(500,200));
-		tablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
-		
-		JTabbedPane tabbedPane = new JTabbedPane();
-		tabbedPane.addTab("User", tablePane);
-		JPanel buttonPanel = new JPanel(new FlowLayout());
+        /**
+         * Reads the user's trusted.cacerts keystore.
+         */
+        private void initializeKeyStore() {
+                try {
+                        keyStore = SecurityUtil.getUserKeyStore();
+                } catch (Exception e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                }
+        }
+
+        //create the GUI here.
+        protected void addComponents() {
+                readKeyStore();
+
+                JPanel main = new JPanel(new BorderLayout());
+
+                JPanel tablePanel = new JPanel(new BorderLayout());
+
+                //Table
+                DefaultTableModel tableModel
+                        = new DefaultTableModel(issuedToAndBy, columnNames);
+                table = new JTable(tableModel);
+                table.getTableHeader().setReorderingAllowed(false);
+                table.setFillsViewportHeight(true);
+                JScrollPane tablePane = new JScrollPane(table);
+                tablePane.setPreferredSize(new Dimension(500,200));
+                tablePane.setSize(new Dimension(500,200));
+                tablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+
+                JTabbedPane tabbedPane = new JTabbedPane();
+                tabbedPane.addTab("User", tablePane);
+                JPanel buttonPanel = new JPanel(new FlowLayout());
+
+                String[] buttonNames = {"Import", "Export", "Remove", "Details"};
+                char[] buttonMnemonics = {      KeyEvent.VK_I,
+                                                                        KeyEvent.VK_E,
+                                                                        KeyEvent.VK_M,
+                                                                        KeyEvent.VK_D};
+                ActionListener[] listeners = {  new ImportButtonListener(),
+                                                                                new ExportButtonListener(),
+                                                                                new RemoveButtonListener(),
+                                                                                new DetailsButtonListener() };
+                JButton button;
 
-		String[] buttonNames = {"Import", "Export", "Remove", "Details"};
-		char[] buttonMnemonics = {	KeyEvent.VK_I, 
-									KeyEvent.VK_E, 
-									KeyEvent.VK_M,
-									KeyEvent.VK_D};
-		ActionListener[] listeners = {	new ImportButtonListener(),
-										new ExportButtonListener(),
-										new RemoveButtonListener(),
-										new DetailsButtonListener() };
-		JButton button;
-		
-		//get the max width
-		int maxWidth = 0;
-		for (int i = 0; i < buttonNames.length; i++) {
-			button = new JButton(buttonNames[i]);
-			maxWidth = Math.max(maxWidth, button.getMinimumSize().width);
-		}
-		
-		for (int i = 0; i < buttonNames.length; i++) {
-			button = new JButton(buttonNames[i]);
-			button.setMnemonic(buttonMnemonics[i]);
-			button.addActionListener(listeners[i]);
-			button.setSize(maxWidth, button.getSize().height);
-			buttonPanel.add(button);
-		}
-		
-		tablePanel.add(tabbedPane, BorderLayout.CENTER);
-		tablePanel.add(buttonPanel, BorderLayout.SOUTH);
-		
-		JPanel closePanel = new JPanel(new BorderLayout());
-		closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7));
-		JButton closeButton = new JButton("Close");
-		closeButton.addActionListener(new CloseButtonListener());
-		defaultFocusComponent = closeButton;
-		closePanel.add(closeButton, BorderLayout.EAST);
-		
-		main.add(tablePanel, BorderLayout.CENTER);
-		main.add(closePanel, BorderLayout.SOUTH);
-		
-		add(main);
+                //get the max width
+                int maxWidth = 0;
+                for (int i = 0; i < buttonNames.length; i++) {
+                        button = new JButton(buttonNames[i]);
+                        maxWidth = Math.max(maxWidth, button.getMinimumSize().width);
+                }
+
+                for (int i = 0; i < buttonNames.length; i++) {
+                        button = new JButton(buttonNames[i]);
+                        button.setMnemonic(buttonMnemonics[i]);
+                        button.addActionListener(listeners[i]);
+                        button.setSize(maxWidth, button.getSize().height);
+                        buttonPanel.add(button);
+                }
+
+                tablePanel.add(tabbedPane, BorderLayout.CENTER);
+                tablePanel.add(buttonPanel, BorderLayout.SOUTH);
+
+                JPanel closePanel = new JPanel(new BorderLayout());
+                closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7));
+                JButton closeButton = new JButton("Close");
+                closeButton.addActionListener(new CloseButtonListener());
+                defaultFocusComponent = closeButton;
+                closePanel.add(closeButton, BorderLayout.EAST);
+
+                main.add(tablePanel, BorderLayout.CENTER);
+                main.add(closePanel, BorderLayout.SOUTH);
+
+                add(main);
+
+        }
+
+        /**
+         * Read in the optionPane's keystore to issuedToAndBy.
+         */
+        private void readKeyStore() {
+
+                Enumeration<String> aliases = null;
+                certs = new ArrayList<X509Certificate>();
+                try {
 
-	}	
-	
-	/**
-	 * Read in the optionPane's keystore to issuedToAndBy.
-	 */
-	private void readKeyStore() {
-		
-		Enumeration<String> aliases = null;
-		certs = new ArrayList<X509Certificate>();
-		try {
-			
-			//Get all of the X509Certificates and put them into an ArrayList
-			aliases = keyStore.aliases();
-			while (aliases.hasMoreElements()) {
-				Certificate c = keyStore.getCertificate(aliases.nextElement());
-				if (c instanceof X509Certificate)
-					certs.add((X509Certificate)c);
-			}
+                        //Get all of the X509Certificates and put them into an ArrayList
+                        aliases = keyStore.aliases();
+                        while (aliases.hasMoreElements()) {
+                                Certificate c = keyStore.getCertificate(aliases.nextElement());
+                                if (c instanceof X509Certificate)
+                                        certs.add((X509Certificate)c);
+                        }
+
+                        //get the publisher and root information
+                        issuedToAndBy = new String[certs.size()][2];
+                        for (int i = 0; i < certs.size(); i++) {
+                    X509Certificate c = certs.get(i);
+                                issuedToAndBy[i][0] =
+                                        SecurityUtil.getCN(c.getSubjectX500Principal().getName());
+                                issuedToAndBy[i][1] =
+                                        SecurityUtil.getCN(c.getIssuerX500Principal().getName());
+                }
+                } catch (Exception e) {
+                        //TODO
+                }
+        }
 
-			//get the publisher and root information
-			issuedToAndBy = new String[certs.size()][2];
-			for (int i = 0; i < certs.size(); i++) {
-	            X509Certificate c = certs.get(i);
-				issuedToAndBy[i][0] = 
-					SecurityUtil.getCN(c.getSubjectX500Principal().getName());
-				issuedToAndBy[i][1] = 
-					SecurityUtil.getCN(c.getIssuerX500Principal().getName());
-	        }
-		} catch (Exception e) {
-			//TODO
-		}
-	}
-	
-	/**
-	 * Re-reads the certs file and repopulates the JTable. This is typically
-	 * called after a certificate was deleted from the keystore.
-	 */
-	private void repopulateTable() {
-		initializeKeyStore();
-		readKeyStore();
-		DefaultTableModel tableModel 
-			= new DefaultTableModel(issuedToAndBy, columnNames);
-		
-		table.setModel(tableModel);
-		repaint();
-	}
+        /**
+         * Re-reads the certs file and repopulates the JTable. This is typically
+         * called after a certificate was deleted from the keystore.
+         */
+        private void repopulateTable() {
+                initializeKeyStore();
+                readKeyStore();
+                DefaultTableModel tableModel
+                        = new DefaultTableModel(issuedToAndBy, columnNames);
 
-	public void focusOnDefaultButton() {
-	    if (defaultFocusComponent != null) {
-	        defaultFocusComponent.requestFocusInWindow();
-	    }
-	}
-	
-	private class ImportButtonListener implements ActionListener {
+                table.setModel(tableModel);
+                repaint();
+        }
+
+        public void focusOnDefaultButton() {
+            if (defaultFocusComponent != null) {
+                defaultFocusComponent.requestFocusInWindow();
+            }
+        }
+
+        private class ImportButtonListener implements ActionListener {
         public void actionPerformed(ActionEvent e) {
 
-        	JFileChooser chooser = new JFileChooser();
-        	int returnVal = chooser.showOpenDialog(parent);
-        	if(returnVal == JFileChooser.APPROVE_OPTION) {
-        		try {
-        			KeyTool kt = new KeyTool();
-        			kt.importCert(chooser.getSelectedFile());
-        			repopulateTable();
-        		} catch (Exception ex) {
-        			// TODO: handle exception
-        			ex.printStackTrace();
-        		}
-        	}
+                JFileChooser chooser = new JFileChooser();
+                int returnVal = chooser.showOpenDialog(parent);
+                if(returnVal == JFileChooser.APPROVE_OPTION) {
+                        try {
+                                KeyTool kt = new KeyTool();
+                                kt.importCert(chooser.getSelectedFile());
+                                repopulateTable();
+                        } catch (Exception ex) {
+                                // TODO: handle exception
+                                ex.printStackTrace();
+                        }
+                }
         }
     }
-	
-	private class ExportButtonListener implements ActionListener {
-		public void actionPerformed(ActionEvent e) {
-			//For now, let's just export in -rfc mode as keytool does.
-			//we'll write to a file the exported certificate.
+
+        private class ExportButtonListener implements ActionListener {
+                public void actionPerformed(ActionEvent e) {
+                        //For now, let's just export in -rfc mode as keytool does.
+                        //we'll write to a file the exported certificate.
 
 
-			try {
-				int selectedRow = table.getSelectedRow();
-				if (selectedRow != -1) {
-		        	JFileChooser chooser = new JFileChooser();
-		        	int returnVal = chooser.showOpenDialog(parent);
-		        	if(returnVal == JFileChooser.APPROVE_OPTION) {
-		        		String alias = keyStore.getCertificateAlias(certs
-		        				.get(selectedRow));
-		        		if (alias != null) {
-		        			Certificate c = keyStore.getCertificate(alias);
-		        			PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath());
-		        			KeyTool.dumpCert(c, ps);
-		        			repopulateTable();
-		        		}
-		        	}
-				}
-			} catch (Exception ex) {
-				// TODO
-				ex.printStackTrace();
-			}
-		}
-	}
-	
-	private class RemoveButtonListener implements ActionListener {
-		
-		/**
-		 * Removes a certificate from the keyStore and writes changes to disk.
-		 */
+                        try {
+                                int selectedRow = table.getSelectedRow();
+                                if (selectedRow != -1) {
+                                JFileChooser chooser = new JFileChooser();
+                                int returnVal = chooser.showOpenDialog(parent);
+                                if(returnVal == JFileChooser.APPROVE_OPTION) {
+                                        String alias = keyStore.getCertificateAlias(certs
+                                                        .get(selectedRow));
+                                        if (alias != null) {
+                                                Certificate c = keyStore.getCertificate(alias);
+                                                PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath());
+                                                KeyTool.dumpCert(c, ps);
+                                                repopulateTable();
+                                        }
+                                }
+                                }
+                        } catch (Exception ex) {
+                                // TODO
+                                ex.printStackTrace();
+                        }
+                }
+        }
+
+        private class RemoveButtonListener implements ActionListener {
+
+                /**
+                 * Removes a certificate from the keyStore and writes changes to disk.
+                 */
         public void actionPerformed(ActionEvent e) {
-        	
-        	try {
-        		int selectedRow = table.getSelectedRow();
-        		
-        		if (selectedRow != -1){
-        			String alias = keyStore.getCertificateAlias(certs.get(selectedRow));
-        			if (alias != null) {
-        				
-        				int i = JOptionPane.showConfirmDialog(parent, 
-        						"Are you sure you want to remove the selected certificate?", 
-        						"Confirmation - Remove Certificate?", 
-        						JOptionPane.YES_NO_OPTION);
-        				if (i == 0) {
-        					keyStore.deleteEntry(alias);
-        					FileOutputStream fos = new FileOutputStream(
-        						SecurityUtil.getTrustedCertsFilename());
-        					keyStore.store(fos, SecurityUtil.getTrustedCertsPassword());
-        					fos.close();
-        				}
-        			}
-        			repopulateTable();
-        		}
-        	} catch (Exception ex) {
-        		// TODO
-				ex.printStackTrace();
-        	}
+
+                try {
+                        int selectedRow = table.getSelectedRow();
+
+                        if (selectedRow != -1){
+                                String alias = keyStore.getCertificateAlias(certs.get(selectedRow));
+                                if (alias != null) {
+
+                                        int i = JOptionPane.showConfirmDialog(parent,
+                                                        "Are you sure you want to remove the selected certificate?",
+                                                        "Confirmation - Remove Certificate?",
+                                                        JOptionPane.YES_NO_OPTION);
+                                        if (i == 0) {
+                                                keyStore.deleteEntry(alias);
+                                                FileOutputStream fos = new FileOutputStream(
+                                                        SecurityUtil.getTrustedCertsFilename());
+                                                keyStore.store(fos, SecurityUtil.getTrustedCertsPassword());
+                                                fos.close();
+                                        }
+                                }
+                                repopulateTable();
+                        }
+                } catch (Exception ex) {
+                        // TODO
+                                ex.printStackTrace();
+                }
 
         }
     }
-	
-	private class DetailsButtonListener implements ActionListener {
-		
-		/**
-		 * Shows the details of a trusted certificate.
-		 */
+
+        private class DetailsButtonListener implements ActionListener {
+
+                /**
+                 * Shows the details of a trusted certificate.
+                 */
         public void actionPerformed(ActionEvent e) {
-        	
-        	int selectedRow = table.getSelectedRow();
-        	if (selectedRow != -1 && selectedRow >= 0) {
-        		X509Certificate c = certs.get(selectedRow);
-        		SecurityWarningDialog.showSingleCertInfoDialog(c, parent);
-        	}
+
+                int selectedRow = table.getSelectedRow();
+                if (selectedRow != -1 && selectedRow >= 0) {
+                        X509Certificate c = certs.get(selectedRow);
+                        SecurityWarningDialog.showSingleCertInfoDialog(c, parent);
+                }
         }
     }
 
-	private class CloseButtonListener implements ActionListener {
-	    @Override
-	    public void actionPerformed(ActionEvent e) {
-	        parent.dispose();
-	    }
-	}
-	
+        private class CloseButtonListener implements ActionListener {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                parent.dispose();
+            }
+        }
+
 }
-
--- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java	Fri Jul 23 10:53:49 2010 +0100
@@ -54,9 +54,9 @@
     private static final String dialogTitle = "Certificates";
 
     CertificatePane panel;
-    
-	public CertificateViewer() {
-	    super((Frame)null, dialogTitle, true);
+
+        public CertificateViewer() {
+            super((Frame)null, dialogTitle, true);
 
         Container contentPane = getContentPane();
         contentPane.setLayout(new BorderLayout());
@@ -80,32 +80,32 @@
         };
         addWindowFocusListener(adapter);
 
-		initialized = true;
-	}
-		
-	public boolean isInitialized(){
-		return initialized;
-	}
-	
-	private void centerDialog() {
-		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
-		Dimension dialogSize = getSize();
+                initialized = true;
+        }
+
+        public boolean isInitialized(){
+                return initialized;
+        }
+
+        private void centerDialog() {
+                Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
+                Dimension dialogSize = getSize();
 
-		setLocation((screen.width - dialogSize.width)/2,
-			(screen.height - dialogSize.height)/2);
-	}
-	
-	
-	public static void showCertificateViewer() throws Exception {
-	    setSystemLookAndFeel();
-	    
-		CertificateViewer cv = new CertificateViewer();
-		cv.setResizable(true);
-		cv.centerDialog();
-		cv.setVisible(true);
-		cv.dispose();
-	}
-	
+                setLocation((screen.width - dialogSize.width)/2,
+                        (screen.height - dialogSize.height)/2);
+        }
+
+
+        public static void showCertificateViewer() throws Exception {
+            setSystemLookAndFeel();
+
+                CertificateViewer cv = new CertificateViewer();
+                cv.setResizable(true);
+                cv.centerDialog();
+                cv.setVisible(true);
+                cv.dispose();
+        }
+
     private static void setSystemLookAndFeel() {
         try {
             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
@@ -114,8 +114,7 @@
         }
     }
 
-	public static void main(String[] args) throws Exception {
-		CertificateViewer.showCertificateViewer();
-	}
+        public static void main(String[] args) throws Exception {
+                CertificateViewer.showCertificateViewer();
+        }
 }
-
--- a/netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -24,20 +24,20 @@
  * Extends SingleInstanceService to provide a few additional methods that are
  * required to initialize SingleInstanceService and check things. These methods
  * are not exposed publicly
- * 
+ *
  * @author <a href="mailto:omajid@redhat.com">Omair Majid</a>
- * 
+ *
  */
 interface ExtendedSingleInstanceService extends SingleInstanceService {
 
     /**
      * Check if the instance identified by this jnlp file is already running
-     * 
+     *
      * @param jnlpFile The JNLPFile that specifies the application
-     * 
+     *
      * @throws InstanceExistsException if an instance of this application
      *         already exists
-     * 
+     *
      */
     void checkSingleInstanceRunning(JNLPFile jnlpFile);
 
--- a/netx/net/sourceforge/jnlp/services/InstanceExistsException.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/InstanceExistsException.java	Fri Jul 23 10:53:49 2010 +0100
@@ -17,12 +17,12 @@
 package net.sourceforge.jnlp.services;
 
 /**
- * 
+ *
  * This class represents an exception indicating that an application instance
  * already exists for this jnlp file
- * 
+ *
  * @author <a href="mailto:omajid@redhat.com">Omair Majid</a>
- * 
+ *
  */
 public class InstanceExistsException extends RuntimeException {
 
--- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java	Fri Jul 23 10:53:49 2010 +0100
@@ -127,18 +127,18 @@
     public static SingleInstanceService getSingleInstanceService() {
         return (SingleInstanceService) getService("javax.jnlp.SingleInstanceService");
     }
-    
+
     /**
      * Checks that this application (represented by the jnlp) isnt already running
      * @param jnlpFile the {@link JNLPFile} that specifies the application
-     * 
+     *
      * @throws InstanceExistsException if an instance of this application already exists
      */
     public static void checkExistingSingleInstance(JNLPFile jnlpFile) {
         ExtendedSingleInstanceService esis = (ExtendedSingleInstanceService) getSingleInstanceService();
         esis.checkSingleInstanceRunning(jnlpFile);
     }
-    
+
     /**
      * Returns the service, or null instead of an UnavailableServiceException
      */
@@ -196,9 +196,9 @@
 
                 return result;
             } catch (PrivilegedActionException e) {
-                // Any exceptions thrown by the actual methods are wrapped by a 
-                // InvocationTargetException, which is further wrapped by the 
-                // PrivilegedActionException. Lets unwrap them to make the 
+                // Any exceptions thrown by the actual methods are wrapped by a
+                // InvocationTargetException, which is further wrapped by the
+                // PrivilegedActionException. Lets unwrap them to make the
                 // proxy transparent to the callers
                 if (e.getCause() instanceof InvocationTargetException) {
                     throw e.getCause().getCause();
@@ -222,8 +222,8 @@
     public static boolean checkAccess(SecurityWarningDialog.AccessType type,
             Object... extras) {
         return checkAccess(null, type, extras);
-    }    
-    
+    }
+
     /**
      * Returns whether the app requesting a service is signed. If the app is
      * unsigned, the user is prompted with a dialog asking if the action
@@ -235,33 +235,33 @@
      * message formatting.
      * @return true if the access was granted, false otherwise.
      */
-    public static boolean checkAccess(ApplicationInstance app, 
+    public static boolean checkAccess(ApplicationInstance app,
             SecurityWarningDialog.AccessType type,
-    		Object... extras) {
+                Object... extras) {
 
         if (app == null) {
             app = JNLPRuntime.getApplication();
         }
-        
+
         if (app != null) {
             if (!app.isSigned()) {
-            	final SecurityWarningDialog.AccessType tmpType = type;
-            	final Object[] tmpExtras = extras;
-            	final ApplicationInstance tmpApp = app;
-            	
-            	//We need to do this to allow proper icon loading for unsigned
-            	//applets, otherwise permissions won't be granted to load icons
-            	//from resources.jar.
-            	Object o = AccessController.doPrivileged(new PrivilegedAction() {
+                final SecurityWarningDialog.AccessType tmpType = type;
+                final Object[] tmpExtras = extras;
+                final ApplicationInstance tmpApp = app;
+
+                //We need to do this to allow proper icon loading for unsigned
+                //applets, otherwise permissions won't be granted to load icons
+                //from resources.jar.
+                Object o = AccessController.doPrivileged(new PrivilegedAction() {
                     public Object run() {
-                    	boolean b = SecurityWarningDialog.showAccessWarningDialog(tmpType,
+                        boolean b = SecurityWarningDialog.showAccessWarningDialog(tmpType,
                                 tmpApp.getJNLPFile(), tmpExtras);
-                    	return (Object) new Boolean(b);
+                        return (Object) new Boolean(b);
                     }
                 });
-            	
-            	return ((Boolean)o).booleanValue();
-                 
+
+                return ((Boolean)o).booleanValue();
+
             } else if (app.isSigned()) {
 
                 //just return true here regardless if the app
@@ -273,4 +273,3 @@
         return false; //deny
     }
 }
-
--- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java	Fri Jul 23 10:53:49 2010 +0100
@@ -31,9 +31,9 @@
 
 /**
  * This class represents a Lock for single instance jnlp applications
- * 
+ *
  * The lock is per-session, per user.
- * 
+ *
  * @author <a href="mailto:omajid@redhat.com">Omair Majid</a>
  */
 class SingleInstanceLock {
@@ -47,7 +47,7 @@
 
     /**
      * Create an object to manage the instance lock for the specified JNLP file.
-     * 
+     *
      * @param jnlpFile the jnlpfile to create the lock for
      */
     public SingleInstanceLock(JNLPFile jnlpFile) {
@@ -58,7 +58,7 @@
 
     /**
      * Create/overwrite the instance lock for the jnlp file.
-     * 
+     *
      * @param localPort the network port for the lock
      * @throws IOException on any io problems
      */
@@ -151,7 +151,7 @@
         if (jnlpFile.getFileVersion() != null) {
             initialName = initialName + jnlpFile.getFileVersion().toString();
         }
-        
+
         initialName = initialName + getCurrentDisplay();
         return FileUtils.sanitizeFileName(initialName);
 
@@ -159,7 +159,7 @@
 
     /**
      * Parse the lock file.
-     * 
+     *
      * @throws NumberFormatException
      * @throws IOException
      */
@@ -172,10 +172,10 @@
 
     /**
      * Returns a string identifying this display.
-     * 
+     *
      * Implementation note: On systems with X support, this is the DISPLAY
      * variable
-     * 
+     *
      * @return a string that is guaranteed to be not null.
      */
     private String getCurrentDisplay() {
--- a/netx/net/sourceforge/jnlp/services/XBasicService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XBasicService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -37,7 +37,7 @@
  * The BasicService JNLP service.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.10 $ 
+ * @version $Revision: 1.10 $
  */
 class XBasicService implements BasicService {
 
@@ -88,9 +88,9 @@
      * Return true if the Environment is Offline
      */
     public boolean isOffline() {
-        
+
         URL url = findFirstURLFromJNLPFile();
-        
+
         try {
             url.openConnection().getInputStream().close();
             return false;
@@ -104,34 +104,34 @@
      * Or a default URL if no url found in JNLP file
      */
     private URL findFirstURLFromJNLPFile() {
-        
+
         ApplicationInstance app = JNLPRuntime.getApplication();
-        
+
         if (app != null) {
             JNLPFile jnlpFile = app.getJNLPFile();
-            
+
             URL sourceURL = jnlpFile.getSourceLocation();
             if (sourceURL != null) {
                 return sourceURL;
             }
-            
+
             URL codeBaseURL = jnlpFile.getCodeBase();
             if (codeBaseURL != null) {
                 return codeBaseURL;
             }
-    
+
             InformationDesc informationDesc = jnlpFile.getInformation();
             URL homePage = informationDesc.getHomepage();
             if (homePage != null) {
                 return homePage;
             }
-            
+
             JARDesc[] jarDescs = jnlpFile.getResources().getJARs();
             for (JARDesc jarDesc: jarDescs) {
                 return jarDesc.getLocation();
             }
         }
-        
+
         // this section is only reached if the jnlp file has no jars.
         // that doesnt seem very likely.
         URL arbitraryURL;
@@ -140,7 +140,7 @@
         } catch (MalformedURLException malformedURL) {
             throw new RuntimeException(malformedURL);
         }
-        
+
         return arbitraryURL;
     }
 
@@ -156,7 +156,7 @@
     /**
      * Show a document.
      *
-     * @return whether the document was opened 
+     * @return whether the document was opened
      */
     public boolean showDocument(URL url)  {
         initialize();
@@ -225,10 +225,8 @@
         return JOptionPane.showInputDialog(new JPanel(),
                                            "Browser Location:",
                                            "Specify Browser Location",
-                                           JOptionPane.PLAIN_MESSAGE 
+                                           JOptionPane.PLAIN_MESSAGE
                                           );
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/services/XClipboardService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XClipboardService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -51,31 +51,31 @@
  */
 class XClipboardService implements ClipboardService {
 
-	protected XClipboardService() {
-	}
+        protected XClipboardService() {
+        }
 
-	/**
-	 * Returns the contents of the system clipboard.
-	 */
-	public java.awt.datatransfer.Transferable getContents(){
+        /**
+         * Returns the contents of the system clipboard.
+         */
+        public java.awt.datatransfer.Transferable getContents(){
 
-		if (ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.CLIPBOARD_READ)) {
-			Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
-			return (Transferable) ServiceUtil.createPrivilegedProxy(
-				Transferable.class, t);
-		} else {
-			return null;
-		}
-	}
+                if (ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.CLIPBOARD_READ)) {
+                        Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
+                        return (Transferable) ServiceUtil.createPrivilegedProxy(
+                                Transferable.class, t);
+                } else {
+                        return null;
+                }
+        }
 
-	/**
-	 * Sets the contents of the system clipboard.
-	 */
-	public void setContents(java.awt.datatransfer.Transferable contents) {
-		if (ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.CLIPBOARD_WRITE)) {
-			Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
-				contents, null);
-		}
-	}
+        /**
+         * Sets the contents of the system clipboard.
+         */
+        public void setContents(java.awt.datatransfer.Transferable contents) {
+                if (ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.CLIPBOARD_WRITE)) {
+                        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
+                                contents, null);
+                }
+        }
 
 }
--- a/netx/net/sourceforge/jnlp/services/XDownloadService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XDownloadService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -29,7 +29,7 @@
  * The DownloadService JNLP service.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.7 $ 
+ * @version $Revision: 1.7 $
  */
 class XDownloadService implements DownloadService {
 
@@ -38,7 +38,7 @@
 
     // comments copied from DownloadService interface
 
-    /** 
+    /**
      * Returns a listener that will automatically display download
      * progress to the user.
      */
@@ -46,7 +46,7 @@
         return null;
     }
 
-    /** 
+    /**
      * Returns whether the part in an extension (specified by the
      * url and version) is cached locally.
      */
@@ -54,7 +54,7 @@
         return true;
     }
 
-    /** 
+    /**
      * Returns whether the parts in an extension (specified by the
      * url and version) are cached locally.
      */
@@ -62,7 +62,7 @@
         return true;
     }
 
-    /** 
+    /**
      * Returns whether the part of the calling application is cached
      * locally.  If called by code specified by an extension
      * descriptor, the specified part refers to the extension not
@@ -72,7 +72,7 @@
         return true;
     }
 
-    /** 
+    /**
      * Returns whether all of the parts of the calling application
      * are cached locally.  If called by code in an extension, the
      * part refers the the part of the extension not the
@@ -82,92 +82,92 @@
         return true;
     }
 
-    /** 
+    /**
      * Returns whether the resource is cached locally.  This method
      * only returns true if the resource is specified by the calling
      * application or extension.
-     */ 
+     */
     public boolean isResourceCached(URL ref, String version) {
         return true;
     }
 
-    /** 
+    /**
      * Downloads the parts of an extension.
      *
      * @throws IOException
-     */ 
+     */
     public void loadExtensionPart(URL ref, String version, String[] parts, DownloadServiceListener progress) throws IOException {
     }
 
-    /** 
+    /**
      * Downloads a part of an extension.
      *
      * @throws IOException
-     */ 
+     */
     public void loadExtensionPart(URL ref, String version, String part, DownloadServiceListener progress) throws IOException {
     }
 
-    /** 
+    /**
      * Downloads the parts.
      *
      * @throws IOException
-     */ 
+     */
     public void loadPart(String[] parts, DownloadServiceListener progress) throws IOException {
     }
 
-    /** 
+    /**
      * Downloads the part.
      *
      * @throws IOException
-     */ 
+     */
     public void loadPart(String part, DownloadServiceListener progress) throws IOException {
     }
 
-    /** 
+    /**
      * Downloads a resource.
      *
      * @throws IOException
-     */ 
+     */
     public void loadResource(URL ref, String version, DownloadServiceListener progress) throws IOException {
     }
 
-    /** 
+    /**
      * Notify the system that an extension's part is no longer
      * important to cache.
      *
      * @throws IOException
-     */ 
+     */
     public void removeExtensionPart(URL ref, String version, String part) throws IOException {
     }
 
-    /** 
+    /**
      * Notify the system that an extension's parts are no longer
      * important to cache.
      *
      * @throws IOException
-     */ 
+     */
     public void removeExtensionPart(URL ref, String version, String[] parts) throws IOException {
     }
 
-    /** 
+    /**
      * Notifies the system that a part  is no longer important to
      * cache.
      *
      * @throws IOException
-     */ 
+     */
     public void removePart(String part) throws IOException {
     }
 
-    /** 
+    /**
      * Notifies the system that the parts  is no longer important to
      * cache.
      *
      * @throws IOException
-     */ 
+     */
     public void removePart(String[] parts) throws IOException {
     }
 
-    /** 
+    /**
      * Notifies the system that the resource is no longer important
      * to cache.
      *
@@ -177,5 +177,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/services/XExtendedService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XExtendedService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -26,9 +26,9 @@
 
 /**
  * Implementation of ExtendedService
- * 
+ *
  * @author <a href="mailto:omajid@redhat.com">Omair Majid</a>
- * 
+ *
  */
 public class XExtendedService implements ExtendedService {
 
--- a/netx/net/sourceforge/jnlp/services/XExtensionInstallerService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XExtensionInstallerService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -29,7 +29,7 @@
  * The ExtensionInstallerService JNLP service.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.6 $ 
+ * @version $Revision: 1.6 $
  */
 class XExtensionInstallerService implements ExtensionInstallerService {
 
@@ -119,5 +119,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/services/XFileContents.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XFileContents.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -30,7 +30,7 @@
  * File contents.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.6 $ 
+ * @version $Revision: 1.6 $
  */
 class XFileContents implements FileContents {
 
@@ -119,5 +119,3 @@
 
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/services/XFileSaveService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XFileSaveService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -115,10 +115,10 @@
      */
     private void writeToFile(InputStream stream, File file) throws IOException {
         if (!file.createNewFile()) { //file exists
-            boolean replace = (JOptionPane.showConfirmDialog(null, 
-				file.getAbsolutePath() + " already exists.\n"
-                +"Do you want to replace it?", 
-				"Warning - File Exists", JOptionPane.YES_NO_OPTION) == 0);
+            boolean replace = (JOptionPane.showConfirmDialog(null,
+                                file.getAbsolutePath() + " already exists.\n"
+                +"Do you want to replace it?",
+                                "Warning - File Exists", JOptionPane.YES_NO_OPTION) == 0);
             if (!replace)
                 return;
         } else {
--- a/netx/net/sourceforge/jnlp/services/XJNLPRandomAccessFile.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XJNLPRandomAccessFile.java	Fri Jul 23 10:53:49 2010 +0100
@@ -45,164 +45,164 @@
 
 public class XJNLPRandomAccessFile implements JNLPRandomAccessFile {
 
-	private RandomAccessFile raf;
-	
-	public XJNLPRandomAccessFile(File file, String mode) {
-		try {
-			raf = new RandomAccessFile(file, mode);
-		} catch (FileNotFoundException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-	}
-	
-	public void close() throws IOException {
-		raf.close();
-	}
+        private RandomAccessFile raf;
 
-	public long getFilePointer() throws IOException {
-		return raf.getFilePointer();
-	}
+        public XJNLPRandomAccessFile(File file, String mode) {
+                try {
+                        raf = new RandomAccessFile(file, mode);
+                } catch (FileNotFoundException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                }
+        }
+
+        public void close() throws IOException {
+                raf.close();
+        }
+
+        public long getFilePointer() throws IOException {
+                return raf.getFilePointer();
+        }
 
-	public long length() throws IOException {
-		return raf.length();
-	}
+        public long length() throws IOException {
+                return raf.length();
+        }
 
-	public int read() throws IOException {
-		return raf.read();
-	}
+        public int read() throws IOException {
+                return raf.read();
+        }
 
-	public int read(byte[] b, int off, int len) throws IOException {
-		return raf.read(b, off, len);
-	}
+        public int read(byte[] b, int off, int len) throws IOException {
+                return raf.read(b, off, len);
+        }
 
-	public int read(byte[] b) throws IOException {
-		return raf.read(b);
-	}
+        public int read(byte[] b) throws IOException {
+                return raf.read(b);
+        }
 
-	public boolean readBoolean() throws IOException {
-		return raf.readBoolean();
-	}
+        public boolean readBoolean() throws IOException {
+                return raf.readBoolean();
+        }
 
-	public byte readByte() throws IOException {
-		return raf.readByte();
-	}
+        public byte readByte() throws IOException {
+                return raf.readByte();
+        }
 
-	public char readChar() throws IOException {
-		return raf.readChar();
-	}
+        public char readChar() throws IOException {
+                return raf.readChar();
+        }
 
-	public double readDouble() throws IOException {
-		return raf.readDouble();
-	}
+        public double readDouble() throws IOException {
+                return raf.readDouble();
+        }
 
-	public float readFloat() throws IOException {
-		return raf.readFloat();
-	}
+        public float readFloat() throws IOException {
+                return raf.readFloat();
+        }
 
-	public void readFully(byte[] b) throws IOException {
-		raf.readFully(b);
-	}
+        public void readFully(byte[] b) throws IOException {
+                raf.readFully(b);
+        }
 
-	public void readFully(byte[] b, int off, int len) throws IOException {
-		raf.readFully(b, off, len);
-	}
+        public void readFully(byte[] b, int off, int len) throws IOException {
+                raf.readFully(b, off, len);
+        }
 
-	public int readInt() throws IOException {
-		return raf.readInt();
-	}
+        public int readInt() throws IOException {
+                return raf.readInt();
+        }
 
-	public String readLine() throws IOException {
-		return raf.readLine();
-	}
+        public String readLine() throws IOException {
+                return raf.readLine();
+        }
 
-	public long readLong() throws IOException {
-		return raf.readLong();
-	}
+        public long readLong() throws IOException {
+                return raf.readLong();
+        }
 
-	public short readShort() throws IOException {
-		return raf.readShort();
-	}
+        public short readShort() throws IOException {
+                return raf.readShort();
+        }
 
-	public String readUTF() throws IOException {
-		return raf.readUTF();
-	}
+        public String readUTF() throws IOException {
+                return raf.readUTF();
+        }
 
-	public int readUnsignedByte() throws IOException {
-		return raf.readUnsignedByte();
-	}
+        public int readUnsignedByte() throws IOException {
+                return raf.readUnsignedByte();
+        }
 
-	public int readUnsignedShort() throws IOException {
-		return raf.readUnsignedShort();
-	}
+        public int readUnsignedShort() throws IOException {
+                return raf.readUnsignedShort();
+        }
 
-	public void seek(long pos) throws IOException {
-		raf.seek(pos);
-	}
+        public void seek(long pos) throws IOException {
+                raf.seek(pos);
+        }
 
-	public void setLength(long newLength) throws IOException {
-		raf.setLength(newLength);
-	}
+        public void setLength(long newLength) throws IOException {
+                raf.setLength(newLength);
+        }
 
-	public int skipBytes(int n) throws IOException {
-		return raf.skipBytes(n);
-	}
+        public int skipBytes(int n) throws IOException {
+                return raf.skipBytes(n);
+        }
 
-	public void write(int b) throws IOException {
-		raf.write(b);
+        public void write(int b) throws IOException {
+                raf.write(b);
 
-	}
+        }
 
-	public void write(byte[] b) throws IOException {
-		raf.write(b);
-	}
+        public void write(byte[] b) throws IOException {
+                raf.write(b);
+        }
 
-	public void write(byte[] b, int off, int len) throws IOException {
-		raf.write(b, off, len);
-	}
+        public void write(byte[] b, int off, int len) throws IOException {
+                raf.write(b, off, len);
+        }
 
-	public void writeBoolean(boolean v) throws IOException {
-		raf.writeBoolean(v);
-	}
+        public void writeBoolean(boolean v) throws IOException {
+                raf.writeBoolean(v);
+        }
 
-	public void writeByte(int v) throws IOException {
-		raf.writeByte(v);
-	}
+        public void writeByte(int v) throws IOException {
+                raf.writeByte(v);
+        }
 
-	public void writeBytes(String s) throws IOException {
-		raf.writeBytes(s);
-	}
+        public void writeBytes(String s) throws IOException {
+                raf.writeBytes(s);
+        }
 
-	public void writeChar(int v) throws IOException {
-		raf.writeChar(v);
-	}
+        public void writeChar(int v) throws IOException {
+                raf.writeChar(v);
+        }
 
-	public void writeChars(String s) throws IOException {
-		raf.writeChars(s);
-	}
+        public void writeChars(String s) throws IOException {
+                raf.writeChars(s);
+        }
 
-	public void writeDouble(double v) throws IOException {
-		raf.writeDouble(v);
-	}
+        public void writeDouble(double v) throws IOException {
+                raf.writeDouble(v);
+        }
 
-	public void writeFloat(float v) throws IOException {
-		raf.writeFloat(v);
-	}
+        public void writeFloat(float v) throws IOException {
+                raf.writeFloat(v);
+        }
 
-	public void writeInt(int v) throws IOException {
-		raf.writeInt(v);
-	}
+        public void writeInt(int v) throws IOException {
+                raf.writeInt(v);
+        }
 
-	public void writeLong(long v) throws IOException {
-		raf.writeLong(v);
-	}
+        public void writeLong(long v) throws IOException {
+                raf.writeLong(v);
+        }
 
-	public void writeShort(int v) throws IOException {
-		raf.writeShort(v);
-	}
+        public void writeShort(int v) throws IOException {
+                raf.writeShort(v);
+        }
 
-	public void writeUTF(String str) throws IOException {
-		raf.writeUTF(str);
-	}
+        public void writeUTF(String str) throws IOException {
+                raf.writeUTF(str);
+        }
 
 }
--- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -31,7 +31,7 @@
  * The BasicService JNLP service.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.7 $ 
+ * @version $Revision: 1.7 $
  */
 class XPersistenceService implements PersistenceService {
 
@@ -175,5 +175,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/services/XPrintService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XPrintService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -50,74 +50,74 @@
 
 public class XPrintService implements PrintService {
 
-	// If pj is null, then we do not have a printer to use.
-	private PrinterJob pj;
-	
-	public XPrintService() {
-		pj = PrinterJob.getPrinterJob();
-	}
-	
-	public PageFormat getDefaultPage() {
-		if (pj != null)
-			return pj.defaultPage();
-		else {
-			showWarning();
-			return new PageFormat(); // might not have default settings.
-		}
-	}
-	
-	public PageFormat showPageFormatDialog(PageFormat page) {
-		if (pj != null)
-			return pj.pageDialog(page);
-		else {
-			showWarning();
-			return page;
-		}
+        // If pj is null, then we do not have a printer to use.
+        private PrinterJob pj;
+
+        public XPrintService() {
+                pj = PrinterJob.getPrinterJob();
+        }
+
+        public PageFormat getDefaultPage() {
+                if (pj != null)
+                        return pj.defaultPage();
+                else {
+                        showWarning();
+                        return new PageFormat(); // might not have default settings.
+                }
+        }
+
+        public PageFormat showPageFormatDialog(PageFormat page) {
+                if (pj != null)
+                        return pj.pageDialog(page);
+                else {
+                        showWarning();
+                        return page;
+                }
+
+        }
 
-	}
-	
-	public boolean print(Pageable document) {
-		if (pj != null) {
-			pj.setPageable(document);
-			if (pj.printDialog()) {
-				try {
-					pj.print();
-					return true;
-				} catch(PrinterException pe) {
-					System.err.println("Could not print: " + pe);
-					return false;
-				}
-			}
-		} else 
-			showWarning();
-		
-		return false;
-	}
-	
-	public boolean print(Printable painter) {
-		if (pj != null) {
-			pj.setPrintable(painter);
-			if (pj.printDialog()) {
-				try {
-					pj.print();
-					return true;
-				} catch(PrinterException pe) {
-					System.err.println("Could not print: " + pe);
-					return false;
-				}
-				
-			}
-		} else
-			showWarning();
-		
-		return false;
-	}
-	
-	private void showWarning() {
-		JOptionPane.showMessageDialog(null, 
-				"Unable to find a default printer.", 
-				"Warning", 
-				JOptionPane.WARNING_MESSAGE);
-		System.err.println("Unable to print: Unable to find default printer.");
-	}
+        public boolean print(Pageable document) {
+                if (pj != null) {
+                        pj.setPageable(document);
+                        if (pj.printDialog()) {
+                                try {
+                                        pj.print();
+                                        return true;
+                                } catch(PrinterException pe) {
+                                        System.err.println("Could not print: " + pe);
+                                        return false;
+                                }
+                        }
+                } else
+                        showWarning();
+
+                return false;
+        }
+
+        public boolean print(Printable painter) {
+                if (pj != null) {
+                        pj.setPrintable(painter);
+                        if (pj.printDialog()) {
+                                try {
+                                        pj.print();
+                                        return true;
+                                } catch(PrinterException pe) {
+                                        System.err.println("Could not print: " + pe);
+                                        return false;
+                                }
+
+                        }
+                } else
+                        showWarning();
+
+                return false;
+        }
+
+        private void showWarning() {
+                JOptionPane.showMessageDialog(null,
+                                "Unable to find a default printer.",
+                                "Warning",
+                                JOptionPane.WARNING_MESSAGE);
+                System.err.println("Unable to print: Unable to find default printer.");
+        }
 }
--- a/netx/net/sourceforge/jnlp/services/XServiceManagerStub.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XServiceManagerStub.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -31,7 +31,7 @@
  * Lookup table for services.
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.6 $ 
+ * @version $Revision: 1.6 $
  */
 public class XServiceManagerStub implements ServiceManagerStub {
 
@@ -42,7 +42,7 @@
     // run less code in the secure environment (or avoid privileged
     // actions by giving permission to the code source).
 
-	private static String serviceNames[] = {
+        private static String serviceNames[] = {
         "javax.jnlp.BasicService", // required
         "javax.jnlp.DownloadService", // required
         "javax.jnlp.ExtendedService",
@@ -104,5 +104,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/services/XSingleInstanceService.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/services/XSingleInstanceService.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -33,7 +33,7 @@
 
 /**
  * This class implements SingleInstanceService
- * 
+ *
  * @author <a href="mailto:omajid@redhat.com">Omair Majid</a>
  */
 public class XSingleInstanceService implements ExtendedSingleInstanceService {
@@ -44,7 +44,7 @@
     /**
      * Implements a server that listens for arguments from new instances of this
      * application
-     * 
+     *
      */
     class SingleInstanceServer implements Runnable {
 
@@ -100,7 +100,7 @@
 
     /**
      * Initialize the new SingleInstanceService
-     * 
+     *
      * @throws InstanceAlreadyExistsException if the instance already exists
      */
     public void initializeSingleInstance() {
@@ -121,9 +121,9 @@
 
     /**
      * Check if another instance of this application is already running
-     * 
+     *
      * @param jnlpFile The {@link JNLPFile} that specifies the application
-     * 
+     *
      * @throws InstanceExistsException if an instance of this application
      *         already exists
      */
@@ -147,14 +147,14 @@
     /**
      * Start the listening server to accept arguments from new instances of
      * applications
-     * 
+     *
      * @param lockFile
      *            the {@link SingleInstanceLock} that the server should use
      */
     private void startListeningServer(SingleInstanceLock lockFile) {
         SingleInstanceServer server = new SingleInstanceServer(lockFile);
         Thread serverThread = new Thread(server);
-        /* 
+        /*
          * mark as daemon so the JVM can shutdown if the server is the only
          * thread running
          */
@@ -164,7 +164,7 @@
 
     /**
      * Send the arguments for this application to the main instance
-     * 
+     *
      * @param port the port at which the SingleInstanceServer is listening at
      * @param arguments the new arguments
      * @throws IOException on any io exception
@@ -189,7 +189,7 @@
 
     /**
      * Notify any SingleInstanceListener with new arguments
-     * 
+     *
      * @param arguments the new arguments to the application
      */
     private void notifySingleInstanceListeners(String[] arguments) {
@@ -202,7 +202,7 @@
 
     /**
      * Add the specified SingleInstanceListener
-     * 
+     *
      * @throws InstanceExistsException, which is likely to terminate the
      *         application but not guaranteed to
      */
@@ -218,10 +218,10 @@
 
     /**
      * Remove the specified SingleInstanceListener
-     * 
+     *
      * @throws InstanceExistsException if an instance of this single instance
      *         application already exists
-     * 
+     *
      */
     public void removeSingleInstanceListener(SingleInstanceListener sil) {
         initializeSingleInstance();
--- a/netx/net/sourceforge/jnlp/tools/JarRunner.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/tools/JarRunner.java	Fri Jul 23 10:53:49 2010 +0100
@@ -4,12 +4,12 @@
 public class JarRunner {
 
 
-	public static void main(String[] args) throws Exception{
-		
+        public static void main(String[] args) throws Exception{
+
 
-		//JarSigner.main(args);
-		JarSigner js = new JarSigner();
-		js.verifyJar(args[0]);
-	}
+                //JarSigner.main(args);
+                JarSigner js = new JarSigner();
+                js.verifyJar(args[0]);
+        }
 
 }
--- a/netx/net/sourceforge/jnlp/tools/JarSigner.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/tools/JarSigner.java	Fri Jul 23 10:53:49 2010 +0100
@@ -121,14 +121,14 @@
 
     private boolean alreadyTrustPublisher = false;
     private boolean rootInCacerts = false;
-    
+
     /**
      * The single certPath used in this JarSiging. We're only keeping
      * track of one here, since in practice there's only one signer
      * for a JNLP Application.
      */
     private CertPath certPath = null;
-    
+
     private boolean noSigningIssues = true;
 
     private boolean anyJarsSigned = false;
@@ -149,20 +149,20 @@
      * @see net.sourceforge.jnlp.tools.CertVerifier2#getAlreadyTrustPublisher()
      */
     public boolean getAlreadyTrustPublisher() {
-    	return alreadyTrustPublisher;
+        return alreadyTrustPublisher;
     }
-    
+
     /* (non-Javadoc)
      * @see net.sourceforge.jnlp.tools.CertVerifier2#getRootInCacerts()
      */
     public boolean getRootInCacerts() {
-    	return rootInCacerts;
+        return rootInCacerts;
     }
-    
+
     public CertPath getCertPath() {
-    	return certPath;
+        return certPath;
     }
-    
+
     /* (non-Javadoc)
      * @see net.sourceforge.jnlp.tools.CertVerifier2#hasSigningIssues()
      */
@@ -207,10 +207,10 @@
             unverifiedJars = new ArrayList<String>();
 
             try {
-                
+
                 File jarFile = tracker.getCacheFile(jar.getLocation());
-                
-                // some sort of resource download/cache error. Nothing to add 
+
+                // some sort of resource download/cache error. Nothing to add
                 // in that case ... but don't fail here
                 if (jarFile == null) {
                     return;
@@ -229,7 +229,7 @@
                 }
             } catch (Exception e){
                 // We may catch exceptions from using verifyJar()
-            	// or from checkTrustedCerts	
+                // or from checkTrustedCerts
                 throw e;
             }
         }
@@ -243,7 +243,7 @@
         // certs could be uninitialized if one calls this method directly
         if (certs == null)
             certs = new ArrayList<CertPath>();
-        
+
         try {
             jarFile = new JarFile(jarName, true);
             Vector<JarEntry> entriesVec = new Vector<JarEntry>();
@@ -284,19 +284,19 @@
                     hasUnsignedEntry |= !je.isDirectory() && !isSigned
                                         && !signatureRelated(name);
                     if (isSigned) {
-                    	// TODO: Perhaps we should check here that
-                    	// signers.length is only of size 1, and throw an
-                    	// exception if it's not?
+                        // TODO: Perhaps we should check here that
+                        // signers.length is only of size 1, and throw an
+                        // exception if it's not?
                         for (int i = 0; i < signers.length; i++) {
                             CertPath certPath = signers[i].getSignerCertPath();
                             if (!certs.contains(certPath))
                                 certs.add(certPath);
-                            
+
                             //we really only want the first certPath
                             if (!certPath.equals(this.certPath)){
-                            	this.certPath = certPath;
+                                this.certPath = certPath;
                             }
-                            
+
                             Certificate cert = signers[i].getSignerCertPath()
                                 .getCertificates().get(0);
                             if (cert instanceof X509Certificate) {
@@ -358,7 +358,7 @@
 
         // check if the certs added above are in the trusted path
         checkTrustedCerts();
-        
+
         //anySigned does not guarantee that all files were signed.
         return anySigned && !(hasUnsignedEntry || hasExpiredCert
                               || badKeyUsage || badExtendedKeyUsage || badNetscapeCertType
@@ -370,64 +370,64 @@
      * if a publisher's and/or CA's certificate exists there.
      */
     private void checkTrustedCerts() throws Exception {
-    	if (certPath != null) {
-    		try {
-    			KeyTool kt = new KeyTool();
-    			alreadyTrustPublisher = kt.isTrusted(getPublisher());
-   				rootInCacerts = kt.checkCacertsForCertificate(getRoot());
-    		} catch (Exception e) {
-    			// TODO: Warn user about not being able to
-    			// look through their cacerts/trusted.certs
-    			// file depending on exception.
-    			throw e;
-    		}
-    		
-    		if (!rootInCacerts)
-    			addToDetails(R("SUntrustedCertificate"));
-    		else 
-    			addToDetails(R("STrustedCertificate"));
-    	}
+        if (certPath != null) {
+                try {
+                        KeyTool kt = new KeyTool();
+                        alreadyTrustPublisher = kt.isTrusted(getPublisher());
+                                rootInCacerts = kt.checkCacertsForCertificate(getRoot());
+                } catch (Exception e) {
+                        // TODO: Warn user about not being able to
+                        // look through their cacerts/trusted.certs
+                        // file depending on exception.
+                        throw e;
+                }
+
+                if (!rootInCacerts)
+                        addToDetails(R("SUntrustedCertificate"));
+                else
+                        addToDetails(R("STrustedCertificate"));
+        }
     }
-    
+
     /* (non-Javadoc)
      * @see net.sourceforge.jnlp.tools.CertVerifier2#getPublisher()
      */
     public Certificate getPublisher() {
-    	if (certPath != null) {
-    		List<? extends Certificate> certList 
-			= certPath.getCertificates();
-    		if (certList.size() > 0) {
-    			return (Certificate)certList.get(0);
-    		} else {
-    			return null;
-    		}
-    	} else {
-    		return null;
-    	}
+        if (certPath != null) {
+                List<? extends Certificate> certList
+                        = certPath.getCertificates();
+                if (certList.size() > 0) {
+                        return (Certificate)certList.get(0);
+                } else {
+                        return null;
+                }
+        } else {
+                return null;
+        }
     }
-    
+
     /* (non-Javadoc)
      * @see net.sourceforge.jnlp.tools.CertVerifier2#getRoot()
      */
     public Certificate getRoot() {
-    	if (certPath != null) {
-    		List<? extends Certificate> certList 
-			= certPath.getCertificates();
-    		if (certList.size() > 0) {
-    			return (Certificate)certList.get(
-    				certList.size() - 1);
-    		} else {
-    			return null;
-    		}
-    	} else {
-    		return null;
-    	}
+        if (certPath != null) {
+                List<? extends Certificate> certList
+                        = certPath.getCertificates();
+                if (certList.size() > 0) {
+                        return (Certificate)certList.get(
+                                certList.size() - 1);
+                } else {
+                        return null;
+                }
+        } else {
+                return null;
+        }
     }
-    
-	private void addToDetails(String detail) {
-		if (!details.contains(detail))
-			details.add(detail);
-	}
+
+        private void addToDetails(String detail) {
+                if (!details.contains(detail))
+                        details.add(detail);
+        }
 
     Hashtable<Certificate, String> storeHash =
         new Hashtable<Certificate, String>();
@@ -539,7 +539,3 @@
     }
 
 }
-
-
-
-
--- a/netx/net/sourceforge/jnlp/tools/KeyTool.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java	Fri Jul 23 10:53:49 2010 +0100
@@ -58,142 +58,142 @@
  */
 public class KeyTool {
 
-	// The user's keystore.
-	private KeyStore usercerts = null;
-	// JDK cacerts
-	private KeyStore cacerts = null;
-	// System ca-bundle.crt
-	private KeyStore systemcerts = null;
-	
-	private String fullCertPath = SecurityUtil.getTrustedCertsFilename();
+        // The user's keystore.
+        private KeyStore usercerts = null;
+        // JDK cacerts
+        private KeyStore cacerts = null;
+        // System ca-bundle.crt
+        private KeyStore systemcerts = null;
+
+        private String fullCertPath = SecurityUtil.getTrustedCertsFilename();
 
-	private FileOutputStream fos = null;
+        private FileOutputStream fos = null;
+
+        /**
+         * Whether we trust the system cacerts file.
+         */
+        private boolean trustcacerts = true;
+
+        /**
+         * Whether we print certificates in rfc, base64 encoding.
+         */
+        private boolean rfc = true;
 
-	/**
-	 * Whether we trust the system cacerts file.
-	 */
-	private boolean trustcacerts = true;
-	
-	/**
-	 * Whether we print certificates in rfc, base64 encoding.
-	 */
-	private boolean rfc = true;
-	
-	private final char[] password = "changeit".toCharArray();
+        private final char[] password = "changeit".toCharArray();
+
+        /**
+         * Whether we prompt for user input.
+         */
+        private boolean noprompt = true;
+
+        public KeyTool() throws Exception {
 
-	/**
-	 * Whether we prompt for user input.
-	 */
-	private boolean noprompt = true;
-	
-	public KeyTool() throws Exception {
+                // Initialize all the keystores.
+                usercerts = SecurityUtil.getUserKeyStore();
+                cacerts = SecurityUtil.getCacertsKeyStore();
+                systemcerts = SecurityUtil.getSystemCertStore();
+        }
 
-		// Initialize all the keystores.
-		usercerts = SecurityUtil.getUserKeyStore();
-		cacerts = SecurityUtil.getCacertsKeyStore(); 
-		systemcerts = SecurityUtil.getSystemCertStore();
-	}
+        /**
+         * Adds a trusted certificate to the user's keystore.
+         * @return true if the add was successful, false otherwise.
+         */
+        public boolean importCert(File file) throws Exception {
 
-	/**
-	 * Adds a trusted certificate to the user's keystore.
-	 * @return true if the add was successful, false otherwise.
-	 */
-	public boolean importCert(File file) throws Exception {
-	
-		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
-		CertificateFactory cf = CertificateFactory.getInstance("X509");
-		X509Certificate cert = null;
-		
-		if (bis.available() >= 1) {
-			try {
-			cert = (X509Certificate)cf.generateCertificate(bis);
-			} catch (ClassCastException cce) {
-				throw new Exception("Input file is not an X509 Certificate");
-			} catch (CertificateException ce) {
-				throw new Exception("Input file is not an X509 Certificate");
-			}
-		}
-	
-		return importCert((Certificate)cert);
-	}
-	
-	/**
-	 * Adds a trusted certificate to the user's keystore.
-	 * @return true if the add was successful, false otherwise.
-	 */
-	public boolean importCert(Certificate cert) throws Exception {
+                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
+                CertificateFactory cf = CertificateFactory.getInstance("X509");
+                X509Certificate cert = null;
+
+                if (bis.available() >= 1) {
+                        try {
+                        cert = (X509Certificate)cf.generateCertificate(bis);
+                        } catch (ClassCastException cce) {
+                                throw new Exception("Input file is not an X509 Certificate");
+                        } catch (CertificateException ce) {
+                                throw new Exception("Input file is not an X509 Certificate");
+                        }
+                }
+
+                return importCert((Certificate)cert);
+        }
+
+        /**
+         * Adds a trusted certificate to the user's keystore.
+         * @return true if the add was successful, false otherwise.
+         */
+        public boolean importCert(Certificate cert) throws Exception {
 
-		String alias = usercerts.getCertificateAlias(cert);
+                String alias = usercerts.getCertificateAlias(cert);
 
-		if (alias != null) { //cert already exists
-			return true;
-		} else {
-			String newAlias = getRandomAlias();
-			//check to make sure this alias doesn't exist
-			while (usercerts.getCertificate(newAlias) != null)
-				newAlias = getRandomAlias();
-			return addTrustedCert(newAlias, cert);
-		}
-	}
+                if (alias != null) { //cert already exists
+                        return true;
+                } else {
+                        String newAlias = getRandomAlias();
+                        //check to make sure this alias doesn't exist
+                        while (usercerts.getCertificate(newAlias) != null)
+                                newAlias = getRandomAlias();
+                        return addTrustedCert(newAlias, cert);
+                }
+        }
 
-	/**
-	 * Generates a random alias for storing a trusted Certificate.
-	 */
-	private String getRandomAlias() {
-		Random r = new Random();
-		String token = Long.toString(Math.abs(r.nextLong()), 36);
-		return "trustedCert-" + token;
-	}
-	
-	/**
+        /**
+         * Generates a random alias for storing a trusted Certificate.
+         */
+        private String getRandomAlias() {
+                Random r = new Random();
+                String token = Long.toString(Math.abs(r.nextLong()), 36);
+                return "trustedCert-" + token;
+        }
+
+        /**
      * Prints all keystore entries.
      */
-	private void doPrintEntries(PrintStream out) throws Exception {
+        private void doPrintEntries(PrintStream out) throws Exception {
+
+                out.println("KeyStore type: " + usercerts.getType());
+                out.println("KeyStore provider: " + usercerts.getProvider().toString());
+                out.println();
 
-		out.println("KeyStore type: " + usercerts.getType());
-		out.println("KeyStore provider: " + usercerts.getProvider().toString());
-		out.println();
-		
-		for (Enumeration<String> e = usercerts.aliases(); e.hasMoreElements();) {
-			String alias = e.nextElement();
-			doPrintEntry(alias, out, false);
-		}
-	}
-	
+                for (Enumeration<String> e = usercerts.aliases(); e.hasMoreElements();) {
+                        String alias = e.nextElement();
+                        doPrintEntry(alias, out, false);
+                }
+        }
+
     /**
      * Prints a single keystore entry.
      */
-	private void doPrintEntry(String alias, PrintStream out,
-			boolean printWarning) throws Exception {
+        private void doPrintEntry(String alias, PrintStream out,
+                        boolean printWarning) throws Exception {
 
-		if (usercerts.containsAlias(alias) == false) {
-			throw new Exception("Alias does not exist");
-		}
+                if (usercerts.containsAlias(alias) == false) {
+                        throw new Exception("Alias does not exist");
+                }
 
-		if (usercerts.entryInstanceOf(alias, 
-				KeyStore.TrustedCertificateEntry.class)) {
-			Certificate cert = usercerts.getCertificate(alias);
+                if (usercerts.entryInstanceOf(alias,
+                                KeyStore.TrustedCertificateEntry.class)) {
+                        Certificate cert = usercerts.getCertificate(alias);
 
-			out.println("Alias: " + alias);
-			out.println("Date Created: " + usercerts.getCreationDate(alias));
-			out.println("Subject: " + SecurityUtil.getCN(((X509Certificate)usercerts
-				.getCertificate(alias)).getSubjectX500Principal().getName()));
-			out.println("Certificate fingerprint (MD5): "
-					+ getCertFingerPrint("MD5", cert));
-			out.println();
-		}
-	}
+                        out.println("Alias: " + alias);
+                        out.println("Date Created: " + usercerts.getCreationDate(alias));
+                        out.println("Subject: " + SecurityUtil.getCN(((X509Certificate)usercerts
+                                .getCertificate(alias)).getSubjectX500Principal().getName()));
+                        out.println("Certificate fingerprint (MD5): "
+                                        + getCertFingerPrint("MD5", cert));
+                        out.println();
+                }
+        }
 
     /**
      * Gets the requested finger print of the certificate.
      */
-	private String getCertFingerPrint(String mdAlg, Certificate cert)
-		throws Exception {
-		byte[] encCertInfo = cert.getEncoded();
-		MessageDigest md = MessageDigest.getInstance(mdAlg);
-		byte[] digest = md.digest(encCertInfo);
-		return toHexString(digest);
-	}
+        private String getCertFingerPrint(String mdAlg, Certificate cert)
+                throws Exception {
+                byte[] encCertInfo = cert.getEncoded();
+                MessageDigest md = MessageDigest.getInstance(mdAlg);
+                byte[] digest = md.digest(encCertInfo);
+                return toHexString(digest);
+        }
 
     /**
      * Converts a byte to hex digit and writes to the supplied buffer
@@ -222,42 +222,42 @@
         return buf.toString();
     }
 
-	/**
-	 * Adds a certificate to the keystore, and writes new keystore to disk.
-	 */
+        /**
+         * Adds a certificate to the keystore, and writes new keystore to disk.
+         */
     private boolean addTrustedCert(String alias, Certificate cert)
-    	throws Exception {
-    	
-    	if (isSelfSigned((X509Certificate)cert)) {
-			//will throw exception if this fails
-    		cert.verify(cert.getPublicKey());
-		}
-    
-    	if (noprompt) {
-    		usercerts.setCertificateEntry(alias, cert);
-			fos = new FileOutputStream(fullCertPath);
-			usercerts.store(fos, password);
-			fos.close();
-    		return true;
-    	}
-    	
-    	return false;
-    }    
-    
+        throws Exception {
+
+        if (isSelfSigned((X509Certificate)cert)) {
+                        //will throw exception if this fails
+                cert.verify(cert.getPublicKey());
+                }
+
+        if (noprompt) {
+                usercerts.setCertificateEntry(alias, cert);
+                        fos = new FileOutputStream(fullCertPath);
+                        usercerts.store(fos, password);
+                        fos.close();
+                return true;
+        }
+
+        return false;
+    }
+
     /**
      * Returns true if the given certificate is trusted, false otherwise.
      */
     public boolean isTrusted(Certificate cert) throws Exception {
-    	if (cert != null) {
-    		if (usercerts.getCertificateAlias(cert) != null) {
-    			return true; // found in own keystore
-    		}
-    		return false;
-    	} else {
-    		return false;
-    	}
+        if (cert != null) {
+                if (usercerts.getCertificateAlias(cert) != null) {
+                        return true; // found in own keystore
+                }
+                return false;
+        } else {
+                return false;
+        }
     }
-    
+
     /**
      * Returns true if the certificate is self-signed, false otherwise.
      */
@@ -273,27 +273,27 @@
      * false otherwise
      */
     public boolean checkCacertsForCertificate(Certificate c) throws Exception {
-    	if (c != null) {
+        if (c != null) {
 
-			String alias = null;
+                        String alias = null;
 
-			//first try jdk cacerts.
-			if (cacerts != null) {
-    			alias = cacerts.getCertificateAlias(c);
+                        //first try jdk cacerts.
+                        if (cacerts != null) {
+                        alias = cacerts.getCertificateAlias(c);
 
-				//if we can't find it here, try the system certs.
-				if (alias == null && systemcerts != null)
-					alias = systemcerts.getCertificateAlias(c);
-			} 
-			//otherwise try the system certs if you can't use the jdk certs.
-			else if (systemcerts != null)
-				alias = systemcerts.getCertificateAlias(c);
+                                //if we can't find it here, try the system certs.
+                                if (alias == null && systemcerts != null)
+                                        alias = systemcerts.getCertificateAlias(c);
+                        }
+                        //otherwise try the system certs if you can't use the jdk certs.
+                        else if (systemcerts != null)
+                                alias = systemcerts.getCertificateAlias(c);
 
-    		return (alias != null);
-    	} else 
-    		return false;
+                return (alias != null);
+        } else
+                return false;
     }
-    
+
     /**
      * Establishes a certificate chain (using trusted certificates in the
      * keystore), starting with the user certificate
@@ -312,16 +312,16 @@
             PublicKey origPubKey = userCert.getPublicKey();
             PublicKey replyPubKey = certToVerify.getPublicKey();
             if (!origPubKey.equals(replyPubKey)) {
-            	// TODO: something went wrong -- throw exception
+                // TODO: something went wrong -- throw exception
                 throw new Exception(
-                	"Public keys in reply and keystore don't match");
+                        "Public keys in reply and keystore don't match");
             }
 
             // If the two certs are identical, we're done: no need to import
             // anything
             if (certToVerify.equals(userCert)) {
                 throw new Exception(
-                	"Certificate reply and certificate in keystore are identical");
+                        "Certificate reply and certificate in keystore are identical");
             }
         }
 
@@ -335,7 +335,7 @@
             keystorecerts2Hashtable(usercerts, certs);
         }
         if (trustcacerts) { //if we're trusting the cacerts
-        	KeyStore caks = SecurityUtil.getCacertsKeyStore();
+                KeyStore caks = SecurityUtil.getCacertsKeyStore();
             if (caks!=null && caks.size()>0) {
                 if (certs == null) {
                     certs = new Hashtable<Principal, Vector<Certificate>>(11);
@@ -362,7 +362,7 @@
             throw new Exception("Failed to establish chain from reply");
         }
     }
-    
+
     /**
      * Stores the (leaf) certificates of a keystore in a hashtable.
      * All certs belonging to the same CA are stored in a vector that
@@ -391,7 +391,7 @@
             }
         }
     }
-    
+
     /**
      * Recursively tries to establish chain from pool of trusted certs.
      *
@@ -441,9 +441,9 @@
     }
 
     public static void dumpCert(Certificate cert, PrintStream out)
-    	throws IOException, CertificateException {
-    	
-    	boolean printRfc = true;
+        throws IOException, CertificateException {
+
+        boolean printRfc = true;
         if (printRfc) {
             BASE64Encoder encoder = new BASE64Encoder();
             out.println(X509Factory.BEGIN_CERT);
@@ -453,9 +453,9 @@
             out.write(cert.getEncoded()); // binary
         }
     }
-    
-	public static void main(String[] args) throws Exception {
-		KeyTool kt = new KeyTool();
-		kt.doPrintEntries(System.out);
-	}
+
+        public static void main(String[] args) throws Exception {
+                KeyTool kt = new KeyTool();
+                kt.doPrintEntries(System.out);
+        }
 }
--- a/netx/net/sourceforge/jnlp/util/FileUtils.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/util/FileUtils.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -20,7 +20,7 @@
 
 /**
  * This class contains a few file-related utility functions.
- * 
+ *
  * @author Omair Majid
  */
 
--- a/netx/net/sourceforge/jnlp/util/PropertiesFile.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/util/PropertiesFile.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -32,7 +32,7 @@
  * This class does not report IO exceptions.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.4 $ 
+ * @version $Revision: 1.4 $
  */
 public class PropertiesFile extends Properties {
 
@@ -46,8 +46,8 @@
     boolean loaded = false;
 
 
-    /** 
-     * Create a properties object backed by the specified file. 
+    /**
+     * Create a properties object backed by the specified file.
      *
      * @param file the file to save and load to
      */
@@ -55,8 +55,8 @@
         this.file = file;
     }
 
-    /** 
-     * Create a properties object backed by the specified file. 
+    /**
+     * Create a properties object backed by the specified file.
      *
      * @param file the file to save and load to
      * @param header the file header
@@ -144,5 +144,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/util/Reflect.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/util/Reflect.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2003 Jon A. Maxwell (JAM)
-// 
+//
 // This program 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
 // of the License, or (at your option) any later version.
-// 
+//
 // This program 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 this program; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -35,7 +35,7 @@
  * Instances of this class are not synchronized.<p>
  *
  * @author <a href="mailto:jon.maxwell@acm.org">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.1 $ 
+ * @version $Revision: 1.1 $
  */
 public class Reflect {
 
@@ -48,7 +48,7 @@
 
     private static Object zero[] = new Object[0];
 
-    
+
     /**
      * Create a new Reflect instance.
      */
@@ -144,5 +144,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/util/WeakList.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/util/WeakList.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2002-2003 Jon A. Maxwell (JAM)
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -30,7 +30,7 @@
  * constant otherwise.<p>
  *
  * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
- * @version $Revision: 1.3 $ 
+ * @version $Revision: 1.3 $
  */
 public class WeakList extends AbstractList {
 
@@ -38,7 +38,7 @@
     private ArrayList refs = new ArrayList();
 
 
-    /** 
+    /**
      * Create a weak random-access list.
      */
     public WeakList() {
@@ -124,5 +124,3 @@
     }
 
 }
-
-
--- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java	Fri Jul 23 10:53:49 2010 +0100
@@ -1,15 +1,15 @@
 // Copyright (C) 2009 Red Hat, Inc.
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // version 2.1 of the License, or (at your option) any later version.
-// 
+//
 // This library 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
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
@@ -39,14 +39,14 @@
  * . This entry can be used to install desktop shortcuts. See xdg-desktop-icon
  * (1) and http://standards.freedesktop.org/desktop-entry-spec/latest/ for more
  * information
- * 
+ *
  * @author Omair Majid
- * 
+ *
  */
 public class XDesktopEntry {
 
     public static final String JAVA_ICON_NAME = "java.png";
-    
+
     private JNLPFile file = null;
     private int iconSize = -1;
     private String iconLocation = null;
@@ -55,7 +55,7 @@
 
     /**
      * Create a XDesktopEntry for the given JNLP file
-     * 
+     *
      * @param file a {@link JNLPFile} that indicates the application to launch
      */
     public XDesktopEntry(JNLPFile file) {
@@ -85,12 +85,12 @@
             fileContents += "Icon=" + iconLocation + "\n";
         } else {
             fileContents += "Icon=" + JAVA_ICON_NAME + "\n";
-            
+
         }
         if (file.getInformation().getVendor() != null) {
             fileContents += "Vendor=" + file.getInformation().getVendor() + "\n";
         }
-        
+
         //Shortcut executes the jnlp from cache and system preferred java..
         fileContents += "Exec=" + "javaws" + " \"" + cacheFile.getAbsolutePath() + "\"\n";
 
@@ -107,7 +107,7 @@
 
     /**
      * Set the icon size to use for the desktop shortcut
-     * 
+     *
      * @param size the size (in pixels) of the icon to use. Commonly used sizes
      *        are of 16, 22, 32, 48, 64 and 128
      */
--- a/netx/net/sourceforge/nanoxml/XMLElement.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/net/sourceforge/nanoxml/XMLElement.java	Fri Jul 23 10:53:49 2010 +0100
@@ -244,7 +244,7 @@
     {
         this(new Hashtable(), false, true, true);
     }
-    
+
 
     /**
      * Creates and initializes a new XML element.
@@ -1255,7 +1255,7 @@
             this.reader = isr;
             this.parserLineNr = 0;
             int newline = 2;
-	    char prev = ' ';
+            char prev = ' ';
 
             while(true) {
                 char ch;
@@ -1320,7 +1320,7 @@
                         }
                     }
                 }
-		prev = next;
+                prev = next;
             }
 
             out.close();
--- a/netx/netscape/javascript/JSObjectCreatePermission.java	Wed Jul 21 16:29:05 2010 -0400
+++ b/netx/netscape/javascript/JSObjectCreatePermission.java	Fri Jul 23 10:53:49 2010 +0100
@@ -34,7 +34,7 @@
 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 netscape.javascript;
 
 import java.security.BasicPermission;