Author: gnodet
Date: Thu Jun  9 14:21:09 2011
New Revision: 1133884

URL: http://svn.apache.org/viewvc?rev=1133884&view=rev
Log:
[SMX4-859] ServiceMix Specs should check class space consistency before using 
an implementation

Modified:
    
servicemix/smx4/specs/trunk/java-persistence-api-1.1.1/src/main/java/javax/persistence/Persistence.java
    
servicemix/smx4/specs/trunk/java-persistence-api-2.0/src/main/java/javax/persistence/Persistence.java
    
servicemix/smx4/specs/trunk/javamail-api-1.4/src/main/java/javax/mail/Session.java
    
servicemix/smx4/specs/trunk/jaxb-api-2.0/src/main/java/javax/xml/bind/ContextFinder.java
    
servicemix/smx4/specs/trunk/jaxb-api-2.1/src/main/java/javax/xml/bind/ContextFinder.java
    
servicemix/smx4/specs/trunk/jaxb-api-2.2/src/main/java/javax/xml/bind/ContextFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/datatype/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/parsers/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/transform/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/stream/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
    
servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jsr303-api-1.0.0/src/main/java/javax/validation/Validation.java
    
servicemix/smx4/specs/trunk/jsr311-api-0.8/src/main/java/javax/rs/ext/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jsr311-api-1.0/src/main/java/javax/rs/ext/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jsr311-api-1.1.1/src/main/java/javax/rs/ext/FactoryFinder.java
    
servicemix/smx4/specs/trunk/jsr311-api-1.1/src/main/java/javax/rs/ext/FactoryFinder.java
    
servicemix/smx4/specs/trunk/locator/src/main/java/org/apache/servicemix/specs/locator/OsgiLocator.java
    
servicemix/smx4/specs/trunk/locator/src/test/java/org/apache/servicemix/specs/locator/OsgiLocatorTest.java
    
servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java
    
servicemix/smx4/specs/trunk/scripting-api-1.0/src/main/java/javax/script/ScriptEngineManager.java
    
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java

Modified: 
servicemix/smx4/specs/trunk/java-persistence-api-1.1.1/src/main/java/javax/persistence/Persistence.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/java-persistence-api-1.1.1/src/main/java/javax/persistence/Persistence.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/java-persistence-api-1.1.1/src/main/java/javax/persistence/Persistence.java
 (original)
+++ 
servicemix/smx4/specs/trunk/java-persistence-api-1.1.1/src/main/java/javax/persistence/Persistence.java
 Thu Jun  9 14:21:09 2011
@@ -97,11 +97,10 @@ public class Persistence {
         }
          
         //If we are deployed into an OSGi environment, leverage it
-        Class providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate("javax.persistence.spi.PersistenceProvider");
+        Class<? extends PersistenceProvider> providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(PersistenceProvider.class);
         if (providerClass != null) {
             try {
-                PersistenceProvider provider = (PersistenceProvider) 
providerClass
-                    .newInstance();
+                PersistenceProvider provider = providerClass.newInstance();
                 return provider.createEntityManagerFactory(persistenceUnitName,
                     properties);
             }

Modified: 
servicemix/smx4/specs/trunk/java-persistence-api-2.0/src/main/java/javax/persistence/Persistence.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/java-persistence-api-2.0/src/main/java/javax/persistence/Persistence.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/java-persistence-api-2.0/src/main/java/javax/persistence/Persistence.java
 (original)
+++ 
servicemix/smx4/specs/trunk/java-persistence-api-2.0/src/main/java/javax/persistence/Persistence.java
 Thu Jun  9 14:21:09 2011
@@ -81,10 +81,10 @@ public class Persistence {
         }
         
         // If we are deployed into an OSGi environment, leverage it
-        Class providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate("javax.persistence.spi.PersistenceProvider");
+        Class<? extends PersistenceProvider> providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(PersistenceProvider.class);
         if (providerClass != null) {
             try {
-                PersistenceProvider provider = (PersistenceProvider) 
providerClass.newInstance();
+                PersistenceProvider provider = providerClass.newInstance();
                 return 
provider.createEntityManagerFactory(persistenceUnitName, properties);
             }
             catch (Exception e) {

Modified: 
servicemix/smx4/specs/trunk/javamail-api-1.4/src/main/java/javax/mail/Session.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/javamail-api-1.4/src/main/java/javax/mail/Session.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/javamail-api-1.4/src/main/java/javax/mail/Session.java
 (original)
+++ 
servicemix/smx4/specs/trunk/javamail-api-1.4/src/main/java/javax/mail/Session.java
 Thu Jun  9 14:21:09 2011
@@ -211,7 +211,7 @@ public final class Session {
      */
     public Provider getProvider(String protocol) throws 
NoSuchProviderException {
        //If we are deployed into an OSGi environment, leverage it
-        Class providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(protocol);
+        Class<? extends Provider> providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(Provider.class, 
protocol);
         if (providerClass != null) {
             try {
                                return (Provider) providerClass.newInstance();
@@ -492,11 +492,11 @@ public final class Session {
             }
             
             //If we are deployed into an OSGi environment, leverage it
-            Class providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(provider.getClassName());
+            Class<? extends Service> providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(Service.class, 
provider.getClassName());
             if (providerClass != null) {
                 try {
                        Constructor ctr = 
providerClass.getConstructor(PARAM_TYPES);
-                    return (Service) ctr.newInstance(new Object[]{this, name});
+                    return (Service) ctr.newInstance(this, name);
                        } catch (InstantiationException e) {
                                throw new 
NoSuchProviderException(e.getMessage());
                        } catch (IllegalAccessException e) {
@@ -507,7 +507,7 @@ public final class Session {
             ClassLoader cl = getClassLoader();
             Class clazz = cl.loadClass(provider.getClassName());
             Constructor ctr = clazz.getConstructor(PARAM_TYPES);
-            return (Service) ctr.newInstance(new Object[]{this, name});
+            return (Service) ctr.newInstance(this, name);
         } catch (ClassNotFoundException e) {
             throw (NoSuchProviderException) new 
NoSuchProviderException("Unable to load class for provider: " + 
provider).initCause(e);
         } catch (NoSuchMethodException e) {

Modified: 
servicemix/smx4/specs/trunk/jaxb-api-2.0/src/main/java/javax/xml/bind/ContextFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxb-api-2.0/src/main/java/javax/xml/bind/ContextFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxb-api-2.0/src/main/java/javax/xml/bind/ContextFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxb-api-2.0/src/main/java/javax/xml/bind/ContextFinder.java
 Thu Jun  9 14:21:09 2011
@@ -150,7 +150,7 @@ class ContextFinder {
     private static Class loadSpi(String className, ClassLoader classLoader) 
throws JAXBException {
         Class spiClass;
         try {
-            spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(JAXBContext.class.getName());
+            spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(JAXBContext.class);
             if (spiClass != null) {
                 return spiClass;
             }

Modified: 
servicemix/smx4/specs/trunk/jaxb-api-2.1/src/main/java/javax/xml/bind/ContextFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxb-api-2.1/src/main/java/javax/xml/bind/ContextFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxb-api-2.1/src/main/java/javax/xml/bind/ContextFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxb-api-2.1/src/main/java/javax/xml/bind/ContextFinder.java
 Thu Jun  9 14:21:09 2011
@@ -160,7 +160,7 @@ class ContextFinder {
     private static Class loadSpi(String className, ClassLoader classLoader) 
throws JAXBException {
         Class spiClass;
         try {
-            spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(JAXBContext.class.getName());
+            spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(JAXBContext.class);
             if (spiClass != null) {
                 return spiClass;
             }

Modified: 
servicemix/smx4/specs/trunk/jaxb-api-2.2/src/main/java/javax/xml/bind/ContextFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxb-api-2.2/src/main/java/javax/xml/bind/ContextFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxb-api-2.2/src/main/java/javax/xml/bind/ContextFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxb-api-2.2/src/main/java/javax/xml/bind/ContextFinder.java
 Thu Jun  9 14:21:09 2011
@@ -477,7 +477,7 @@ class ContextFinder {
     private static Class safeLoadClass(String className, ClassLoader 
classLoader) throws ClassNotFoundException {
        // using Osig locator to load the spi class 
        try {
-           Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(JAXBContext.class.getName());
+           Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(JAXBContext.class);
            if (spiClass != null) {
                return spiClass;
            }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/datatype/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/datatype/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/datatype/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/datatype/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -188,7 +188,8 @@ final class FactoryFinder {
 
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/parsers/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/parsers/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/parsers/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/parsers/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -161,7 +161,8 @@ final class FactoryFinder {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/transform/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/transform/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/transform/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/transform/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -161,7 +161,8 @@ final class FactoryFinder {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/validation/SchemaFactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -159,7 +159,7 @@ final class SchemaFactoryFinder  {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS.getName());
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS);
             if (spiClass != null) {
                 return (SchemaFactory) spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/xpath/XPathFactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -161,7 +161,7 @@ final class XPathFactoryFinder {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS.getName());
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS);
             if (spiClass != null) {
                 return (XPathFactory) spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.3/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
 Thu Jun  9 14:21:09 2011
@@ -123,9 +123,9 @@ final public class XMLReaderFactory
             
                try {
                    // If we are deployed into an OSGi environment, leverage it
-                   Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(property);
+                   Class<? extends XMLReader> spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(XMLReader.class, 
property);
                    if (spiClass != null) {
-                       return (XMLReader) spiClass.newInstance();
+                       return spiClass.newInstance();
                    }
                } catch (Throwable e) {
                }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -188,7 +188,8 @@ final class FactoryFinder {
 
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -161,7 +161,8 @@ final class FactoryFinder {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/stream/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/stream/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/stream/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/stream/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -184,7 +184,8 @@ final class FactoryFinder {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance(); 
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -161,7 +161,8 @@ final class FactoryFinder {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/validation/SchemaFactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/validation/SchemaFactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -159,7 +159,7 @@ final class SchemaFactoryFinder  {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS.getName());
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS);
             if (spiClass != null) {
                 return (SchemaFactory) spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/xpath/XPathFactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/xpath/XPathFactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -161,7 +161,7 @@ final class XPathFactoryFinder {
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS.getName());
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(SERVICE_CLASS);
             if (spiClass != null) {
                 return (XPathFactory) spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
 Thu Jun  9 14:21:09 2011
@@ -123,9 +123,9 @@ final public class XMLReaderFactory
             
                try {
                    // If we are deployed into an OSGi environment, leverage it
-                   Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(property);
+                   Class<? extends XMLReader> spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(XMLReader.class, 
property);
                    if (spiClass != null) {
-                       return (XMLReader) spiClass.newInstance();
+                       return spiClass.newInstance();
                    }
                } catch (Throwable e) {
                }

Modified: 
servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -171,7 +171,8 @@ class FactoryFinder {
                     
                                try {
                                    // If we are deployed into an OSGi 
environment, leverage it
-                                   Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(iFactoryId);
+                        Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(iFactoryId);
+                        Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, 
iFactoryId);
                                    if (spiClass != null) {
                                        return spiClass.newInstance();
                                    }

Modified: 
servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -171,7 +171,8 @@ class FactoryFinder {
                     
                                try {
                                    // If we are deployed into an OSGi 
environment, leverage it
-                                   Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(iFactoryId);
+                        Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(iFactoryId);
+                        Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, 
iFactoryId);
                                    if (spiClass != null) {
                                        return spiClass.newInstance();
                                    }

Modified: 
servicemix/smx4/specs/trunk/jsr303-api-1.0.0/src/main/java/javax/validation/Validation.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr303-api-1.0.0/src/main/java/javax/validation/Validation.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jsr303-api-1.0.0/src/main/java/javax/validation/Validation.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jsr303-api-1.0.0/src/main/java/javax/validation/Validation.java
 Thu Jun  9 14:21:09 2011
@@ -314,9 +314,9 @@ public class Validation {
                                providers = new 
ArrayList<ValidationProvider<?>>();
                                try {
                                        // If we are deployed into an OSGi 
environment, leverage it
-                                       Class providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(ValidationProvider.class.getName());
+                                       Class<? extends ValidationProvider> 
providerClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(ValidationProvider.class);
                                        if (providerClass != null) {
-                                               providers.add(( 
ValidationProvider ) providerClass.newInstance());
+                                               
providers.add(providerClass.newInstance());
                                        }
                                } catch (Throwable e) {
                                        // Do nothing here

Modified: 
servicemix/smx4/specs/trunk/jsr311-api-0.8/src/main/java/javax/rs/ext/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr311-api-0.8/src/main/java/javax/rs/ext/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jsr311-api-0.8/src/main/java/javax/rs/ext/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jsr311-api-0.8/src/main/java/javax/rs/ext/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -75,7 +75,8 @@ class FactoryFinder {
     static Object find(String factoryId, String fallbackClassName) throws 
ClassNotFoundException {
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jsr311-api-1.0/src/main/java/javax/rs/ext/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr311-api-1.0/src/main/java/javax/rs/ext/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jsr311-api-1.0/src/main/java/javax/rs/ext/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jsr311-api-1.0/src/main/java/javax/rs/ext/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -76,7 +76,8 @@ class FactoryFinder {
     static Object find(String factoryId, String fallbackClassName) throws 
ClassNotFoundException {
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jsr311-api-1.1.1/src/main/java/javax/rs/ext/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr311-api-1.1.1/src/main/java/javax/rs/ext/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jsr311-api-1.1.1/src/main/java/javax/rs/ext/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jsr311-api-1.1.1/src/main/java/javax/rs/ext/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -68,7 +68,8 @@ public class FactoryFinder {
     static Object find(String factoryId, String fallbackClassName) throws 
ClassNotFoundException {
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/jsr311-api-1.1/src/main/java/javax/rs/ext/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr311-api-1.1/src/main/java/javax/rs/ext/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/jsr311-api-1.1/src/main/java/javax/rs/ext/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/jsr311-api-1.1/src/main/java/javax/rs/ext/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -76,7 +76,8 @@ class FactoryFinder {
     static Object find(String factoryId, String fallbackClassName) throws 
ClassNotFoundException {
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/locator/src/main/java/org/apache/servicemix/specs/locator/OsgiLocator.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/locator/src/main/java/org/apache/servicemix/specs/locator/OsgiLocator.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/locator/src/main/java/org/apache/servicemix/specs/locator/OsgiLocator.java
 (original)
+++ 
servicemix/smx4/specs/trunk/locator/src/main/java/org/apache/servicemix/specs/locator/OsgiLocator.java
 Thu Jun  9 14:21:09 2011
@@ -16,13 +16,13 @@
  */
 package org.apache.servicemix.specs.locator;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.ArrayList;
 
 public class OsgiLocator {
 
@@ -58,13 +58,18 @@ public class OsgiLocator {
                 l = new ArrayList<Callable<Class>>();
                 factories.put(id, l);
             }
-            l.add(factory);
+            l.add(0, factory);
         } finally {
             lock.writeLock().unlock();
         }
     }
 
-    public static Class locate(String factoryId) {
+
+    public static <T> Class<? extends T> locate(Class<T> factoryId) {
+        return locate(factoryId, factoryId.getName());
+    }
+
+    public static <T> Class<? extends T> locate(Class<T> factoryClass, String 
factoryId) {
         lock.readLock().lock();
         try {
             if (factories != null) {
@@ -73,21 +78,18 @@ public class OsgiLocator {
                     // look up the System property first
                     String factoryClassName = System.getProperty(factoryId);
                     try {
-                        if (factoryClassName != null) {
-                            for (Callable<Class> i : l) {
-                                Class c = null;
-                                try {
-                                    c = i.call();
-                                } catch (Exception ex) {
-                                    // do nothing here
-                                }
-                                if (c != null && 
c.getName().equals(factoryClassName)) {
-                                    return c;
-                                }
+                        for (Callable<Class> i : l) {
+                            Class c = null;
+                            try {
+                                c = i.call();
+                            } catch (Exception ex) {
+                                // do nothing here
+                            }
+                            if (c != null && factoryClass == 
c.getClassLoader().loadClass(factoryClass.getName())
+                                     && (factoryClassName == null || 
c.getName().equals(factoryClassName)))
+                            {
+                                return c;
                             }
-                        } else {
-                            Callable<Class> callable = l.get(l.size() - 1);
-                            return callable.call();
                         }
                     } catch (Exception ex) {
                         // do nothing here
@@ -100,16 +102,23 @@ public class OsgiLocator {
         }
     }
 
-    public static List<Class> locateAll(String factoryId) {
+    public static <T> List<Class<? extends T>> locateAll(Class<T> factoryId) {
+        return locateAll(factoryId, factoryId.getName());
+    }
+
+    public static <T> List<Class<? extends T>> locateAll(Class<T> 
factoryClass, String factoryId) {
         lock.readLock().lock();
         try {
-            List<Class> classes = new ArrayList<Class>();
+            List<Class<? extends T>> classes = new ArrayList<Class<? extends 
T>>();
             if (factories != null) {
                 List<Callable<Class>> l = factories.get(factoryId);
                 if (l != null) {
-                    for (Callable<Class> c : l) {
+                    for (Callable<Class> i : l) {
                        try {
-                               classes.add(c.call());
+                            Class c = i.call();
+                            if (c != null && factoryClass.isAssignableFrom(c)) 
{
+                                   classes.add(c);
+                            }
                        } catch (Exception e) {
                        }
                                }

Modified: 
servicemix/smx4/specs/trunk/locator/src/test/java/org/apache/servicemix/specs/locator/OsgiLocatorTest.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/locator/src/test/java/org/apache/servicemix/specs/locator/OsgiLocatorTest.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/locator/src/test/java/org/apache/servicemix/specs/locator/OsgiLocatorTest.java
 (original)
+++ 
servicemix/smx4/specs/trunk/locator/src/test/java/org/apache/servicemix/specs/locator/OsgiLocatorTest.java
 Thu Jun  9 14:21:09 2011
@@ -31,19 +31,19 @@ public class OsgiLocatorTest extends Ass
     @Test
     public void testLocatorWithSystemProperty() {
         System.setProperty("Factory", 
"org.apache.servicemix.specs.locator.MockCallable");
-        Class clazz = OsgiLocator.locate("Factory");
+        Class clazz = OsgiLocator.locate(Object.class, "Factory");
         assertNotNull("Except to find the class", clazz);
         assertEquals("Get a wrong class.", MockCallable.class.getName(), 
clazz.getName());
         
         System.setProperty("Factory", "org.apache.servicemix.specs.locator");
-        clazz = OsgiLocator.locate("Factory");
+        clazz = OsgiLocator.locate(Object.class, "Factory");
         assertNull("Except to find the class", clazz);
         System.clearProperty("Factory");
     }
     
     @Test
     public void testLocatorWithoutSystemProperty() {
-        Class clazz = OsgiLocator.locate("Factory");
+        Class clazz = OsgiLocator.locate(Object.class, "Factory");
         assertNotNull("Except to find the class", clazz);
         assertEquals("Get a wrong class.", MockCallable2.class.getName(), 
clazz.getName());
     }

Modified: 
servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java
 (original)
+++ 
servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java
 Thu Jun  9 14:21:09 2011
@@ -83,7 +83,8 @@ class FactoryFinder {
                        String defaultFactoryClassName) throws SOAPException {
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryPropertyName);
+            Class factoryClass = 
FactoryFinder.class.getClassLoader().loadClass(factoryPropertyName);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, 
factoryPropertyName);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }

Modified: 
servicemix/smx4/specs/trunk/scripting-api-1.0/src/main/java/javax/script/ScriptEngineManager.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/scripting-api-1.0/src/main/java/javax/script/ScriptEngineManager.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/scripting-api-1.0/src/main/java/javax/script/ScriptEngineManager.java
 (original)
+++ 
servicemix/smx4/specs/trunk/scripting-api-1.0/src/main/java/javax/script/ScriptEngineManager.java
 Thu Jun  9 14:21:09 2011
@@ -95,10 +95,10 @@ public class ScriptEngineManager {
 
     public ScriptEngine getEngineByName(String shortName) {
                ScriptEngineFactory factory = null;
-        List<Class> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll("javax.script.ScriptEngineFactory");
-        for (Class factoryClass : factoryClasses) {
+        List<Class<? extends ScriptEngineFactory>> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll(javax.script.ScriptEngineFactory.class);
+        for (Class<? extends ScriptEngineFactory> factoryClass : 
factoryClasses) {
                        try {
-                               ScriptEngineFactory f = (ScriptEngineFactory) 
factoryClass.newInstance();
+                               ScriptEngineFactory f = 
factoryClass.newInstance();
                                if (f.getNames().contains(shortName)) {
                                        factory = f;
                                        break;
@@ -123,10 +123,10 @@ public class ScriptEngineManager {
 
     public ScriptEngine getEngineByExtension(String extension) {
                ScriptEngineFactory factory = null;
-        List<Class> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll("javax.script.ScriptEngineFactory");
-        for (Class factoryClass : factoryClasses) {
+        List<Class<? extends ScriptEngineFactory>> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll(javax.script.ScriptEngineFactory.class);
+        for (Class<? extends ScriptEngineFactory> factoryClass : 
factoryClasses) {
                        try {
-                               ScriptEngineFactory f = (ScriptEngineFactory) 
factoryClass.newInstance();
+                               ScriptEngineFactory f = 
factoryClass.newInstance();
                                if (f.getExtensions().contains(extension)) {
                                        factory = f;
                                        break;
@@ -151,10 +151,10 @@ public class ScriptEngineManager {
 
     public ScriptEngine getEngineByMimeType(String mimeType) {
                ScriptEngineFactory factory = null;
-        List<Class> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll("javax.script.ScriptEngineFactory");
-        for (Class factoryClass : factoryClasses) {
+        List<Class<? extends ScriptEngineFactory>> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll(javax.script.ScriptEngineFactory.class);
+        for (Class<? extends ScriptEngineFactory> factoryClass : 
factoryClasses) {
                        try {
-                               ScriptEngineFactory f = (ScriptEngineFactory) 
factoryClass.newInstance();
+                               ScriptEngineFactory f = 
factoryClass.newInstance();
                                if (f.getMimeTypes().contains(mimeType)) {
                                        factory = f;
                                        break;
@@ -179,8 +179,8 @@ public class ScriptEngineManager {
 
     public List<ScriptEngineFactory> getEngineFactories() {
         List<ScriptEngineFactory> factories = new ArrayList();
-        List<Class> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll("javax.script.ScriptEngineFactory");
-        for (Class factoryClass : factoryClasses) {
+        List<Class<? extends ScriptEngineFactory>> factoryClasses = 
org.apache.servicemix.specs.locator.OsgiLocator.locateAll(javax.script.ScriptEngineFactory.class);
+        for (Class<? extends ScriptEngineFactory> factoryClass : 
factoryClasses) {
                        try {
                                factories.add((ScriptEngineFactory) 
factoryClass.newInstance());
                        } catch (Throwable doNothing) {

Modified: 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java?rev=1133884&r1=1133883&r2=1133884&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java
 (original)
+++ 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java
 Thu Jun  9 14:21:09 2011
@@ -56,7 +56,8 @@ class FactoryLocator {
                          ClassLoader classLoader) throws 
FactoryConfigurationError {
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryId);
+            Class factoryClass = 
FactoryLocator.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = 
org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
             }


Reply via email to