You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by we...@apache.org on 2009/05/05 17:09:46 UTC

svn commit: r771772 - /struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java

Author: wesw
Date: Tue May  5 15:09:45 2009
New Revision: 771772

URL: http://svn.apache.org/viewvc?rev=771772&view=rev
Log:
WW-3114, working around GAE class loader incompatibilities, patch from Leonard Broman, thanks!

Modified:
    struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java

Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java?rev=771772&r1=771771&r2=771772&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java (original)
+++ struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java Tue May  5 15:09:45 2009
@@ -369,10 +369,22 @@
         if (parent != null)
             urlSet = urlSet.exclude(parent);
 
-        urlSet = urlSet.exclude(new ClassLoaderInterfaceDelegate(ClassLoader.getSystemClassLoader().getParent()));
+        try {
+        	// This may fail in some sandboxes, ie GAE
+        	ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
+        	urlSet = urlSet.exclude(new ClassLoaderInterfaceDelegate(systemClassLoader.getParent()));
+        	
+        } catch (SecurityException e) {
+        	LOG.warn("Could not get the system classloader due to security constraints, there may be improper urls left to scan");
+        }
         urlSet = urlSet.excludeJavaExtDirs();
         urlSet = urlSet.excludeJavaEndorsedDirs();
-        urlSet = urlSet.excludeJavaHome();
+        try {
+        	urlSet = urlSet.excludeJavaHome();
+        } catch (NullPointerException e) {
+        	// This happens in GAE since the sandbox contains no java.home directory
+        	LOG.warn("Could not exclude JAVA_HOME, is this a sandbox jvm?");
+        }
         urlSet = urlSet.excludePaths(System.getProperty("sun.boot.class.path", ""));
         urlSet = urlSet.exclude(".*/JavaVM.framework/.*");