You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by wt...@apache.org on 2009/08/24 01:10:19 UTC

svn commit: r807030 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java test/java/org/apache/camel/impl/scan/DefaultPackageScanClassResolverTest.java

Author: wtam
Date: Sun Aug 23 23:10:19 2009
New Revision: 807030

URL: http://svn.apache.org/viewvc?rev=807030&view=rev
Log:
[CAMEL-1917] DefaultPackageScanClassResolver not able to scan package in jar url

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=807030&r1=807029&r2=807030&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 Sun Aug 23 23:10:19 2009
@@ -210,9 +210,12 @@
                     log.trace("Decoded urlPath: " + urlPath);
                 }
 
+                boolean isLocalFileSystem = "file".equals(url.getProtocol());
+
                 // If it's a file in a directory, trim the stupid file: spec
                 if (urlPath.startsWith("file:")) {
                     urlPath = urlPath.substring(5);
+                    isLocalFileSystem = true;
                 }
 
                 // osgi bundles should be skipped
@@ -238,8 +241,8 @@
                     loadImplementationsInDirectory(test, packageName, file, classes);
                 } else {
                     InputStream stream;
-                    if (urlPath.startsWith("http:")) {
-                        // load resources using http such as java webstart
+                    if (!isLocalFileSystem) {
+                        // load resources using http (and other protocols) such as java webstart 
                         log.debug("The current jar is accessed via http");
                         URL urlStream = new URL(urlPath);
                         URLConnection con = urlStream.openConnection();
@@ -276,6 +279,12 @@
         if (log.isTraceEnabled()) {
             log.trace("Getting resource URL for package: " + packageName + " with classloader: " + loader);
         }
+        
+        // If the URL is a jar, the URLClassloader.getResources() seems to require a trailing slash.  The
+        // trailing slash is harmless for other URLs  
+        if (!packageName.endsWith("/")) {
+            packageName = packageName + "/";
+        }
         return loader.getResources(packageName);
     }
 

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=807030&r1=807029&r2=807030&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 Sun Aug 23 23:10:19 2009
@@ -123,8 +123,7 @@
         validateMatchingSetContains(scanned,  ScanTargetTwo.class);
     }
     
-    // Disable until CAMEL-1917 is fixed
-    public void disabledtestFindByFilterPackageInJarUrl() throws Exception {
+    public void testFindByFilterPackageInJarUrl() throws Exception {
         
         ClassLoader savedClassLoader = null; 
         try {