You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2010/08/17 16:10:59 UTC

svn commit: r986314 - in /tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms: headers/HeaderServiceInterceptor.java provider/JMSBindingServiceBindingProvider.java

Author: antelder
Date: Tue Aug 17 14:10:58 2010
New Revision: 986314

URL: http://svn.apache.org/viewvc?rev=986314&view=rev
Log:
Add interceptor to handle setting properties on the response message

Added:
    tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java   (with props)
Modified:
    tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java

Added: tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.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/headers/HeaderServiceInterceptor.java?rev=986314&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java Tue Aug 17 14:10:58 2010
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.sca.binding.jms.headers;
+
+import java.util.Map;
+
+import javax.jms.JMSException;
+
+import org.apache.tuscany.sca.binding.jms.JMSBinding;
+import org.apache.tuscany.sca.binding.jms.JMSBindingException;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Interceptor;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.Message;
+
+public class HeaderServiceInterceptor implements Interceptor {
+
+    private Invoker next;
+    private JMSBinding jmsBinding;
+
+    public HeaderServiceInterceptor(JMSBinding jmsBinding) {
+        super();
+        this.jmsBinding = jmsBinding;
+    }
+
+    public Message invoke(Message msg) {
+        return invokeResponse(next.invoke(msg));
+    }
+    
+    public Message invokeResponse(Message tuscanyMsg) {
+        try {
+
+            javax.jms.Message jmsMsg = tuscanyMsg.getBody();
+            
+            Operation operation = tuscanyMsg.getOperation();
+            String operationName = operation.getName();
+
+            for (String propName : jmsBinding.getPropertyNames()) {
+                Object value = jmsBinding.getProperty(propName);
+                jmsMsg.setObjectProperty(propName, value);
+            }
+    
+            Map<String, Object> operationProperties = jmsBinding.getOperationProperties(operationName);
+            if (operationProperties != null) {
+                for (String propName : operationProperties.keySet()) {
+                    Object value = operationProperties.get(propName);
+                    jmsMsg.setObjectProperty(propName, value);
+                }
+            }
+            
+            return tuscanyMsg;
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        } 
+    }
+
+    public Invoker getNext() {
+        return next;
+    }
+
+    public void setNext(Invoker next) {
+        this.next = next;
+    }
+    
+  
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/headers/HeaderServiceInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.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/JMSBindingServiceBindingProvider.java?rev=986314&r1=986313&r2=986314&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java Tue Aug 17 14:10:58 2010
@@ -24,6 +24,7 @@ import java.util.logging.Logger;
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.binding.jms.JMSBinding;
 import org.apache.tuscany.sca.binding.jms.JMSBindingException;
+import org.apache.tuscany.sca.binding.jms.headers.HeaderServiceInterceptor;
 import org.apache.tuscany.sca.binding.jms.host.JMSServiceListener;
 import org.apache.tuscany.sca.binding.jms.host.JMSServiceListenerDetails;
 import org.apache.tuscany.sca.binding.jms.host.JMSServiceListenerFactory;
@@ -200,6 +201,8 @@ public class JMSBindingServiceBindingPro
         bindingChain.addInterceptor(Phase.SERVICE_BINDING_WIREFORMAT,
                                     new CallbackDestinationInterceptor(endpoint));
 
+        bindingChain.addInterceptor(Phase.SERVICE_BINDING_WIREFORMAT, new HeaderServiceInterceptor(jmsBinding));
+        
         // add request wire format
         bindingChain.addInterceptor(requestWireFormatProvider.getPhase(), 
                                     requestWireFormatProvider.createInterceptor());
@@ -209,6 +212,7 @@ public class JMSBindingServiceBindingPro
             bindingChain.addInterceptor(responseWireFormatProvider.getPhase(), 
                                         responseWireFormatProvider.createInterceptor());
         }
+        
     }
 
     public RuntimeComponent getComponent() {