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