You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2014/12/03 00:25:56 UTC

svn commit: r1643021 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-container/src: main/java/org/apache/uima/ducc/container/common/classloader/PrivateClassLoader.java test/java/org/apache/uima/ducc/container/jd/test/TestClassLoading.java

Author: burn
Date: Tue Dec  2 23:25:56 2014
New Revision: 1643021

URL: http://svn.apache.org/r1643021
Log:
UIMA-4110 Ignore invalid or missing wild-card classpath entries

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/PrivateClassLoader.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestClassLoading.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/PrivateClassLoader.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/PrivateClassLoader.java?rev=1643021&r1=1643020&r2=1643021&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/PrivateClassLoader.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/PrivateClassLoader.java Tue Dec  2 23:25:56 2014
@@ -43,9 +43,12 @@ public class PrivateClassLoader {
     for (String element : classPathElements) {
       if (element.endsWith("*")) {
         File dir = new File(element.substring(0, element.length() - 1));
-        for (File f : dir.listFiles()) {
-          if (f.getName().endsWith(".jar")) {
-            urlList.add(f.toURI().toURL());
+        File[] files = dir.listFiles();   // Will be null if missing or not a dir
+        if (files != null) {
+          for (File f : files) {
+            if (f.getName().endsWith(".jar")) {
+              urlList.add(f.toURI().toURL());
+            }
           }
         }
       } else {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestClassLoading.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestClassLoading.java?rev=1643021&r1=1643020&r2=1643021&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestClassLoading.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestClassLoading.java Tue Dec  2 23:25:56 2014
@@ -56,7 +56,7 @@ public class TestClassLoading extends AT
 		}
 		catch(Exception e) {
 			e.printStackTrace();
-			fail("Exception");
+			fail("Exception " + e);
 		}
 	}
 
@@ -238,4 +238,33 @@ public class TestClassLoading extends AT
     }
     // pcl.close();   // Requires Java 1.7
   }
+  
+  @Test
+  public void test_invalid_cp() throws URISyntaxException, IOException {
+
+    // Set up a private class-loader with a couple of missing 
+    // or invalid entries that should be quietly ignored
+    String[] privateCP = {"../uima-ducc-sm/target/classes",
+                          "pom.xml*",
+                          "unknown-file.jar",
+                          "unknown-wildcard/*"};
+    
+    URLClassLoader pcl = null;
+    try {
+      pcl = PrivateClassLoader.create(privateCP);
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail("Failed to create private class loader");
+    }
+    URL[] urls = pcl.getURLs();
+    
+    if (urls.length != 1) {
+      fail("Should have only one entry in the classpath, not " + urls.length);
+    }
+    File f = new File(privateCP[0]);
+    URL u = f.toURI().toURL();
+    if (!u.equals(urls[0])) {
+      fail("C;asspath should have only " + u);
+    }
+  }  
 }