Commit in servicemix/base/src/main/java/org/servicemix/components/jms on MAIN
JmsServiceComponent.java+56-11.1 -> 1.2
added override properties for serviceName and operationName

servicemix/base/src/main/java/org/servicemix/components/jms
JmsServiceComponent.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- JmsServiceComponent.java	1 Aug 2005 00:03:05 -0000	1.1
+++ JmsServiceComponent.java	1 Aug 2005 07:06:26 -0000	1.2
@@ -28,6 +28,7 @@
 import javax.jms.MessageConsumer;
 import javax.jms.MessageListener;
 import javax.jms.Session;
+import javax.xml.namespace.QName;
 import javax.xml.transform.TransformerException;
 import org.activemq.util.JMSExceptionHelper;
 import org.apache.commons.logging.Log;
@@ -45,9 +46,25 @@
  * container for processing, and send back the result to the JMS requestor - used for the TopipcRequestor and
  * QueueRequestor pattern
  * 
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  */
 public class JmsServiceComponent extends ComponentSupport implements MessageListener, InitializingBean, DisposableBean {
+    /**
+     * property name for operation namespace
+     */
+    public String OPERATION_NAME_SPACE_PROP = "opNameSpace";
+    /**
+     * property name for operation local part
+     */
+    public String OPERATION_LOCAL_PROP = "opLocalPart";
+    /**
+     * property name for service namespace
+     */
+    public String SERVICE_NAME_SPACE_PROP = "servNameSpace";
+    /**
+     * property name for service local part
+     */
+    public String SERVICE_LOCAL_PROP = "servLocalPart";
     private static final Log log = LogFactory.getLog(JmsServiceComponent.class);
     private DestinationChooser destinationChooser;
     private JmsMarshaler marshaler = new JmsMarshaler();
@@ -150,6 +167,14 @@
             final InOut messageExchange = getDeliveryChannel().createExchangeFactory().createInOutExchange();
             NormalizedMessage inMessage = messageExchange.createMessage();
             try {
+                QName operation = getOperationFromMessage(jmsMessage);
+                QName service = getServiceFromMessage(jmsMessage);
+                if (operation != null){
+                    messageExchange.setOperation(operation);
+                }
+                if (service != null){
+                    messageExchange.setService(service);
+                }
                 marshaler.toNMS(inMessage, jmsMessage);
                 messageExchange.setInMessage(inMessage);
                 if (getDeliveryChannel().sendSync(messageExchange)) {
@@ -209,6 +234,36 @@
         if (result == null) {
             log.error("Coul not find an outbound destination for " + inboundMessage);
             throw new JMSException("No outbound JMS Destination can be found");
+        }
+        return result;
+    }
+    
+    protected QName getOperationFromMessage(Message message) throws JMSException{
+        QName result = null;
+        //get override defination for the operation
+        String operationName = message.getStringProperty(OPERATION_NAME_SPACE_PROP);
+        String operationLocal = message.getStringProperty(OPERATION_LOCAL_PROP);
+        if (operationLocal != null){
+            if (operationName != null){
+                result = new QName(operationName,operationLocal);
+            }else {
+                result = new QName(operationLocal);
+            }
+        }
+        return result;
+    }
+    
+    protected QName getServiceFromMessage(Message message) throws JMSException{
+        QName result = null;
+        //get override defination for the operation
+        String serviceName = message.getStringProperty(SERVICE_NAME_SPACE_PROP);
+        String seriviceLocal = message.getStringProperty(SERVICE_LOCAL_PROP);
+        if (seriviceLocal != null){
+            if (serviceName != null){
+                result = new QName(serviceName,seriviceLocal);
+            }else {
+                result = new QName(seriviceLocal);
+            }
         }
         return result;
     }
CVSspam 0.2.8



Reply via email to