mirror of https://github.com/apache/activemq.git
(cherry picked from commit7951037f20
) (cherry picked from commitf3aedc753c
)
This commit is contained in:
parent
7a262b74db
commit
5a8cd29195
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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>
|
Loading…
Reference in New Issue