Repository: activemq Updated Branches: refs/heads/activemq-5.13.x f8488916c -> 27b08b03c
https://issues.apache.org/jira/browse/AMQ-6077 - test (cherry picked from commit 7951037f20e8d6752ab0bbd90189a8276bc61a55) Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/f3aedc75 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/f3aedc75 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/f3aedc75 Branch: refs/heads/activemq-5.13.x Commit: f3aedc753c877cd947c6eb968f1ca8d8d1809f8a Parents: f848891 Author: Dejan Bosanac <de...@nighttale.net> Authored: Mon Dec 14 14:02:31 2015 +0100 Committer: Christopher L. Shannon (cshannon) <christopher.l.shan...@gmail.com> Committed: Mon Dec 14 19:09:14 2015 +0000 ---------------------------------------------------------------------- .../activemq/camel/ObjectMessageTest.java | 83 +++++++++++++++++ .../apache/activemq/camel/ObjectPayload.java | 25 ++++++ .../activemq/camel/jms-object-message.xml | 93 ++++++++++++++++++++ 3 files changed, 201 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/f3aedc75/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectMessageTest.java ---------------------------------------------------------------------- diff --git a/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectMessageTest.java b/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectMessageTest.java new file mode 100644 index 0000000..226cfd3 --- /dev/null +++ b/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectMessageTest.java @@ -0,0 +1,83 @@ +/** + * 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.activemq.camel; + +import org.apache.activemq.ActiveMQConnectionFactory; +import org.apache.camel.Exchange; +import org.apache.camel.component.jms.JmsBinding; +import org.apache.camel.component.jms.JmsMessage; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.spring.CamelSpringTestSupport; +import org.apache.camel.util.ExchangeHelper; +import org.apache.xbean.spring.context.ClassPathXmlApplicationContext; +import org.junit.Test; +import org.springframework.context.support.AbstractApplicationContext; + +import javax.jms.*; +import java.util.concurrent.TimeUnit; + +public class ObjectMessageTest extends CamelSpringTestSupport { + + @Test + public void testUntrusted() throws Exception { + ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost"); + Connection conn = factory.createConnection(); + conn.start(); + Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer producer = sess.createProducer(sess.createTopic("foo")); + ObjectMessage msg = sess.createObjectMessage(); + ObjectPayload payload = new ObjectPayload(); + payload.payload = "test"; + msg.setObject(payload); + producer.send(msg); + + Thread.sleep(1000); + + MockEndpoint resultActiveMQ = resolveMandatoryEndpoint("mock:result-activemq", MockEndpoint.class); + resultActiveMQ.expectedMessageCount(1); + resultActiveMQ.assertIsSatisfied(); + assertCorrectObjectReceived(resultActiveMQ); + + MockEndpoint resultTrusted = resolveMandatoryEndpoint("mock:result-trusted", MockEndpoint.class); + resultTrusted.expectedMessageCount(1); + resultTrusted.assertIsSatisfied(); + assertCorrectObjectReceived(resultTrusted); + + MockEndpoint resultCamel = resolveMandatoryEndpoint("mock:result-camel", MockEndpoint.class); + resultCamel.expectedMessageCount(0); + resultCamel.assertIsSatisfied(1, TimeUnit.SECONDS); + + } + + protected void assertCorrectObjectReceived(MockEndpoint result) { + Exchange exchange = result.getReceivedExchanges().get(0); + // This should be a JMS Exchange + assertNotNull(ExchangeHelper.getBinding(exchange, JmsBinding.class)); + JmsMessage in = (JmsMessage) exchange.getIn(); + assertNotNull(in); + assertIsInstanceOf(ObjectMessage.class, in.getJmsMessage()); + + ObjectPayload received = exchange.getIn().getBody(ObjectPayload.class); + assertEquals("test", received.payload); + } + + @Override + protected AbstractApplicationContext createApplicationContext() { + AbstractApplicationContext context = new ClassPathXmlApplicationContext("org/apache/activemq/camel/jms-object-message.xml"); + return context; + } +} http://git-wip-us.apache.org/repos/asf/activemq/blob/f3aedc75/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectPayload.java ---------------------------------------------------------------------- diff --git a/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectPayload.java b/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectPayload.java new file mode 100644 index 0000000..301d03c --- /dev/null +++ b/activemq-camel/src/test/java/org/apache/activemq/camel/ObjectPayload.java @@ -0,0 +1,25 @@ +/** + * 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.activemq.camel; + +import java.io.Serializable; + +public class ObjectPayload implements Serializable { + private static final long serialVersionUID = 121277L; + + public String payload; +} http://git-wip-us.apache.org/repos/asf/activemq/blob/f3aedc75/activemq-camel/src/test/resources/org/apache/activemq/camel/jms-object-message.xml ---------------------------------------------------------------------- diff --git a/activemq-camel/src/test/resources/org/apache/activemq/camel/jms-object-message.xml b/activemq-camel/src/test/resources/org/apache/activemq/camel/jms-object-message.xml new file mode 100644 index 0000000..a4534c0 --- /dev/null +++ b/activemq-camel/src/test/resources/org/apache/activemq/camel/jms-object-message.xml @@ -0,0 +1,93 @@ +<?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. +--> +<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://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd + "> + + <camelContext xmlns="http://camel.apache.org/schema/spring"> + <route> + <from uri="activemq-activemq:topic:foo"/> + <to uri="mock:result-activemq"/> + </route> + <route> + <from uri="activemq-camel:topic:foo"/> + <to uri="mock:result-camel"/> + </route> + <route> + <from uri="activemq-trusted:topic:foo"/> + <to uri="mock:result-trusted"/> + </route> + </camelContext> + + <!-- configuration for activemq-camel endpoint --> + + <bean id="camelConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> + <property name="brokerURL" value="vm://localhost?broker.persistent=false"/> + <property name="trustedPackages"> + <list> + <value>org.apache.camel</value> + </list> + </property> + </bean> + + <bean id="camelConfig" class="org.apache.camel.component.jms.JmsConfiguration"> + <property name="connectionFactory" ref="camelConnectionFactory"/> + </bean> + + <bean id="activemq-camel" class="org.apache.activemq.camel.component.ActiveMQComponent"> + <property name="configuration" ref="camelConfig"/> + </bean> + + <!-- configuration for activemq-activemq endpoint --> + + <bean id="activemqConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> + <property name="brokerURL" value="vm://localhost?broker.persistent=false"/> + <property name="trustedPackages"> + <list> + <value>org.apache.activemq</value> + </list> + </property> + </bean> + + <bean id="activemqConfig" class="org.apache.camel.component.jms.JmsConfiguration"> + <property name="connectionFactory" ref="activemqConnectionFactory"/> + </bean> + + <bean id="activemq-activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> + <property name="configuration" ref="activemqConfig"/> + </bean> + + <!-- configuration for activemq-trusted endpoint --> + + <bean id="trustedConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> + <property name="brokerURL" value="vm://localhost?broker.persistent=false"/> + <property name="trustAllPackages" value="true"/> + </bean> + + <bean id="trustedConfig" class="org.apache.camel.component.jms.JmsConfiguration"> + <property name="connectionFactory" ref="trustedConnectionFactory"/> + </bean> + + <bean id="activemq-trusted" class="org.apache.activemq.camel.component.ActiveMQComponent"> + <property name="configuration" ref="trustedConfig"/> + </bean> + +</beans>