You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by js...@apache.org on 2007/08/17 20:08:58 UTC

svn commit: r567098 - in /incubator/servicemix/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache: camel/ servicemix/camel/JbiBinding.java

Author: jstrachan
Date: Fri Aug 17 11:08:57 2007
New Revision: 567098

URL: http://svn.apache.org/viewvc?view=rev&rev=567098
Log:
further improvements in the defaulting of the MEP when converting a Camel Exchange into a JBI MessageExchange - if there is an OUT message with a non-null body, then assume by default InOut otherwise use InOnly

Removed:
    incubator/servicemix/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/camel/
Modified:
    incubator/servicemix/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiBinding.java

Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiBinding.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiBinding.java?view=diff&rev=567098&r1=567097&r2=567098
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiBinding.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiBinding.java Fri Aug 17 11:08:57 2007
@@ -29,8 +29,7 @@
 import javax.xml.transform.stream.StreamSource;
 
 import org.apache.camel.Exchange;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.apache.camel.Message;
 import static org.apache.servicemix.camel.CamelConstants.MessageExchangePattern.*;
 
 /**
@@ -39,8 +38,7 @@
  * @version $Revision: 563665 $
  */
 public class JbiBinding {
-    private static final transient Log LOG = LogFactory.getLog(JbiBinding.class);
-    private String messageExchangePattern = IN_ONLY;
+    private String messageExchangePattern;
 
     /**
      * Extracts the body from the given normalized message
@@ -87,21 +85,30 @@
         if (mep == null) {
             mep = getMessageExchangePattern();
         }
+        MessageExchange answer = null;
         if (mep != null) {
             if (IN_ONLY.equals(mep)) {
-                return exchangeFactory.createInOnlyExchange();
+                answer = exchangeFactory.createInOnlyExchange();
             } else if (IN_OPTIONAL_OUT.equals(mep)) {
-                return exchangeFactory.createInOptionalOutExchange();
+                answer = exchangeFactory.createInOptionalOutExchange();
             } else if (IN_OUT.equals(mep)) {
-                return exchangeFactory.createInOutExchange();
+                answer = exchangeFactory.createInOutExchange();
             } else if (ROBUST_IN_ONLY.equals(mep)) {
-                return exchangeFactory.createRobustInOnlyExchange();
+                answer = exchangeFactory.createRobustInOnlyExchange();
             } else {
-                return exchangeFactory.createExchange(new URI(mep));
+                answer = exchangeFactory.createExchange(new URI(mep));
             }
         }
-        LOG.warn("No MessageExchangePattern specified so using InOnly");
-        return exchangeFactory.createInOnlyExchange();
+        if (answer == null) {
+            // lets try choose the best MEP based on the camel message
+            Message out = camelExchange.getOut(false);
+            if (out == null || out.getBody() == null) {
+                answer = exchangeFactory.createInOnlyExchange();
+            } else {
+                answer = exchangeFactory.createInOutExchange();
+            }
+        }
+        return answer;
     }
 
     protected Source getJbiInContent(Exchange camelExchange) {