You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/04/09 21:51:50 UTC

svn commit: r1090660 - /commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/Service.java

Author: simonetripodi
Date: Sat Apr  9 19:51:49 2011
New Revision: 1090660

URL: http://svn.apache.org/viewvc?rev=1090660&view=rev
Log:
DISCOVERY-17: Enumeration returned by Service.providers has a broken behavior

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

Modified: commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/Service.java
URL: http://svn.apache.org/viewvc/commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/Service.java?rev=1090660&r1=1090659&r2=1090660&view=diff
==============================================================================
--- commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/Service.java (original)
+++ commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/Service.java Sat Apr  9 19:51:49 2011
@@ -91,32 +91,24 @@ public class Service {
             (new DiscoverClasses<T>(loaders)).findResourceClasses(servicesIter);
 
         return new Enumeration<S>() {
-            private S object = getNextClassInstance();
 
             public boolean hasMoreElements() {
-                return object != null;
+                return services.hasNext();
             }
 
             public S nextElement() {
-                if (object == null) {
+                ResourceClass<S> info = services.nextResourceClass();
+
+                if (info == null) {
                     throw new NoSuchElementException();
                 }
 
-                S obj = object;
-                object = getNextClassInstance();
-                return obj;
-            }
-
-            private S getNextClassInstance() {
-                while (services.hasNext()) {
-                    ResourceClass<S> info = services.nextResourceClass();
-                    try {
-                        return spi.newInstance(info.loadClass());
-                    } catch (Exception e) {
-                        // ignore
-                    } catch (LinkageError le) {
-                        // ignore
-                    }
+                try {
+                    return spi.newInstance(info.loadClass());
+                } catch (Exception e) {
+                    // ignore
+                } catch (LinkageError le) {
+                    // ignore
                 }
                 return null;
             }