INT-1568 removed '$' prefix for headers. Now there is NO prefix.

This commit is contained in:
Mark Fisher
2010-10-28 11:34:26 -04:00
parent c797666d19
commit f4f9484d18
14 changed files with 36 additions and 31 deletions

View File

@@ -44,7 +44,7 @@ public final class MessageHeaders implements Map<String, Object>, Serializable {
private static final Log logger = LogFactory.getLog(MessageHeaders.class);
public static final String PREFIX = "$";
public static final String PREFIX = "";
/**
* The key for the Message ID. This is an automatically generated UUID and

View File

@@ -11,6 +11,6 @@
default-request-channel="requestChannel"
service-interface="org.springframework.integration.gateway.GatewayWithHeaderAnnotations$TestService" />
<service-activator input-channel="requestChannel" expression="payload + headers.$priority"/>
<service-activator input-channel="requestChannel" expression="payload + headers.priority + headers.$custom"/>
</beans:beans>

View File

@@ -43,13 +43,14 @@ public class GatewayWithHeaderAnnotations {
@Test // INT-1205
public void priorityAsArgument() {
TestService gateway = (TestService) applicationContext.getBean("gateway");
String result = gateway.test("foo", 99);
assertEquals("foo99", result);
String result = gateway.test("foo", 99, "bar");
assertEquals("foo99bar", result);
}
public static interface TestService {
public String test(String str, @Header(MessageHeaders.PRIORITY) int priority);
// wrt INT-1205, priority no longer has a $ prefix, so here we are testing the $custom header as well
public String test(String str, @Header(MessageHeaders.PRIORITY) int priority, @Header("$custom") String custom);
}
}

View File

@@ -37,7 +37,9 @@ import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.SpelParserConfiguration;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.integration.Message;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.integration.test.util.TestUtils;
/**
@@ -112,18 +114,18 @@ public class ExpressionEvaluatingMessageProcessorTests {
@Test
public void testProcessMessageWithDollarInBrackets() {
Expression expression = expressionParser.parseExpression("headers['$id']");
Expression expression = expressionParser.parseExpression("headers['$foo_id']");
ExpressionEvaluatingMessageProcessor processor = new ExpressionEvaluatingMessageProcessor(expression);
GenericMessage<String> message = new GenericMessage<String>("foo");
assertEquals(message.getHeaders().getId(), processor.processMessage(message));
Message<String> message = MessageBuilder.withPayload("foo").setHeader("$foo_id", "abc").build();
assertEquals("abc", processor.processMessage(message));
}
@Test
public void testProcessMessageWithDollarPropertyAccess() {
Expression expression = expressionParser.parseExpression("headers.$id");
Expression expression = expressionParser.parseExpression("headers.$foo_id");
ExpressionEvaluatingMessageProcessor processor = new ExpressionEvaluatingMessageProcessor(expression);
GenericMessage<String> message = new GenericMessage<String>("foo");
assertEquals(message.getHeaders().getId(), processor.processMessage(message));
Message<String> message = MessageBuilder.withPayload("foo").setHeader("$foo_id", "xyz").build();
assertEquals("xyz", processor.processMessage(message));
}
@Test

View File

@@ -59,7 +59,7 @@ public class JsonInboundMessageMapperTests {
@Test
public void testToMessageWithHeadersAndStringPayload() throws Exception {
UUID id = UUID.randomUUID();
String jsonMessage = "{\"headers\":{\"$timestamp\":1,\"$id\":\"" + id + "\"},\"payload\":\"myPayloadStuff\"}";
String jsonMessage = "{\"headers\":{\"timestamp\":1,\"id\":\"" + id + "\"},\"payload\":\"myPayloadStuff\"}";
Message<String> expected = MessageBuilder.withPayload("myPayloadStuff").setHeader(MessageHeaders.TIMESTAMP, new Long(1)).setHeader(MessageHeaders.ID, id).build();
JsonInboundMessageMapper mapper = new JsonInboundMessageMapper(String.class);
Message<?> result = mapper.toMessage(jsonMessage);
@@ -80,7 +80,7 @@ public class JsonInboundMessageMapperTests {
public void testToMessageWithHeadersAndBeanPayload() throws Exception {
TestBean bean = new TestBean();
UUID id = UUID.randomUUID();
String jsonMessage = "{\"headers\":{\"$timestamp\":1,\"$id\":\"" + id + "\"},\"payload\":" + getBeanAsJson(bean) + "}";
String jsonMessage = "{\"headers\":{\"timestamp\":1,\"id\":\"" + id + "\"},\"payload\":" + getBeanAsJson(bean) + "}";
Message<TestBean> expected = MessageBuilder.withPayload(bean).setHeader(MessageHeaders.TIMESTAMP, new Long(1)).setHeader(MessageHeaders.ID, id).build();
JsonInboundMessageMapper mapper = new JsonInboundMessageMapper(TestBean.class);
Message<?> result = mapper.toMessage(jsonMessage);
@@ -101,7 +101,7 @@ public class JsonInboundMessageMapperTests {
public void testToMessageWithBeanHeaderAndStringPayload() throws Exception {
TestBean bean = new TestBean();
UUID id = UUID.randomUUID();
String jsonMessage = "{\"headers\":{\"$timestamp\":1,\"$id\":\"" + id + "\", \"myHeader\":" + getBeanAsJson(bean) + "},\"payload\":\"myPayloadStuff\"}";
String jsonMessage = "{\"headers\":{\"timestamp\":1,\"id\":\"" + id + "\", \"myHeader\":" + getBeanAsJson(bean) + "},\"payload\":\"myPayloadStuff\"}";
Message<String> expected = MessageBuilder.withPayload("myPayloadStuff").
setHeader(MessageHeaders.TIMESTAMP, new Long(1)).setHeader(MessageHeaders.ID, id).setHeader("myHeader", bean).build();
JsonInboundMessageMapper mapper = new JsonInboundMessageMapper(String.class);
@@ -115,7 +115,7 @@ public class JsonInboundMessageMapperTests {
@Test
public void testToMessageWithHeadersAndListOfStringsPayload() throws Exception {
UUID id = UUID.randomUUID();
String jsonMessage = "{\"headers\":{\"$timestamp\":1,\"$id\":\"" + id + "\"},\"payload\":[\"myPayloadStuff1\",\"myPayloadStuff2\",\"myPayloadStuff3\"]}";
String jsonMessage = "{\"headers\":{\"timestamp\":1,\"id\":\"" + id + "\"},\"payload\":[\"myPayloadStuff1\",\"myPayloadStuff2\",\"myPayloadStuff3\"]}";
List<String> expectedList = Arrays.asList(new String[]{"myPayloadStuff1", "myPayloadStuff2", "myPayloadStuff3"});
Message<List<String>> expected = MessageBuilder.withPayload(expectedList).setHeader(MessageHeaders.TIMESTAMP, new Long(1)).setHeader(MessageHeaders.ID, id).build();
JsonInboundMessageMapper mapper = new JsonInboundMessageMapper(new TypeReference<List<String>>(){});
@@ -128,7 +128,7 @@ public class JsonInboundMessageMapperTests {
TestBean bean1 = new TestBean();
TestBean bean2 = new TestBean();
UUID id = UUID.randomUUID();
String jsonMessage = "{\"headers\":{\"$timestamp\":1,\"$id\":\"" + id + "\"},\"payload\":[" + getBeanAsJson(bean1) + "," + getBeanAsJson(bean2) + "]}";
String jsonMessage = "{\"headers\":{\"timestamp\":1,\"id\":\"" + id + "\"},\"payload\":[" + getBeanAsJson(bean1) + "," + getBeanAsJson(bean2) + "]}";
List<TestBean> expectedList = Arrays.asList(new TestBean[]{bean1, bean2});
Message<List<TestBean>> expected = MessageBuilder.withPayload(expectedList).setHeader(MessageHeaders.TIMESTAMP, new Long(1)).setHeader(MessageHeaders.ID, id).build();
JsonInboundMessageMapper mapper = new JsonInboundMessageMapper(new TypeReference<List<TestBean>>(){});

View File

@@ -50,8 +50,8 @@ public class JsonOutboundMessageMapperTests {
JsonOutboundMessageMapper mapper = new JsonOutboundMessageMapper();
String result = mapper.fromMessage(testMessage);
assertTrue(result.contains("\"headers\":{"));
assertTrue(result.contains("\"$timestamp\":"+testMessage.getHeaders().getTimestamp()));
assertTrue(result.contains("\"$id\":\""+testMessage.getHeaders().getId()+"\""));
assertTrue(result.contains("\"timestamp\":"+testMessage.getHeaders().getTimestamp()));
assertTrue(result.contains("\"id\":\""+testMessage.getHeaders().getId()+"\""));
assertTrue(result.contains("\"payload\":\"myPayloadStuff\""));
}
@@ -64,10 +64,10 @@ public class JsonOutboundMessageMapperTests {
JsonOutboundMessageMapper mapper = new JsonOutboundMessageMapper();
String result = mapper.fromMessage(testMessage);
assertTrue(result.contains("\"headers\":{"));
assertTrue(result.contains("\"$timestamp\":"+testMessage.getHeaders().getTimestamp()));
assertTrue(result.contains("\"$id\":\""+testMessage.getHeaders().getId()+"\""));
assertTrue(result.contains("\"timestamp\":"+testMessage.getHeaders().getTimestamp()));
assertTrue(result.contains("\"id\":\""+testMessage.getHeaders().getId()+"\""));
assertTrue(result.contains("\"payload\":\"myPayloadStuff\""));
assertTrue(result.contains("\"$history\":"));
assertTrue(result.contains("\"history\":"));
assertTrue(result.contains("testName-1"));
assertTrue(result.contains("testType-1"));
assertTrue(result.contains("testName-2"));
@@ -93,8 +93,8 @@ public class JsonOutboundMessageMapperTests {
JsonOutboundMessageMapper mapper = new JsonOutboundMessageMapper();
String result = mapper.fromMessage(testMessage);
assertTrue(result.contains("\"headers\":{"));
assertTrue(result.contains("\"$timestamp\":"+testMessage.getHeaders().getTimestamp()));
assertTrue(result.contains("\"$id\":\""+testMessage.getHeaders().getId()+"\""));
assertTrue(result.contains("\"timestamp\":"+testMessage.getHeaders().getTimestamp()));
assertTrue(result.contains("\"id\":\""+testMessage.getHeaders().getId()+"\""));
TestBean parsedPayload = extractJsonPayloadToTestBean(result);
assertEquals(payload, parsedPayload);
}

View File

@@ -19,6 +19,7 @@ package org.springframework.integration.ip.util;
import static org.junit.Assert.assertEquals;
import static org.springframework.integration.ip.util.RegexUtils.escapeRegExSpecials;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.integration.MessageHeaders;
@@ -41,6 +42,7 @@ public class RegexUtilsTests {
* And one of the ones we are actually using
*/
@Test
@Ignore // no longer relevant due to INT-1568
public void testSiPrefix () {
// protect the test in case we ever change the prefix
if ("$^[]{()}+*\\?|.".contains(MessageHeaders.PREFIX)) {

View File

@@ -77,7 +77,7 @@ public class JdbcMessageHandlerIntegrationTests {
@Test
public void testIdHeaderDynamicInsert() {
JdbcMessageHandler handler = new JdbcMessageHandler(jdbcTemplate.getJdbcOperations(), "insert into foos (id, status, name) values (:headers[$id], 0, :payload)");
JdbcMessageHandler handler = new JdbcMessageHandler(jdbcTemplate.getJdbcOperations(), "insert into foos (id, status, name) values (:headers[id], 0, :payload)");
Message<String> message = new GenericMessage<String>("foo");
handler.handleMessage(message);
String id = message.getHeaders().getId().toString();

View File

@@ -37,10 +37,10 @@ public class JdbcMessageHandlerParserTests {
@Test
public void testDollarHeaderOutboundChannelAdapter(){
setUp("handlingDollarHeaderJdbcOutboundChannelAdapterTest.xml", getClass());
Message<?> message = MessageBuilder.withPayload("foo").build();
Message<?> message = MessageBuilder.withPayload("foo").setHeader("$foo_id", "abc").build();
channel.send(message);
Map<String, Object> map = this.jdbcTemplate.queryForMap("SELECT * from FOOS");
assertEquals("Wrong id", message.getHeaders().getId().toString(), map.get("ID"));
assertEquals("Wrong id", message.getHeaders().get("$foo_id").toString(), map.get("ID"));
assertEquals("Wrong id", "foo", map.get("name"));
}

View File

@@ -9,7 +9,7 @@
http://www.springframework.org/schema/integration/jdbc
http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd">
<outbound-channel-adapter query="insert into foos (id, status, name) values (:headers[$id], 0, :payload)"
<outbound-channel-adapter query="insert into foos (id, status, name) values (:headers[$foo_id], 0, :payload)"
channel="target" data-source="dataSource"/>
<beans:import resource="jdbcOutboundChannelAdapterCommonConfig.xml" />

View File

@@ -9,7 +9,7 @@
http://www.springframework.org/schema/integration/jdbc
http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd">
<outbound-channel-adapter query="insert into foos (id, status, name) values (:headers[$id], 0, :payload[foo])"
<outbound-channel-adapter query="insert into foos (id, status, name) values (:headers[id], 0, :payload[foo])"
channel="target" data-source="dataSource"/>
<beans:import resource="jdbcOutboundChannelAdapterCommonConfig.xml" />

View File

@@ -13,7 +13,7 @@
<si:queue />
</si:channel>
<outbound-gateway query="select * from foos where id=:headers[$id]" update="insert into foos (id, status, name) values (:headers[$id], 0, :payload[foo])"
<outbound-gateway query="select * from foos where id=:headers[id]" update="insert into foos (id, status, name) values (:headers[id], 0, :payload[foo])"
request-channel="target" reply-channel="output" data-source="dataSource" />
<beans:import resource="jdbcOutboundChannelAdapterCommonConfig.xml" />

View File

@@ -10,7 +10,7 @@
http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd">
<outbound-channel-adapter channel="target" data-source="dataSource">
<query>insert into foos (id, status, name) values (:headers[$id], 0, :payload[foo])</query>
<query>insert into foos (id, status, name) values (:headers[id], 0, :payload[foo])</query>
</outbound-channel-adapter>
<beans:import resource="jdbcOutboundChannelAdapterCommonConfig.xml" />

View File

@@ -9,7 +9,7 @@
http://www.springframework.org/schema/integration/jdbc
http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd">
<outbound-channel-adapter query="insert into foos (id, status, name) values (:headers[$id], 0, :foo)"
<outbound-channel-adapter query="insert into foos (id, status, name) values (:headers[id], 0, :foo)"
channel="target" data-source="dataSource" sql-parameter-source-factory="sqlParameterSourceFactory"/>
<beans:import resource="jdbcOutboundChannelAdapterCommonConfig.xml" />