mirror of
https://github.com/apache/activemq.git
synced 2025-02-28 05:09:07 +00:00
fixed some failing tests - with much better tests that test headers move across camel routing steps and that we can invoke a request/reply explicitly using JMS headers
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@641380 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
401937a115
commit
0b6cd58fb7
@ -16,35 +16,36 @@
|
||||
*/
|
||||
package org.apache.activemq.camel.component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.jms.Destination;
|
||||
|
||||
import static org.apache.activemq.camel.component.ActiveMQComponent.activeMQComponent;
|
||||
import org.apache.activemq.camel.converter.ActiveMQConverter;
|
||||
import org.apache.camel.CamelContext;
|
||||
import org.apache.camel.ContextTestSupport;
|
||||
import org.apache.camel.Exchange;
|
||||
import org.apache.camel.Message;
|
||||
import org.apache.camel.builder.RouteBuilder;
|
||||
import static org.apache.activemq.camel.component.ActiveMQComponent.activeMQComponent;
|
||||
import org.apache.activemq.camel.converter.ActiveMQConverter;
|
||||
import org.apache.camel.component.mock.AssertionClause;
|
||||
import org.apache.camel.component.mock.MockEndpoint;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import javax.jms.Destination;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class ActiveMQReplyToHeaderUsingConverterTest extends ContextTestSupport {
|
||||
private static final transient Log LOG = LogFactory.getLog(ActiveMQReplyToHeaderUsingConverterTest.class);
|
||||
|
||||
protected Object expectedBody = "<time>" + new Date() + "</time>";
|
||||
protected String replyQueueName = "queue://test.my.reply.queue";
|
||||
protected String correlationID = "ABC-123";
|
||||
protected String groupID = "GROUP-XYZ";
|
||||
protected String messageType = getClass().getName();
|
||||
protected boolean useReplyToHeader = false;
|
||||
|
||||
public void testSendingAMessageFromCamelSetsCustomJmsHeaders() throws Exception {
|
||||
MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
|
||||
@ -53,13 +54,17 @@ public class ActiveMQReplyToHeaderUsingConverterTest extends ContextTestSupport
|
||||
AssertionClause firstMessage = resultEndpoint.message(0);
|
||||
firstMessage.header("cheese").isEqualTo(123);
|
||||
firstMessage.header("JMSCorrelationID").isEqualTo(correlationID);
|
||||
firstMessage.header("JMSReplyTo").isEqualTo(ActiveMQConverter.toDestination(replyQueueName));
|
||||
if (useReplyToHeader) {
|
||||
firstMessage.header("JMSReplyTo").isEqualTo(ActiveMQConverter.toDestination(replyQueueName));
|
||||
}
|
||||
firstMessage.header("JMSType").isEqualTo(messageType);
|
||||
firstMessage.header("JMSXGroupID").isEqualTo(groupID);
|
||||
|
||||
Map<String, Object> headers = new HashMap<String, Object>();
|
||||
headers.put("cheese", 123);
|
||||
headers.put("JMSReplyTo", replyQueueName);
|
||||
if (useReplyToHeader) {
|
||||
headers.put("JMSReplyTo", replyQueueName);
|
||||
}
|
||||
headers.put("JMSCorrelationID", correlationID);
|
||||
headers.put("JMSType", messageType);
|
||||
headers.put("JMSXGroupID", groupID);
|
||||
@ -72,8 +77,10 @@ public class ActiveMQReplyToHeaderUsingConverterTest extends ContextTestSupport
|
||||
Message in = exchange.getIn();
|
||||
Object replyTo = in.getHeader("JMSReplyTo");
|
||||
LOG.info("Reply to is: " + replyTo);
|
||||
Destination destination = assertIsInstanceOf(Destination.class, replyTo);
|
||||
assertEquals("ReplyTo", replyQueueName, destination.toString());
|
||||
if (useReplyToHeader) {
|
||||
Destination destination = assertIsInstanceOf(Destination.class, replyTo);
|
||||
assertEquals("ReplyTo", replyQueueName, destination.toString());
|
||||
}
|
||||
|
||||
assertMessageHeader(in, "cheese", 123);
|
||||
assertMessageHeader(in, "JMSCorrelationID", correlationID);
|
||||
|
@ -0,0 +1,138 @@
|
||||
/**
|
||||
* 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.component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.jms.Destination;
|
||||
|
||||
import static org.apache.activemq.camel.component.ActiveMQComponent.activeMQComponent;
|
||||
import org.apache.camel.CamelContext;
|
||||
import org.apache.camel.ContextTestSupport;
|
||||
import org.apache.camel.Exchange;
|
||||
import org.apache.camel.Headers;
|
||||
import org.apache.camel.Message;
|
||||
import org.apache.camel.builder.RouteBuilder;
|
||||
import org.apache.camel.component.mock.AssertionClause;
|
||||
import org.apache.camel.component.mock.MockEndpoint;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.*;
|
||||
|
||||
/**
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class InvokeRequestReplyUsingJmsReplyToHeaderTest extends ContextTestSupport {
|
||||
private static final transient Log LOG = LogFactory.getLog(ActiveMQReplyToHeaderUsingConverterTest.class);
|
||||
protected String replyQueueName = "queue://test.reply";
|
||||
protected Object correlationID = "ABC-123";
|
||||
protected Object groupID = "GROUP-XYZ";
|
||||
private MyServer myBean = new MyServer();
|
||||
|
||||
public void testPerformRequestReplyOverJms() throws Exception {
|
||||
MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
|
||||
|
||||
resultEndpoint.expectedBodiesReceived("Hello James");
|
||||
AssertionClause firstMessage = resultEndpoint.message(0);
|
||||
firstMessage.header("JMSCorrelationID").isEqualTo(correlationID);
|
||||
/*
|
||||
TODO - allow JMS headers to be copied?
|
||||
|
||||
firstMessage.header("cheese").isEqualTo(123);
|
||||
firstMessage.header("JMSXGroupID").isEqualTo(groupID);
|
||||
firstMessage.header("JMSReplyTo").isEqualTo(ActiveMQConverter.toDestination(replyQueueName));
|
||||
*/
|
||||
|
||||
Map<String, Object> headers = new HashMap<String, Object>();
|
||||
headers.put("cheese", 123);
|
||||
headers.put("JMSReplyTo", replyQueueName);
|
||||
headers.put("JMSCorrelationID", correlationID);
|
||||
headers.put("JMSXGroupID", groupID);
|
||||
template.sendBodyAndHeaders("activemq:test.server", "James", headers);
|
||||
|
||||
resultEndpoint.assertIsSatisfied();
|
||||
|
||||
List<Exchange> list = resultEndpoint.getReceivedExchanges();
|
||||
Exchange exchange = list.get(0);
|
||||
Message in = exchange.getIn();
|
||||
Object replyTo = in.getHeader("JMSReplyTo");
|
||||
LOG.info("Reply to is: " + replyTo);
|
||||
|
||||
LOG.info("Received headers: " + in.getHeaders());
|
||||
LOG.info("Received body: " + in.getBody());
|
||||
|
||||
assertMessageHeader(in, "JMSCorrelationID", correlationID);
|
||||
|
||||
/*
|
||||
TODO
|
||||
Destination destination = assertIsInstanceOf(Destination.class, replyTo);
|
||||
assertEquals("ReplyTo", replyQueueName, destination.toString());
|
||||
assertMessageHeader(in, "cheese", 123);
|
||||
assertMessageHeader(in, "JMSXGroupID", groupID);
|
||||
*/
|
||||
|
||||
Map<String,Object> receivedHeaders = myBean.getHeaders();
|
||||
|
||||
assertThat(receivedHeaders, hasKey("JMSReplyTo"));
|
||||
assertThat(receivedHeaders, hasEntry("JMSXGroupID", groupID));
|
||||
assertThat(receivedHeaders, hasEntry("JMSCorrelationID", correlationID));
|
||||
|
||||
replyTo = receivedHeaders.get("JMSReplyTo");
|
||||
LOG.info("Reply to is: " + replyTo);
|
||||
Destination destination = assertIsInstanceOf(Destination.class, replyTo);
|
||||
assertEquals("ReplyTo", replyQueueName, destination.toString());
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected CamelContext createCamelContext() throws Exception {
|
||||
CamelContext camelContext = super.createCamelContext();
|
||||
|
||||
// START SNIPPET: example
|
||||
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
|
||||
// END SNIPPET: example
|
||||
|
||||
return camelContext;
|
||||
}
|
||||
|
||||
protected RouteBuilder createRouteBuilder() throws Exception {
|
||||
return new RouteBuilder() {
|
||||
public void configure() throws Exception {
|
||||
from("activemq:test.server").bean(myBean);
|
||||
|
||||
from("activemq:test.reply").to("mock:result");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
protected static class MyServer {
|
||||
private Map<String,Object> headers;
|
||||
|
||||
public String process(@Headers Map<String,Object> headers, String body) {
|
||||
this.headers = headers;
|
||||
LOG.info("process() invoked with headers: " + headers);
|
||||
return "Hello " + body;
|
||||
}
|
||||
|
||||
public Map<String,Object> getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user