Author: simonetripodi
Date: Sat Apr  2 23:20:11 2011
New Revision: 1088177

URL: http://svn.apache.org/viewvc?rev=1088177&view=rev
Log:
DISCOVERY-12: DiscoverClass improvements
patch submitted by Neeme Praks

Modified:
    
commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/DiscoverClass.java

Modified: 
commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/DiscoverClass.java
URL: 
http://svn.apache.org/viewvc/commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/DiscoverClass.java?rev=1088177&r1=1088176&r2=1088177&view=diff
==============================================================================
--- 
commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/DiscoverClass.java
 (original)
+++ 
commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/DiscoverClass.java
 Sat Apr  2 23:20:11 2011
@@ -313,20 +313,23 @@ public class DiscoverClass {
                            : properties.getProperties(spi, loaders);
 
         String[] classNames = discoverClassNames(spi, props);
+        Exception error = null;
 
         if (classNames.length > 0) {
             DiscoverClasses<T> classDiscovery = new 
DiscoverClasses<T>(loaders);
 
-            ResourceClassIterator<T> classes =
-                classDiscovery.findResourceClasses(classNames[0]);
-
-            // If it's set as a property.. it had better be there!
-            if (classes.hasNext()) {
-                ResourceClass<T> info = classes.nextResourceClass();
-                try {
-                    return info.loadClass();
-                } catch (Exception e) {
-                    // ignore
+            for (int i = 0; i < classNames.length; i++) {
+                 ResourceClassIterator<T> classes =
+                     classDiscovery.findResourceClasses(classNames[i]);
+
+                 // If it's set as a property.. it had better be there!
+                 if (classes.hasNext()) {
+                     ResourceClass<T> info = classes.nextResourceClass();
+                     try {
+                         return info.loadClass();
+                     } catch (Exception e) {
+                         error = e;
+                     }
                 }
             }
         } else {
@@ -347,12 +350,12 @@ public class DiscoverClass {
                 try {
                     return info.loadClass();
                 } catch (Exception e) {
-                    // ignore
+                    error = e;
                 }
             }
         }
 
-        throw new DiscoveryException("No implementation defined for " + 
spi.getSPName());
+        throw new DiscoveryException("No implementation defined for " + 
spi.getSPName(), error);
         // return null;
     }
 


Reply via email to