[weld-commits] Weld SVN: r5500 - core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Mon Jan 18 18:32:57 EST 2010


Author: pete.muir at jboss.org
Date: 2010-01-18 18:32:57 -0500 (Mon, 18 Jan 2010)
New Revision: 5500

Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java
Log:
WELD-386


Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java	2010-01-18 23:11:00 UTC (rev 5499)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java	2010-01-18 23:32:57 UTC (rev 5500)
@@ -22,7 +22,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.lang.reflect.Constructor;
 import java.net.URL;
 import java.util.Enumeration;
 import java.util.HashSet;
@@ -31,7 +30,6 @@
 
 import org.jboss.weld.exceptions.ForbiddenStateException;
 import org.jboss.weld.exceptions.InvalidOperationException;
-import org.jboss.weld.util.reflection.Reflections;
 import org.jboss.weld.util.reflection.SecureReflections;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -213,8 +211,11 @@
                            {
                               throw new ForbiddenStateException(DECLARED_EXTENSION_DOES_NOT_IMPLEMENT_EXTENSION, line);
                            }
-                           Constructor<? extends S> constructor = (Constructor<? extends S>) SecureReflections.getConstructor(serviceClass);
-                           S instance = constructor.newInstance();
+                           Object object = SecureReflections.ensureAccessible(SecureReflections.getDeclaredConstructor(serviceClass)).newInstance();
+                           
+                           @SuppressWarnings("unchecked")
+                           S instance = (S) object;
+                           
                            providers.add(instance);
                         }
                         catch (NoClassDefFoundError e)
@@ -235,12 +236,17 @@
                            xLog.throwing(Level.DEBUG, e);
                            throw e;
                         }
+                        catch (NoSuchMethodException e) 
+                        {
+                           log.warn("Error loading line", line);
+                           xLog.throwing(Level.DEBUG, e);
+                           throw e;
+                        }
                      }
                   }
                   catch (Exception e)
                   {
-                     // TODO Don't use exceptions for flow control!
-                     // try the next line
+                     // try next line
                   }
 
                   line = reader.readLine();



More information about the weld-commits mailing list