You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2008/05/13 08:17:11 UTC

svn commit: r655745 - in /servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src: main/java/org/apache/servicemix/camel/ test/java/org/apache/servicemix/camel/ test/java/org/apache/servicemix/camel/su7/ test/resources/org/apache/servicem...

Author: ffang
Date: Mon May 12 23:17:10 2008
New Revision: 655745

URL: http://svn.apache.org/viewvc?rev=655745&view=rev
Log:
[SM-1111] apply patch on behalf of Willem Jiang and Kristian Koehler

Added:
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteDslTest.java   (with props)
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/MyRouter.java   (with props)
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml   (with props)
Modified:
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/ToJbiProcessor.java
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteTest.java

Modified: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java?rev=655745&r1=655744&r2=655745&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java (original)
+++ servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java Mon May 12 23:17:10 2008
@@ -16,6 +16,9 @@
  */
 package org.apache.servicemix.camel;
 
+import java.net.URISyntaxException;
+import java.util.Map;
+
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -23,21 +26,29 @@
 import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.util.URISupport;
 
 /**
  * Represents an {@link org.apache.camel.Endpoint} for interacting with JBI
- * 
+ *
  * @version $Revision: 563665 $
  */
 public class JbiEndpoint extends DefaultEndpoint<Exchange> {
     private Processor toJbiProcessor;
 
+    private String destinationUri;
+
+    private String mep;
+
+    private String operation;
+
     private final CamelJbiComponent jbiComponent;
 
     public JbiEndpoint(CamelJbiComponent jbiComponent, String uri) {
         super(uri, jbiComponent);
         this.jbiComponent = jbiComponent;
-        toJbiProcessor = new ToJbiProcessor(jbiComponent.getBinding(), jbiComponent.getComponentContext(), uri);
+        parseUri(uri);
+        toJbiProcessor = new ToJbiProcessor(jbiComponent.getBinding(), jbiComponent.getComponentContext(), this);
     }
 
     public Producer<Exchange> createProducer() throws Exception {
@@ -48,6 +59,48 @@
         };
     }
 
+    private void parseUri(String uri) {
+        destinationUri = uri;
+        try {
+            int idx = destinationUri.indexOf('?');
+            if (idx > 0) {
+                Map params = URISupport.parseQuery(destinationUri.substring(idx + 1));
+                mep = (String) params.get("mep");
+                if (mep != null && !mep.startsWith("http://www.w3.org/ns/wsdl/")) {
+                    mep = "http://www.w3.org/ns/wsdl/" + mep;
+                }
+                operation = (String) params.get("operation");
+                this.destinationUri = destinationUri.substring(0, idx);
+            }
+        } catch (URISyntaxException e) {
+            throw new JbiException(e);
+        }
+    }
+
+    public void setMep(String str) {
+        mep = str;
+    }
+
+    public void setOperation(String str) {
+        operation = str;
+    }
+
+    public void setDestionationUri(String str) {
+        destinationUri = str;
+    }
+
+    public String getMep() {
+        return mep;
+    }
+
+    public String getOperation() {
+        return operation;
+    }
+
+    public String getDestinationUri() {
+        return destinationUri;
+    }
+
     public Consumer<Exchange> createConsumer(final Processor processor) throws Exception {
         return new DefaultConsumer<Exchange>(this, processor) {
             CamelJbiEndpoint jbiEndpoint;

Modified: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/ToJbiProcessor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/ToJbiProcessor.java?rev=655745&r1=655744&r2=655745&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/ToJbiProcessor.java (original)
+++ servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/main/java/org/apache/servicemix/camel/ToJbiProcessor.java Mon May 12 23:17:10 2008
@@ -17,7 +17,6 @@
 package org.apache.servicemix.camel;
 
 import java.net.URISyntaxException;
-import java.util.Map;
 import java.util.Set;
 
 import javax.jbi.component.ComponentContext;
@@ -32,7 +31,6 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
-import org.apache.camel.util.URISupport;
 import org.apache.servicemix.jbi.resolver.URIResolver;
 
 /**
@@ -47,30 +45,12 @@
 
     private ComponentContext componentContext;
 
-    private String destinationUri;
+    private JbiEndpoint jbiEndpoint;
 
-    private String mep;
-
-    private String operation;
-
-    public ToJbiProcessor(JbiBinding binding, ComponentContext componentContext, String destinationUri) {
+    public ToJbiProcessor(JbiBinding binding, ComponentContext componentContext, JbiEndpoint endpoint) {
         this.binding = binding;
         this.componentContext = componentContext;
-        this.destinationUri = destinationUri;
-        try {
-            int idx = destinationUri.indexOf('?');
-            if (idx > 0) {
-                Map params = URISupport.parseQuery(destinationUri.substring(idx + 1));
-                mep = (String) params.get("mep");
-                if (mep != null && !mep.startsWith("http://www.w3.org/ns/wsdl/")) {
-                    mep = "http://www.w3.org/ns/wsdl/" + mep;
-                }
-                operation = (String) params.get("operation");
-                this.destinationUri = destinationUri.substring(0, idx);
-            }
-        } catch (URISyntaxException e) {
-            throw new JbiException(e);
-        }
+        jbiEndpoint = endpoint;
     }
 
     private void addHeaders(MessageExchange messageExchange, Exchange camelExchange) {
@@ -93,13 +73,13 @@
         try {
             DeliveryChannel deliveryChannel = componentContext.getDeliveryChannel();
             MessageExchangeFactory exchangeFactory = deliveryChannel.createExchangeFactory();
-            MessageExchange messageExchange = binding.makeJbiMessageExchange(exchange, exchangeFactory, mep);
+            MessageExchange messageExchange = binding.makeJbiMessageExchange(exchange, exchangeFactory, jbiEndpoint.getMep());
 
-            if (operation != null) {
-                messageExchange.setOperation(QName.valueOf(operation));
+            if (jbiEndpoint.getOperation() != null) {
+                messageExchange.setOperation(QName.valueOf(jbiEndpoint.getOperation()));
             }
 
-            URIResolver.configureExchange(messageExchange, componentContext, destinationUri);
+            URIResolver.configureExchange(messageExchange, componentContext, jbiEndpoint.getDestinationUri());
             deliveryChannel.sendSync(messageExchange);
 
             if (messageExchange.getStatus() == ExchangeStatus.ERROR) {

Added: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteDslTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteDslTest.java?rev=655745&view=auto
==============================================================================
--- servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteDslTest.java (added)
+++ servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteDslTest.java Mon May 12 23:17:10 2008
@@ -0,0 +1,40 @@
+/*
+ * 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.servicemix.camel;
+
+import javax.jbi.messaging.MessageExchange;
+
+/**
+ * @version $Revision$
+ */
+public class JavaCamelRouteDslTest extends JbiInOutTest {
+    /*
+     * @see TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        suName = "su7";
+    }
+
+    @Override
+    protected void checkResult(MessageExchange exchange) {
+        assertNotNull(exchange.getMessage("out"));
+        assertNotNull(exchange.getMessage("out").getProperty("operation"));
+        assertEquals(exchange.getMessage("out").getProperty("operation").toString(), "{http://test}echo");
+    }
+}
\ No newline at end of file

Propchange: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteDslTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteDslTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteTest.java?rev=655745&r1=655744&r2=655745&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteTest.java (original)
+++ servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JavaCamelRouteTest.java Mon May 12 23:17:10 2008
@@ -35,5 +35,6 @@
     protected void checkResult(MessageExchange exchange) {
         assertNotNull(exchange.getMessage("out"));
         assertNotNull(exchange.getMessage("out").getProperty("operation"));
+        assertEquals(exchange.getMessage("out").getProperty("operation").toString(), "{http://hello}echo");
     }
 }
\ No newline at end of file

Added: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/MyRouter.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/MyRouter.java?rev=655745&view=auto
==============================================================================
--- servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/MyRouter.java (added)
+++ servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/MyRouter.java Mon May 12 23:17:10 2008
@@ -0,0 +1,38 @@
+/*
+ * 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.servicemix.camel.su7;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.servicemix.camel.JbiEndpoint;
+
+/**
+ * @version $Revision$
+ */
+public class MyRouter extends RouteBuilder {
+    String toUri = "jbi:service:namespace:echo?mep=in-out";
+
+    public void configure() throws Exception {
+        // Set the operation from Camel DSL
+        org.apache.camel.Endpoint endpoint = getContext().getEndpoint(toUri);
+        if (endpoint instanceof JbiEndpoint) {
+            JbiEndpoint jbiEndpoint = (JbiEndpoint) endpoint;
+            jbiEndpoint.setOperation("{http://test}echo");
+        }
+
+        from("jbi:name:cheese").to(toUri);
+    }
+}

Propchange: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/MyRouter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su7/MyRouter.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml?rev=655745&view=auto
==============================================================================
--- servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml (added)
+++ servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml Mon May 12 23:17:10 2008
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<!-- START SNIPPET: camel -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+       http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
+    ">
+
+  <camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
+    <package>org.apache.servicemix.camel.su7</package>
+  </camelContext>
+
+</beans>
+<!-- END SNIPPET: camel -->

Propchange: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: servicemix/smx3/trunk/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su7-src/camel-context.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml