You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/09/14 08:57:29 UTC
svn commit: r814499 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
test/java/org/apache/camel/impl/scan/DefaultPackageScanClassResolverTest.java
test/resources/package+scan+test.jar
Author: davsclaus
Date: Mon Sep 14 06:57:29 2009
New Revision: 814499
URL: http://svn.apache.org/viewvc?rev=814499&view=rev
Log:
CAMEL-1974: Fixed package scanning with temp folders using characters which would have been url decoded. Thanks to Fabio Marinelli for providing details and fix.
Added:
camel/trunk/camel-core/src/test/resources/package+scan+test.jar (with props)
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/scan/DefaultPackageScanClassResolverTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java?rev=814499&r1=814498&r2=814499&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java Mon Sep 14 06:57:29 2009
@@ -21,6 +21,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
@@ -214,7 +216,14 @@
// If it's a file in a directory, trim the stupid file: spec
if (urlPath.startsWith("file:")) {
- urlPath = urlPath.substring(5);
+ // file path can be temporary folder which uses characters that the URLDecoder decodes wrong
+ // for example + being decoded to something else (+ can be used in temp folders on Mac OS)
+ // to remedy this then create new path without using the URLDecoder
+ urlPath = new URI(url.getFile()).getPath();
+
+ if (urlPath.startsWith("file:")) {
+ urlPath = urlPath.substring(5);
+ }
isLocalFileSystem = true;
}
@@ -258,8 +267,10 @@
}
loadImplementationsInJar(test, packageName, stream, urlPath, classes);
}
- } catch (IOException ioe) {
- log.warn("Could not read entries in url: " + url, ioe);
+ } catch (IOException e) {
+ log.warn("Could not read entries in url: " + url, e);
+ } catch (URISyntaxException e) {
+ log.warn("Could not read entries in url: " + url, e);
}
}
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/scan/DefaultPackageScanClassResolverTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/scan/DefaultPackageScanClassResolverTest.java?rev=814499&r1=814498&r2=814499&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/scan/DefaultPackageScanClassResolverTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/scan/DefaultPackageScanClassResolverTest.java Mon Sep 14 06:57:29 2009
@@ -124,8 +124,7 @@
}
public void testFindByFilterPackageInJarUrl() throws Exception {
-
- ClassLoader savedClassLoader = null;
+ ClassLoader savedClassLoader = null;
try {
savedClassLoader = Thread.currentThread().getContextClassLoader();
URL url = getClass().getResource("/package_scan_test.jar");
@@ -145,8 +144,29 @@
Thread.currentThread().setContextClassLoader(savedClassLoader);
}
}
-
}
+ public void testFindByFilterPackageInJarUrlWithPlusChars() throws Exception {
+ ClassLoader savedClassLoader = null;
+ try {
+ savedClassLoader = Thread.currentThread().getContextClassLoader();
+ URL url = getClass().getResource("/package+scan+test.jar");
+
+ URL urls[] = {new URL("jar:" + url.toString() + "!/")};
+ URLClassLoader classLoader = new URLClassLoader(urls, savedClassLoader);
+
+ Thread.currentThread().setContextClassLoader(classLoader);
+
+ filter.addIncludePattern("a.*.c.*");
+ resolver.addFilter(filter);
+ Set<Class> scanned = resolver.findByFilter(filter, "a.b.c");
+ assertEquals(1, scanned.size());
+ assertEquals("class a.b.c.Test", scanned.iterator().next().toString());
+ } finally {
+ if (savedClassLoader != null) {
+ Thread.currentThread().setContextClassLoader(savedClassLoader);
+ }
+ }
+ }
}
Added: camel/trunk/camel-core/src/test/resources/package+scan+test.jar
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/package%2Bscan%2Btest.jar?rev=814499&view=auto
==============================================================================
Binary file - no diff available.
Propchange: camel/trunk/camel-core/src/test/resources/package+scan+test.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream