You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/09/11 07:17:30 UTC

svn commit: r574458 - in /activemq/camel/trunk/components/camel-jms/src: main/java/org/apache/camel/component/jms/ test/java/org/apache/camel/component/jms/

Author: jstrachan
Date: Mon Sep 10 22:17:29 2007
New Revision: 574458

URL: http://svn.apache.org/viewvc?rev=574458&view=rev
Log:
added a helper method - also made it an error to use transacted consuming mode without specifying a transaction manager

Added:
    activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransactedRouteTest.java
      - copied, changed from r573786, activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java
Modified:
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
    activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?rev=574458&r1=574457&r2=574458&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Mon Sep 10 22:17:29 2007
@@ -23,6 +23,7 @@
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.jms.listener.serversession.ServerSessionFactory;
 import org.springframework.jms.support.converter.MessageConverter;
+import org.springframework.jms.connection.JmsTransactionManager;
 import org.springframework.transaction.PlatformTransactionManager;
 
 import javax.jms.ConnectionFactory;
@@ -92,9 +93,9 @@
     }
 
     public static JmsComponent jmsComponentTransacted(ConnectionFactory connectionFactory) {
-        JmsConfiguration template = new JmsConfiguration(connectionFactory);
-        template.setTransacted(true);
-        return jmsComponent(template);
+        JmsTransactionManager transactionManager = new JmsTransactionManager();
+        transactionManager.setConnectionFactory(connectionFactory);
+        return jmsComponentTransacted(connectionFactory, transactionManager);
     }
 
     public static JmsComponent jmsComponentTransacted(ConnectionFactory connectionFactory, PlatformTransactionManager transactionManager) {

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java?rev=574458&r1=574457&r2=574458&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java Mon Sep 10 22:17:29 2007
@@ -22,11 +22,11 @@
 import javax.jms.Message;
 import javax.jms.MessageProducer;
 import javax.jms.QueueSender;
+import javax.jms.Session;
 import javax.jms.TopicPublisher;
 
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.util.ObjectHelper;
-
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.jms.core.JmsOperations;
 import org.springframework.jms.core.JmsTemplate;
@@ -55,7 +55,7 @@
     private ConnectionFactory templateConnectionFactory;
     private ConnectionFactory listenerConnectionFactory;
     private int acknowledgementMode = -1;
-    private String acknowledgementModeName = AUTO_ACKNOWLEDGE;
+    private String acknowledgementModeName = null;
     // Used to configure the spring Container
     private ExceptionListener exceptionListener;
     private ConsumerType consumerType = ConsumerType.Default;
@@ -187,13 +187,17 @@
         }
 
         template.setSessionTransacted(transacted);
-
-        // This is here for completeness, but the template should not get used
-        // for receiving messages.
-        if (acknowledgementMode >= 0) {
-            template.setSessionAcknowledgeMode(acknowledgementMode);
-        } else if (acknowledgementModeName != null) {
-            template.setSessionAcknowledgeModeName(acknowledgementModeName);
+        if (transacted) {
+            template.setSessionAcknowledgeMode(Session.SESSION_TRANSACTED);
+        }
+        else {
+            // This is here for completeness, but the template should not get used
+            // for receiving messages.
+            if (acknowledgementMode >= 0) {
+                template.setSessionAcknowledgeMode(acknowledgementMode);
+            } else if (acknowledgementModeName != null) {
+                template.setSessionAcknowledgeModeName(acknowledgementModeName);
+            }
         }
         return template;
     }
@@ -231,11 +235,15 @@
         container.setAcceptMessagesWhileStopping(acceptMessagesWhileStopping);
         container.setExposeListenerSession(exposeListenerSession);
         container.setSessionTransacted(transacted);
-
-        if (acknowledgementMode >= 0) {
-            container.setSessionAcknowledgeMode(acknowledgementMode);
-        } else if (acknowledgementModeName != null) {
-            container.setSessionAcknowledgeModeName(acknowledgementModeName);
+        if (transacted) {
+            container.setSessionAcknowledgeMode(Session.SESSION_TRANSACTED);
+        }
+        else {
+            if (acknowledgementMode >= 0) {
+                container.setSessionAcknowledgeMode(acknowledgementMode);
+            } else if (acknowledgementModeName != null) {
+                container.setSessionAcknowledgeModeName(acknowledgementModeName);
+            }
         }
 
         if (container instanceof DefaultMessageListenerContainer) {
@@ -276,6 +284,9 @@
             }
             if (transactionManager != null) {
                 listenerContainer.setTransactionManager(transactionManager);
+            }
+            else if (transacted) {
+                throw new IllegalArgumentException("Property transacted is enabled but a transactionManager was not injected!");
             }
             if (transactionName != null) {
                 listenerContainer.setTransactionName(transactionName);

Modified: activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java?rev=574458&r1=574457&r2=574458&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java Mon Sep 10 22:17:29 2007
@@ -84,14 +84,6 @@
             public void configure() throws Exception {
                 from(startEndpointUri).to(componentName + ":queue:test.b");
                 from(componentName + ":queue:test.b").to("mock:result");
-
-                JmsEndpoint endpoint1 = (JmsEndpoint) endpoint(componentName + ":topic:quote.IONA");
-                endpoint1.getConfiguration().setTransacted(true);
-                from(endpoint1).to("mock:transactedClient");
-
-                JmsEndpoint endpoint2 = (JmsEndpoint) endpoint(componentName + ":topic:quote.IONA");
-                endpoint1.getConfiguration().setTransacted(true);
-                from(endpoint2).to("mock:nonTrasnactedClient");
             }
         };
     }

Copied: activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransactedRouteTest.java (from r573786, activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransactedRouteTest.java?p2=activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransactedRouteTest.java&p1=activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java&r1=573786&r2=574458&rev=574458&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransactedRouteTest.java Mon Sep 10 22:17:29 2007
@@ -22,77 +22,39 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentTransacted;
 import org.apache.camel.component.mock.MockEndpoint;
 
-import static org.apache.camel.component.jms.JmsComponent.jmsComponentClientAcknowledge;
-
 /**
  * @version $Revision$
  */
-public class JmsRouteTest extends ContextTestSupport {
-    protected MockEndpoint resultEndpoint;
-    protected String componentName = "activemq";
-    protected String startEndpointUri;
-
+public class JmsTransactedRouteTest extends ContextTestSupport {
     public void testJmsRouteWithTextMessage() throws Exception {
+        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
         String expectedBody = "Hello there!";
 
         resultEndpoint.expectedBodiesReceived(expectedBody);
         resultEndpoint.message(0).header("cheese").isEqualTo(123);
 
-        sendExchange(expectedBody);
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    public void testJmsRouteWithObjectMessage() throws Exception {
-        PurchaseOrder expectedBody = new PurchaseOrder("Beer", 10);
-
-        resultEndpoint.expectedBodiesReceived(expectedBody);
-        resultEndpoint.message(0).header("cheese").isEqualTo(123);
-
-        sendExchange(expectedBody);
+        template.sendBodyAndHeader("activemq:test.a", expectedBody, "cheese", 123);
 
         resultEndpoint.assertIsSatisfied();
     }
 
-    protected void sendExchange(final Object expectedBody) {
-        template.sendBodyAndHeader(startEndpointUri, expectedBody, "cheese", 123);
-    }
-
-
-    @Override
-    protected void setUp() throws Exception {
-        startEndpointUri = componentName + ":queue:test.a";
-
-        super.setUp();
-
-        resultEndpoint = (MockEndpoint) context.getEndpoint("mock:result");
-    }
-
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
 
-        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
-        camelContext.addComponent(componentName, jmsComponentClientAcknowledge(connectionFactory));
-
+        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false&broker.useJmx=false");
+        camelContext.addComponent("activemq", jmsComponentTransacted(connectionFactory));
         return camelContext;
     }
 
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                from(startEndpointUri).to(componentName + ":queue:test.b");
-                from(componentName + ":queue:test.b").to("mock:result");
-
-                JmsEndpoint endpoint1 = (JmsEndpoint) endpoint(componentName + ":topic:quote.IONA");
-                endpoint1.getConfiguration().setTransacted(true);
-                from(endpoint1).to("mock:transactedClient");
-
-                JmsEndpoint endpoint2 = (JmsEndpoint) endpoint(componentName + ":topic:quote.IONA");
-                endpoint1.getConfiguration().setTransacted(true);
-                from(endpoint2).to("mock:nonTrasnactedClient");
+                from("activemq:test.a").to("activemq:test.b");
+                from("activemq:test.b").to("mock:result");
             }
         };
     }
-}
+}
\ No newline at end of file