Author: antelder
Date: Tue Jan 24 12:29:04 2012
New Revision: 1235221

URL: http://svn.apache.org/viewvc?rev=1235221&view=rev
Log:
Change the JMS binding MessageProcessor discovery to use ServiceDiscovery so 
that additional processors can be added in OSGi

Modified:
    
tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorUtil.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorUtil.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorUtil.java?rev=1235221&r1=1235220&r2=1235221&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorUtil.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorUtil.java
 Tue Jan 24 12:29:04 2012
@@ -24,6 +24,7 @@ import java.lang.reflect.Constructor;
 import org.apache.tuscany.sca.binding.jms.JMSBinding;
 import org.apache.tuscany.sca.binding.jms.JMSBindingException;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
 
 /**
  * Utility methods to load JMS message processors.
@@ -74,32 +75,19 @@ public class JMSMessageProcessorUtil {
 //    }
 //
     private static Object instantiate(ClassLoader cl, String className, 
JMSBinding binding, ExtensionPointRegistry registry) {
-        Object instance;
-        if (cl == null) {
-            cl = binding.getClass().getClassLoader();
-        }
-
         try {
-            Class<?> clazz;
-
-            try {
-                clazz = cl.loadClass(className);
-            } catch (ClassNotFoundException e) {
-               // MJE 07/12/2010 - for OSGi the default message processor 
belongs to the same bundle as
-               // this JMSMessageProcessorUtil itself and so the "correct" 
classloader to use is the classloader
-               // for THIS class, and not the binding class (which is a 
different bundle)
-                // clazz = 
binding.getClass().getClassLoader().loadClass(className);
-                clazz = 
JMSMessageProcessorUtil.class.getClassLoader().loadClass(className);
+            for (ServiceDeclaration sd : 
registry.getServiceDiscovery().getServiceDeclarations(JMSMessageProcessor.class))
 {
+                if (className.equals(sd.getClassName())) {
+                    Class<?> clazz = sd.loadClass();
+                    Constructor<?> constructor = 
clazz.getDeclaredConstructor(new Class[] {JMSBinding.class, 
ExtensionPointRegistry.class});
+                    return constructor.newInstance(binding, registry);
+                }
+                
             }
-
-            Constructor<?> constructor = clazz.getDeclaredConstructor(new 
Class[] {JMSBinding.class, ExtensionPointRegistry.class});
-            instance = constructor.newInstance(binding, registry);
-
+            throw new JMSBindingException("Class not found: " + className);
         } catch (Throwable e) {
             throw new JMSBindingException("Exception instantiating 
OperationAndDataBinding class", e);
         }
-
-        return instance;
     }
 
     public static JMSMessageProcessor 
getRequestMessageProcessor(ExtensionPointRegistry registry, JMSBinding binding) 
{


Reply via email to