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 2008/04/17 10:25:29 UTC

svn commit: r648997 - in /incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms: impl/ provider/

Author: antelder
Date: Thu Apr 17 01:25:22 2008
New Revision: 648997

URL: http://svn.apache.org/viewvc?rev=648997&view=rev
Log:
Prototype support for more than XML Text JMS messages

Added:
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java   (with props)
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java   (with props)
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java   (with props)
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
      - copied, changed from r648260, incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java
Removed:
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java
Modified:
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java?rev=648997&r1=648996&r2=648997&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java Thu Apr 17 01:25:22 2008
@@ -173,9 +173,6 @@
     // interface it's stored here
     private String operationSelectorName = null;
 
-    // Set true if messages are sent/received in XML format
-    private boolean xmlFormat = true;
-
     // TODO .....
     private String replyTo;
 
@@ -452,14 +449,6 @@
 
     public void setOperationSelectorName(String operationSelectorName) {
         this.operationSelectorName = operationSelectorName;
-    }
-
-    public boolean getXMLFormat() {
-        return xmlFormat;
-    }
-
-    public void setXMLFormat(boolean b) {
-        this.xmlFormat = b;
     }
 
     /**

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java?rev=648997&r1=648996&r2=648997&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java Thu Apr 17 01:25:22 2008
@@ -24,7 +24,7 @@
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.xml.Constants;
-import org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessorImpl;
+import org.apache.tuscany.sca.binding.jms.provider.XMLTextMessageProcessor;
 
 public interface JMSBindingConstants {
 
@@ -52,7 +52,7 @@
     int DEFAULT_TIME_TO_LIVE = 20000; // in milliseconds
     int DEFAULT_PRIORITY = 1;
     String DEFAULT_RF_CLASSNAME = "org.apache.tuscany.sca.host.jms.activemq.JMSResourceFactoryImpl";
-    String DEFAULT_MP_CLASSNAME = JMSMessageProcessorImpl.class.getName();
+    String DEFAULT_MP_CLASSNAME = XMLTextMessageProcessor.class.getName();
     String DEFAULT_OPERATION_PROP_NAME = "scaOperationName";
 
     String FAULT_PROPERTY = "org.apache.tuscany.sca.fault";

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java?rev=648997&r1=648996&r2=648997&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java Thu Apr 17 01:25:22 2008
@@ -31,6 +31,9 @@
 
 import org.apache.tuscany.sca.assembly.xml.Constants;
 import org.apache.tuscany.sca.assembly.xml.PolicyAttachPointProcessor;
+import org.apache.tuscany.sca.binding.jms.provider.ObjectMessageProcessor;
+import org.apache.tuscany.sca.binding.jms.provider.TextMessageProcessor;
+import org.apache.tuscany.sca.binding.jms.provider.XMLTextMessageProcessor;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
@@ -162,8 +165,16 @@
         // Read message processor class name
         String messageProcessorName = reader.getAttributeValue(null, "messageProcessor");
         if (messageProcessorName != null && messageProcessorName.length() > 0) {
+            if ("XMLTextMessage".equalsIgnoreCase(messageProcessorName)) {
+                messageProcessorName = XMLTextMessageProcessor.class.getName();
+            } else if ("TextMessage".equalsIgnoreCase(messageProcessorName)) {
+                messageProcessorName = TextMessageProcessor.class.getName();
+            } else if ("ObjectMessage".equalsIgnoreCase(messageProcessorName)) {
+                messageProcessorName = ObjectMessageProcessor.class.getName();
+            }
             jmsBinding.setRequestMessageProcessorName(messageProcessorName);
             jmsBinding.setResponseMessageProcessorName(messageProcessorName);
+
         }
 
         // Read requestConnection

Added: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java?rev=648997&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java Thu Apr 17 01:25:22 2008
@@ -0,0 +1,120 @@
+/*
+ * 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.provider;
+
+import java.io.StringReader;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.ObjectMessage;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
+import org.osoa.sca.ServiceRuntimeException;
+
+public abstract class AbstractMessageProcessor implements JMSMessageProcessor {
+
+    protected String operationPropertyName;
+    protected boolean xmlFormat = true;
+
+    public AbstractMessageProcessor(JMSBinding jmsBinding) {
+        this.operationPropertyName = jmsBinding.getOperationSelectorPropertyName();
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#getOperationName(javax.jms.Message)
+     */
+    public String getOperationName(Message message) {
+        try {
+
+            return message.getStringProperty(operationPropertyName);
+
+        } catch (JMSException e) {
+            throw new JMSBindingException("Exception retreiving operation name from message", e);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#setOperationName(javax.jms.Message, java.lang.String)
+     */
+    public void setOperationName(String operationName, Message message) {
+        try {
+
+            message.setStringProperty(operationPropertyName, operationName);
+
+        } catch (JMSException e) {
+            throw new JMSBindingException("Exception setting the operation name on message", e);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#extractPayload(javax.jms.Session, java.lang.Object)
+     */
+    public Message insertPayloadIntoJMSMessage(Session session, Object o) {
+        return createJMSMessage(session, o);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#extractPayload(javax.jms.Message)
+     */
+    public Object extractPayloadFromJMSMessage(Message msg) {
+        try {
+            if (msg.getBooleanProperty(JMSBindingConstants.FAULT_PROPERTY)) {
+                throw new ServiceRuntimeException("remote service exception, see nested exception",(Throwable)((ObjectMessage)msg).getObject());
+            }
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+        return extractPayload(msg);
+    }
+
+    public Message createFaultMessage(Session session, Throwable o) {
+        try {
+
+            ObjectMessage message = session.createObjectMessage();
+            message.setObject(o);
+            message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, true);
+            return message;
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+
+    protected abstract Object[] extractPayload(Message msg);
+
+    protected abstract Message createJMSMessage(Session session, Object o);
+
+}

Propchange: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java?rev=648997&r1=648996&r2=648997&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java Thu Apr 17 01:25:22 2008
@@ -20,6 +20,8 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.jms.Destination;
 import javax.jms.JMSException;
@@ -37,6 +39,8 @@
 
 public class JMSBindingListener implements MessageListener {
 
+    private final static Logger logger = Logger.getLogger(JMSBindingListener.class.getName());
+
     private static final String ON_MESSAGE_METHOD_NAME = "onMessage";
     private JMSBinding jmsBinding;
     private JMSResourceFactory jmsResourceFactory;
@@ -57,10 +61,12 @@
     }
 
     public void onMessage(Message requestJMSMsg) {
+        logger.log(Level.FINE, "JMS service '" + service.getName() + "' received message " + requestJMSMsg);
         try {
             Object responsePayload = invokeService(requestJMSMsg);
             sendReply(requestJMSMsg, responsePayload, false);
         } catch (Throwable e) {
+            logger.log(Level.SEVERE, "Exception invoking service '" + service.getName(), e);
             sendReply(requestJMSMsg, e, true);
         }
     }
@@ -117,6 +123,9 @@
 
             if (requestJMSMsg.getJMSReplyTo() == null) {
                 // assume no reply is expected
+                if (responsePayload != null) {
+                    logger.log(Level.FINE, "JMS service '" + service.getName() + "' dropped response as request has no replyTo");
+                }
                 return;
             }
 

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java?rev=648997&r1=648996&r2=648997&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java Thu Apr 17 01:25:22 2008
@@ -54,7 +54,7 @@
         this.jmsBinding = binding;
         jmsResourceFactory = new JMSResourceFactory(binding.getConnectionFactoryName(), binding.getInitialContextFactoryName(), binding.getJndiURL());
 
-        if (jmsBinding.getXMLFormat()) {
+        if (XMLTextMessageProcessor.class.isAssignableFrom(jmsBinding.getRequestMessageProcessor().getClass())) {
             setXMLDataBinding(reference);
         }
 

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java?rev=648997&r1=648996&r2=648997&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java Thu Apr 17 01:25:22 2008
@@ -19,6 +19,9 @@
 
 package org.apache.tuscany.sca.binding.jms.provider;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 import javax.jms.Destination;
 import javax.jms.JMSException;
 import javax.jms.Message;
@@ -42,6 +45,7 @@
  * @version $Rev$ $Date$
  */
 public class JMSBindingServiceBindingProvider implements ServiceBindingProvider {
+    private final static Logger logger = Logger.getLogger(JMSBindingServiceBindingProvider.class.getName());
 
     private RuntimeComponentService service;
     private JMSBinding jmsBinding;
@@ -65,7 +69,7 @@
             jmsBinding.setDestinationName(service.getName());
         }
 
-        if (jmsBinding.getXMLFormat()) {
+        if (XMLTextMessageProcessor.class.isAssignableFrom(jmsBinding.getRequestMessageProcessor().getClass())) {
             setXMLDataBinding(service);
         }
 
@@ -152,6 +156,7 @@
                     }
                 }});
         }
+        logger.log(Level.INFO, "JMS service '" + service.getName() + "' listening on destination " + jmsBinding.getDestinationName());
     }
 
     /**

Added: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java?rev=648997&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java Thu Apr 17 01:25:22 2008
@@ -0,0 +1,64 @@
+/*
+ * 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.provider;
+
+import java.io.Serializable;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.ObjectMessage;
+import javax.jms.Session;
+
+import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
+
+public class ObjectMessageProcessor extends AbstractMessageProcessor {
+
+    public ObjectMessageProcessor(JMSBinding jmsBinding) {
+        super(jmsBinding);
+    }
+
+    @Override
+    protected Object[] extractPayload(Message msg) {
+        try {
+
+            return new Object[] {((ObjectMessage)msg).getObject()};
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+
+    protected Message createJMSMessage(Session session, Object o) {
+        try {
+
+            if (!(o instanceof Serializable)) {
+                throw new IllegalStateException("JMS ObjectMessage payload not Serializable: " + o);
+            }
+
+            ObjectMessage message = session.createObjectMessage();
+            message.setObject((Serializable)o);
+            return message;
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java?rev=648997&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java Thu Apr 17 01:25:22 2008
@@ -0,0 +1,63 @@
+/*
+ * 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.provider;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
+
+public class TextMessageProcessor extends AbstractMessageProcessor {
+
+    public TextMessageProcessor(JMSBinding jmsBinding) {
+        super(jmsBinding);
+    }
+
+    @Override
+    protected Object[] extractPayload(Message msg) {
+        try {
+
+            if (!(msg instanceof TextMessage)) {
+                throw new IllegalStateException("expecting JMS TextMessage: " + msg);
+            }
+
+            return new Object[]{((TextMessage)msg).getText()};
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+
+    @Override
+    protected Message createJMSMessage(Session session, Object o) {
+        try {
+
+            TextMessage message = session.createTextMessage();
+            message.setText(String.valueOf(o));
+            return message;
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java (from r648260, incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java?p2=incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java&p1=incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java&r1=648260&r2=648997&rev=648997&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java Thu Apr 17 01:25:22 2008
@@ -6,24 +6,22 @@
  * 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.    
+ * under the License.
  */
 package org.apache.tuscany.sca.binding.jms.provider;
 
-import java.io.Serializable;
 import java.io.StringReader;
 
 import javax.jms.JMSException;
 import javax.jms.Message;
-import javax.jms.ObjectMessage;
 import javax.jms.Session;
 import javax.jms.TextMessage;
 import javax.xml.stream.XMLInputFactory;
@@ -33,96 +31,28 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
-import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
-import org.osoa.sca.ServiceRuntimeException;
 
-public class JMSMessageProcessorImpl implements JMSMessageProcessor {
+public class XMLTextMessageProcessor extends AbstractMessageProcessor {
 
-    protected String operationPropertyName;
-    protected boolean xmlFormat;
-
-    public JMSMessageProcessorImpl(JMSBinding jmsBinding) {
-        this.operationPropertyName = jmsBinding.getOperationSelectorPropertyName();
-        this.xmlFormat = jmsBinding.getXMLFormat();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#getOperationName(javax.jms.Message)
-     */
-    public String getOperationName(Message message) {
-        try {
-
-            return message.getStringProperty(operationPropertyName);
-
-        } catch (JMSException e) {
-            throw new JMSBindingException("Exception retreiving operation name from message", e);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#setOperationName(javax.jms.Message, java.lang.String)
-     */
-    public void setOperationName(String operationName, Message message) {
-        try {
-
-            message.setStringProperty(operationPropertyName, operationName);
-
-        } catch (JMSException e) {
-            throw new JMSBindingException("Exception setting the operation name on message", e);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#extractPayload(javax.jms.Session, java.lang.Object)
-     */
-    public Message insertPayloadIntoJMSMessage(Session session, Object o) {
-        if (xmlFormat) {
-            return createXMLJMSMessage(session, o);
-        } else {
-            return createObjectJMSMessage(session, o);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#extractPayload(javax.jms.Message)
-     */
-    public Object extractPayloadFromJMSMessage(Message msg) {
-        try {
-            if (msg.getBooleanProperty(JMSBindingConstants.FAULT_PROPERTY)) {
-                throw new ServiceRuntimeException("remote service exception, see nested exception",(Throwable)((ObjectMessage)msg).getObject()); 
-            }
-        } catch (JMSException e) {
-            throw new JMSBindingException(e);
-        }
-        if (xmlFormat) {
-            return extractXMLPayload(msg);
-        } else {
-            return extractObjectPayload(msg);
-        }
+    public XMLTextMessageProcessor(JMSBinding jmsBinding) {
+        super(jmsBinding);
     }
 
-    protected Object extractXMLPayload(Message msg) {
+    @Override
+    protected Object[] extractPayload(Message msg) {
         try {
 
             String xml = ((TextMessage)msg).getText();
-            Object o = null;
+            Object[] os = null;
             if (xml != null) {
                 XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(xml));
                 StAXOMBuilder builder = new StAXOMBuilder(reader);
-                o = new Object[] { builder.getDocumentElement() };
+                os = new Object[] { builder.getDocumentElement() };
             } else {
-                o = new Object[]{};
+                os = new Object[]{};
             }
-            return o;
+            return os;
 
         } catch (XMLStreamException e) {
             throw new JMSBindingException(e);
@@ -131,29 +61,18 @@
         }
     }
 
-    protected Object extractObjectPayload(Message msg) {
-        try {
-
-            return ((ObjectMessage)msg).getObject();
-
-        } catch (JMSException e) {
-            throw new JMSBindingException(e);
-        }
-    }
-
-    protected Message createXMLJMSMessage(Session session, Object o) {
+    @Override
+    protected Message createJMSMessage(Session session, Object o) {
         try {
 
             TextMessage message = session.createTextMessage();
 
             if (o instanceof OMElement) {
                 message.setText(o.toString());
-            } else {
-                if (o instanceof Object[]) {
-                    message.setText(((Object[])o)[0].toString());
-                } else if (o != null) {
-                    message.setText(String.valueOf(o));
-                }
+            } else if ((o instanceof Object[]) && ((Object[])o)[0] instanceof OMElement) {
+                message.setText(((Object[])o)[0].toString());
+            } else if (o != null) {
+                throw new IllegalStateException("expecting OMElement payload: " + o);
             }
 
             return message;
@@ -163,28 +82,4 @@
         }
     }
 
-    protected Message createObjectJMSMessage(Session session, Object o) {
-        try {
-
-            ObjectMessage message = session.createObjectMessage(); // default
-            message.setObject((Serializable)o);
-            return message;
-
-        } catch (JMSException e) {
-            throw new JMSBindingException(e);
-        }
-    }
-
-    public Message createFaultMessage(Session session, Throwable o) {
-        try {
-
-            ObjectMessage message = session.createObjectMessage(); 
-            message.setObject(o);
-            message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, true);
-            return message;
-
-        } catch (JMSException e) {
-            throw new JMSBindingException(e);
-        }
-    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org