You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2009/03/27 15:56:49 UTC

svn commit: r759165 - in /servicemix/components/engines/servicemix-camel/trunk: pom.xml src/main/java/org/apache/servicemix/camel/CamelConsumerEndpoint.java src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java

Author: gertv
Date: Fri Mar 27 14:56:47 2009
New Revision: 759165

URL: http://svn.apache.org/viewvc?rev=759165&view=rev
Log:
SMXCOMP-489: Failure to send JBI MessageExchange should also notify Camel's AsyncCallback

Added:
    servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java
Modified:
    servicemix/components/engines/servicemix-camel/trunk/pom.xml
    servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelConsumerEndpoint.java

Modified: servicemix/components/engines/servicemix-camel/trunk/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/pom.xml?rev=759165&r1=759164&r2=759165&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-camel/trunk/pom.xml (original)
+++ servicemix/components/engines/servicemix-camel/trunk/pom.xml Fri Mar 27 14:56:47 2009
@@ -40,7 +40,7 @@
     <previous.releases>3.1.2,3.2,3.2.1,3.2.2,3.2.3,2008.01</previous.releases>
     <camel-version>1.6.0</camel-version>
     <servicemix-version>3.3</servicemix-version>
-    <servicemix-shared-version>2009.01</servicemix-shared-version>
+    <servicemix-shared-version>2009.02-SNAPSHOT</servicemix-shared-version>
     <servicemix.osgi.import>      
       org.apache.camel.converter,
       org.apache.camel.converter.jaxp,

Modified: servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelConsumerEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelConsumerEndpoint.java?rev=759165&r1=759164&r2=759165&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelConsumerEndpoint.java (original)
+++ servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelConsumerEndpoint.java Fri Mar 27 14:56:47 2009
@@ -89,9 +89,13 @@
             send(messageExchange);
             return false;
         } catch (MessagingException e) {
-            throw new JbiException(e);
+            exchange.setException(e);
+            asyncCallback.done(true);
+            return true;
         } catch (URISyntaxException e) {
-            throw new JbiException(e);
+            exchange.setException(e);
+            asyncCallback.done(true);
+            return true;
         }
     }
 
@@ -124,8 +128,10 @@
             }
 
         } catch (MessagingException e) {
+            exchange.setException(e);
             throw new JbiException(e);
         } catch (URISyntaxException e) {
+            exchange.setException(e);
             throw new JbiException(e);
         }
     }

Added: servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java?rev=759165&view=auto
==============================================================================
--- servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java (added)
+++ servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java Fri Mar 27 14:56:47 2009
@@ -0,0 +1,74 @@
+/*
+ * 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 java.util.List;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOnly;
+import javax.xml.namespace.QName;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.converter.jaxp.StringSource;
+import org.apache.servicemix.client.DefaultServiceMixClient;
+import org.apache.servicemix.client.ServiceMixClient;
+import org.apache.servicemix.jbi.container.ActivationSpec;
+
+/**
+ * Tests on handling JBI InOnly exchanges by Camel
+ */
+public class JbiInOnlyAsyncCamelTest extends JbiTestSupport {
+
+    private static final String MESSAGE = "<just><a>test</a></just>";
+
+    public void testInOnlyExchangeThroughAsyncRoute() throws Exception {
+        MockEndpoint done = getMockEndpoint("mock:done");
+        done.expectedBodiesReceived(MESSAGE);
+        
+        MockEndpoint dlc = getMockEndpoint("mock:dlc");
+        dlc.expectedBodiesReceived(MESSAGE);
+
+        ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
+        InOnly exchange = client.createInOnlyExchange();
+        exchange.setService(new QName("urn:test", "in-only"));
+        exchange.getInMessage().setContent(new StringSource(MESSAGE));
+        assertTrue(client.sendSync(exchange));
+        done.assertIsSatisfied();
+        assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
+    }
+
+    @Override
+    protected void appendJbiActivationSpecs(List<ActivationSpec> activationSpecList) {
+        // no additional activation specs required
+    }
+
+    @Override
+    protected RouteBuilder createRoutes() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                errorHandler(deadLetterChannel("mock:dlc").maximumRedeliveries(0));
+
+                from("jbi:service:urn:test:in-only")
+                  .thread(1)
+                    .to("mock:done")
+                    .to("jbi:service:urn:test:non-existent-service");
+            }
+        };
+    }
+}