Commits

Anonymous committed c5a865a

use default parent url if it cannot be normalized

git-svn-id: http://svn.opensymphony.com/svn/xwork/trunk@2053e221344d-f017-0410-9bd5-d282ab1896d7

Comments (0)

Files changed (1)

core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java

 import java.util.Collection;
 import java.util.HashSet;
 
+import org.apache.commons.lang.ObjectUtils;
+
 /**
  * The ReloadingClassLoader uses a delegation mechanism to allow
  * classes to be reloaded. That means that loadClass calls may
     public ReloadingClassLoader(final ClassLoader pParent) {
         super(pParent);
         parent = pParent;
-        URL root = URLUtil.normalizeToFileProtocol(pParent.getResource(""));
+        URL parentRoot = pParent.getResource("");
+        URL root = URLUtil.normalizeToFileProtocol(parentRoot);
+        root = (URL) ObjectUtils.defaultIfNull(root, parentRoot);
         try {
             if (root != null) {
-                stores = new ResourceStore[]{new FileResourceStore(new File( root.toURI()))};
-            }
-            else {
+                stores = new ResourceStore[]{new FileResourceStore(new File(root.toURI()))};
+            } else {
                 throw new XWorkException("Unable to start the reloadable class loader, consider setting 'struts.convention.classes.reload' to false");
             }
         } catch (URISyntaxException e) {
             if (root != null)
                 LOG.error("Exception while trying to build the ResourceStore for URL [#0]", e, root.toString());
             else
-                 LOG.error("Exception while trying to get root resource from class loader", e);
+                LOG.error("Exception while trying to get root resource from class loader", e);
             LOG.error("Consider setting struts.convention.classes.reload=false");
             throw e;
         }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.