Author: andygumbrecht
Date: Tue Dec  4 09:58:56 2012
New Revision: 1416859

URL: http://svn.apache.org/viewvc?rev=1416859&view=rev
Log:
File.listFiles can be null. Safe decode.

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1416859&r1=1416858&r2=1416859&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 Tue Dec  4 09:58:56 2012
@@ -24,21 +24,8 @@ import org.apache.openejb.classloader.We
 import org.apache.openejb.config.event.BeforeDeploymentEvent;
 import org.apache.openejb.core.EmptyResourcesClassLoader;
 import org.apache.openejb.core.ParentClassLoaderFinder;
-import org.apache.openejb.jee.Application;
-import org.apache.openejb.jee.ApplicationClient;
-import org.apache.openejb.jee.Beans;
-import org.apache.openejb.jee.Connector;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.FacesConfig;
-import org.apache.openejb.jee.JavaWsdlMapping;
-import org.apache.openejb.jee.JaxbJavaee;
-import org.apache.openejb.jee.JspConfig;
+import org.apache.openejb.jee.*;
 import org.apache.openejb.jee.Module;
-import org.apache.openejb.jee.Taglib;
-import org.apache.openejb.jee.TldTaglib;
-import org.apache.openejb.jee.WebApp;
-import org.apache.openejb.jee.WebserviceDescription;
-import org.apache.openejb.jee.Webservices;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.loader.FileUtils;
 import org.apache.openejb.loader.IO;
@@ -61,6 +48,7 @@ import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -144,7 +132,7 @@ public class DeploymentLoader implements
             }
 
             if (EjbModule.class.equals(moduleClass)) {
-                final URL[] urls = new URL[] { baseUrl };
+                final URL[] urls = new URL[]{baseUrl};
 
                 SystemInstance.get().fireEvent(new 
BeforeDeploymentEvent(urls));
 
@@ -234,7 +222,6 @@ public class DeploymentLoader implements
             // We can safely destroy this class loader in either case, as it 
was not use by any modules
             if (null != doNotUseClassLoader) {
                 ClassLoaderUtil.destroyClassLoader(doNotUseClassLoader);
-                doNotUseClassLoader = null;
 
                 //Really try and flush this classloader out
 //                System.gc();
@@ -681,7 +668,7 @@ public class DeploymentLoader implements
                     final IAnnotationFinder finder = new 
org.apache.xbean.finder.AnnotationFinder(new ClassesArchive());
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
-                }  else {
+                } else {
                     final IAnnotationFinder finder = 
FinderFactory.createFinder(webModule);
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
@@ -725,9 +712,8 @@ public class DeploymentLoader implements
         // We need to determine if there are cdi or ejb xml files
         if (webModule.getAltDDs().get("beans.xml") == null) return true;
         if (ejbModule.getEjbJar() == null) return true;
-        if (!ejbModule.getEjbJar().isMetadataComplete()) return false;
+        return ejbModule.getEjbJar().isMetadataComplete();
 
-        return true;
     }
 
     public WebModule createWebModule(final String appId, final String warPath, 
final ClassLoader parentClassLoader, final String contextRoot, final String 
moduleName) throws OpenEJBException {
@@ -1362,7 +1348,11 @@ public class DeploymentLoader implements
             return new File(pathname);
         } else if ("file".equals(warUrl.getProtocol())) {
             final String pathname = warUrl.getPath();
-            return new File(URLDecoder.decode(pathname));
+            try {
+                return new File(URLDecoder.decode(pathname, "UTF8"));
+            } catch (UnsupportedEncodingException e) {
+                return new File(URLDecoder.decode(pathname));
+            }
         } else {
             return null;
         }
@@ -1508,18 +1498,24 @@ public class DeploymentLoader implements
     }
 
     private boolean containsWebAssets(File dir) {
-        for (File file : dir.listFiles()) {
-            if (file.getName().endsWith(".jsp")) return true;
-            if (file.getName().endsWith(".html")) return true;
+        final File[] files = dir.listFiles();
+        if (files != null) {
+            for (File file : files) {
+                if (file.getName().endsWith(".jsp")) return true;
+                if (file.getName().endsWith(".html")) return true;
+            }
         }
         return false;
     }
 
     private boolean containsEarAssets(File dir) {
-        for (File file : dir.listFiles()) {
-            if (file.getName().endsWith(".jar")) return true;
-            if (file.getName().endsWith(".war")) return true;
-            if (file.getName().endsWith(".rar")) return true;
+        final File[] files = dir.listFiles();
+        if (files != null) {
+            for (File file : files) {
+                if (file.getName().endsWith(".jar")) return true;
+                if (file.getName().endsWith(".war")) return true;
+                if (file.getName().endsWith(".rar")) return true;
+            }
         }
         return false;
     }


Reply via email to