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);
+ }
+ }
}