You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/06/29 12:05:39 UTC

svn commit: r417980 - in /incubator/servicemix/trunk/servicemix-components/src: main/java/org/apache/servicemix/components/groovy/ main/java/org/apache/servicemix/components/http/ main/java/org/apache/servicemix/components/saaj/ main/java/org/apache/se...

Author: gnodet
Date: Thu Jun 29 03:05:37 2006
New Revision: 417980

URL: http://svn.apache.org/viewvc?rev=417980&view=rev
Log:
SM-460: better support for properties and attachments
Script component and Saaj component now inherit TransformComponentSupport.
Remove unusable SaajInBinding, and add deprecation warnings on components now implemented in EIP
Also fix (once more) the SAAJ SOAPAction header

Removed:
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/saaj/SaajInBinding.java
Modified:
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/groovy/GroovyComponent.java
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpInvoker.java
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpsInvoker.java
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/saaj/SaajBinding.java
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/script/ScriptComponent.java
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/splitter/SplitterComponent.java
    incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/saaj/SaajSoapActionTest.java

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/groovy/GroovyComponent.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/groovy/GroovyComponent.java?rev=417980&r1=417979&r2=417980&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/groovy/GroovyComponent.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/groovy/GroovyComponent.java Thu Jun 29 03:05:37 2006
@@ -70,9 +70,9 @@
         this.documentBuilderFactory = documentBuilderFactory;
     }
 
-    protected void populateNamespace(Namespace namespace, MessageExchange exchange, NormalizedMessage message) throws MessagingException {
+    protected void populateNamespace(Namespace namespace, MessageExchange exchange, NormalizedMessage in, NormalizedMessage out) throws MessagingException {
         try {
-            super.populateNamespace(namespace, exchange, message);
+            super.populateNamespace(namespace, exchange, in, out);
 
             // lets output a builder
             DocumentBuilder documentBuilder = getDocumentBuilder();

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpInvoker.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpInvoker.java?rev=417980&r1=417979&r2=417980&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpInvoker.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpInvoker.java Thu Jun 29 03:05:37 2006
@@ -69,7 +69,6 @@
 
             // now lets grab the output and set it on the out message
             if (defaultInOut) {
-                copyPropertiesAndAttachments(exchange, in, out);
                 marshaler.toNMS(out, method);
             }
             return defaultInOut;

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpsInvoker.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpsInvoker.java?rev=417980&r1=417979&r2=417980&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpsInvoker.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/http/HttpsInvoker.java Thu Jun 29 03:05:37 2006
@@ -209,7 +209,6 @@
 
             // now lets grab the output and set it on the out message
             if (defaultInOut) {
-                copyPropertiesAndAttachments(exchange, in, out);
                 marshaler.toNMS(out, method);
             }
             return defaultInOut;

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/saaj/SaajBinding.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/saaj/SaajBinding.java?rev=417980&r1=417979&r2=417980&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/saaj/SaajBinding.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/saaj/SaajBinding.java Thu Jun 29 03:05:37 2006
@@ -17,9 +17,7 @@
 
 import java.io.ByteArrayOutputStream;
 
-import javax.jbi.messaging.ExchangeStatus;
 import javax.jbi.messaging.MessageExchange;
-import javax.jbi.messaging.MessagingException;
 import javax.jbi.messaging.NormalizedMessage;
 import javax.xml.soap.MimeHeaders;
 import javax.xml.soap.SOAPConnection;
@@ -30,7 +28,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.servicemix.MessageExchangeListener;
-import org.apache.servicemix.components.util.ComponentSupport;
+import org.apache.servicemix.components.util.TransformComponentSupport;
 
 /**
  * Converts an inbound JBI message into a <a href="http://java.sun.com/xml/saaj/">SAAJ</a> (Soap With Attachments for Java)
@@ -39,7 +37,7 @@
  *
  * @version $Revision$
  */
-public class SaajBinding extends ComponentSupport implements MessageExchangeListener {
+public class SaajBinding extends TransformComponentSupport implements MessageExchangeListener {
 
     private static final transient Log log = LogFactory.getLog(SaajBinding.class);
 
@@ -76,23 +74,18 @@
         this.marshaler = marshaler;
     }
 
-    public void onMessageExchange(MessageExchange exchange) throws MessagingException {
-        if (exchange.getStatus() == ExchangeStatus.DONE) {
-            return;
-        } else if (exchange.getStatus() == ExchangeStatus.ERROR) {
-            return;
-        }
-        SOAPConnection connection = null;
+    protected boolean transform(MessageExchange exchange, NormalizedMessage in, NormalizedMessage out) throws Exception {
+        SOAPConnection connection = getConnectionFactory().createConnection();
         try {
-            connection = getConnectionFactory().createConnection();
-
-            SOAPMessage inMessage = marshaler.createSOAPMessage(exchange.getMessage("in"));
-            if (soapAction != null) {
-                MimeHeaders mh = inMessage.getMimeHeaders();
-                if (mh.getHeader("SOAPAction") == null) {
+            SOAPMessage inMessage = marshaler.createSOAPMessage(in);
+            MimeHeaders mh = inMessage.getMimeHeaders();
+            if (mh.getHeader("SOAPAction") == null) {
+                if (soapAction != null && soapAction.length() > 0) {
                     mh.addHeader("SOAPAction", soapAction);
-                    inMessage.saveChanges();
+                } else {
+                    mh.addHeader("SOAPAction", "\"\"");
                 }
+                inMessage.saveChanges();
             }
 
             if (log.isDebugEnabled()) {
@@ -103,24 +96,18 @@
             
             SOAPMessage response = connection.call(inMessage, soapEndpoint);
             if (response != null) {
-                NormalizedMessage outMessage = exchange.createMessage();
-                marshaler.toNMS(outMessage, response);
-                answer(exchange, outMessage);
+                marshaler.toNMS(out, response);
+                return true;
             } else {
-                done(exchange);
+                return false;
             }
         }
-        catch (Exception e) {
-            fail(exchange, e);
-        }
         finally {
-            if (connection != null) {
-                try {
-                    connection.close();
-                }
-                catch (SOAPException e) {
-                    log.warn("Failed to close connection: " + e, e);
-                }
+            try {
+                connection.close();
+            }
+            catch (SOAPException e) {
+                log.warn("Failed to close connection: " + e, e);
             }
         }
     }

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/script/ScriptComponent.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/script/ScriptComponent.java?rev=417980&r1=417979&r2=417980&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/script/ScriptComponent.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/script/ScriptComponent.java Thu Jun 29 03:05:37 2006
@@ -15,12 +15,13 @@
  */
 package org.apache.servicemix.components.script;
 
-import org.apache.servicemix.MessageExchangeListener;
-import org.apache.servicemix.components.util.ComponentSupport;
-import org.springframework.core.io.Resource;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Logger;
 
 import javax.jbi.JBIException;
-import javax.jbi.messaging.ExchangeStatus;
 import javax.jbi.messaging.InOnly;
 import javax.jbi.messaging.MessageExchange;
 import javax.jbi.messaging.MessagingException;
@@ -32,11 +33,10 @@
 import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 import javax.xml.namespace.QName;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.util.logging.Logger;
-import java.util.HashMap;
-import java.util.Map;
+
+import org.apache.servicemix.components.util.TransformComponentSupport;
+import org.apache.servicemix.jbi.messaging.NormalizedMessageImpl;
+import org.springframework.core.io.Resource;
 
 /**
  * A component which is capable of invoking a compiledScript using
@@ -44,7 +44,7 @@
  *
  * @version $Revision$
  */
-public class ScriptComponent extends ComponentSupport implements MessageExchangeListener {
+public class ScriptComponent extends TransformComponentSupport {
 
     public static final QName SERVICE = new QName("http://servicemix.org/example/", "receiver");
     public static final String ENDPOINT = "receiver";
@@ -94,13 +94,6 @@
         }
     }
 
-    public void onMessageExchange(MessageExchange exchange) throws MessagingException {
-        if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
-            NormalizedMessage message = exchange.getMessage("in");
-            process(exchange, message);
-        }
-    }
-
     // Properties
     //-------------------------------------------------------------------------
     public ScriptEngine getEngine() {
@@ -212,23 +205,13 @@
 
     // Implementation methods
     //-------------------------------------------------------------------------
-    protected void process(MessageExchange exchange, NormalizedMessage message) throws MessagingException {
+    protected boolean transform(MessageExchange exchange, NormalizedMessage in, NormalizedMessage out) throws Exception {
         Namespace namespace = engine.createNamespace();
         
-        populateNamespace(namespace, exchange, message);
-
+        populateNamespace(namespace, exchange, in, out);
         try {
             runScript(namespace);
-            if (isInAndOut(exchange)) {
-                // nothing to do: out message will be sent 
-            } else if (!isDisableOutput()) {
-                InOnly outExchange = (InOnly) namespace.get("outExchange");
-                getDeliveryChannel().sendSync(outExchange);
-                exchange.setStatus(ExchangeStatus.DONE);
-            } else {
-                exchange.setStatus(ExchangeStatus.DONE);
-            }
-            getDeliveryChannel().send(exchange);
+            return !isDisableOutput();
         }
         catch (ScriptException e) {
             System.out.println("Caught: " + e);
@@ -237,26 +220,24 @@
         }
     }
 
-    protected void populateNamespace(Namespace namespace, MessageExchange exchange, NormalizedMessage message) throws MessagingException {
+    protected void populateNamespace(Namespace namespace, MessageExchange exchange, NormalizedMessage in, NormalizedMessage out) throws MessagingException {
         namespace.put("componentContext", getContext());
         namespace.put("deliveryChannel", getDeliveryChannel());
         namespace.put("exchange", exchange);
-        namespace.put("inMessage", message);
+        namespace.put("inMessage", in);
         namespace.put("log", getScriptLogger());
         namespace.put("componentNamespace", namespace);
         namespace.put("bindings", bindings);
 
         InOnly outExchange = null;
         if (isInAndOut(exchange)) {
-            NormalizedMessage out = exchange.createMessage();
-            exchange.setMessage(out, "out");
             namespace.put("outMessage", out);
         }
         else if (!isDisableOutput()) {
             outExchange = getExchangeFactory().createInOnlyExchange();
-            namespace.put("outExchange", outExchange);
-            NormalizedMessage out = outExchange.createMessage();
-            outExchange.setInMessage(out);
+            if (out instanceof NormalizedMessageImpl) {
+                namespace.put("outExchange", ((NormalizedMessageImpl) out).getExchange());
+            }
             namespace.put("outMessage", out);
         }
     }

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/splitter/SplitterComponent.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/splitter/SplitterComponent.java?rev=417980&r1=417979&r2=417980&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/splitter/SplitterComponent.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/splitter/SplitterComponent.java Thu Jun 29 03:05:37 2006
@@ -28,7 +28,7 @@
  * This Component splits a message according to a XPath expression.
  * 
  * @author george
- * 
+ * @deprecated use the XPathSplitter pattern from the EIP component instead
  */
 public class SplitterComponent extends TransformComponentSupport {
 

Modified: incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/saaj/SaajSoapActionTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/saaj/SaajSoapActionTest.java?rev=417980&r1=417979&r2=417980&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/saaj/SaajSoapActionTest.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/saaj/SaajSoapActionTest.java Thu Jun 29 03:05:37 2006
@@ -122,7 +122,7 @@
     
     public void testQuotesSoapActionAxis() throws Exception {
         String received = testSoapAction("\"\"", new org.apache.axis.soap.MessageFactoryImpl());
-        assertEquals("\"\"\"\"", received);
+        assertEquals("\"\"", received);
     }
     
     /*
@@ -134,7 +134,7 @@
     
     public void testWithSoapActionAxis() throws Exception {
         String received = testSoapAction("action", new org.apache.axis.soap.MessageFactoryImpl());
-        assertEquals("\"action\"", received);
+        assertEquals("action", received);
     }
     
     /*