diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/MarshallingTransformerParser.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/MarshallingTransformerParser.java
index 8f7d759f8b..edfa517191 100644
--- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/MarshallingTransformerParser.java
+++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/MarshallingTransformerParser.java
@@ -46,6 +46,10 @@ public class MarshallingTransformerParser extends AbstractTransformerParser {
if (StringUtils.hasText(resultTransformer)) {
builder.addConstructorArgReference(resultTransformer);
}
+ String extractPayload = element.getAttribute("extract-payload");
+ if (StringUtils.hasText(extractPayload)) {
+ builder.addPropertyValue("extractPayload", extractPayload);
+ }
XmlNamespaceUtils.configureResultFactory(builder, resultType, resultFactory);
}
diff --git a/org.springframework.integration.xml/src/main/resources/org/springframework/integration/xml/config/spring-integration-xml-2.0.xsd b/org.springframework.integration.xml/src/main/resources/org/springframework/integration/xml/config/spring-integration-xml-2.0.xsd
index eb76b76826..1c4f2bb159 100644
--- a/org.springframework.integration.xml/src/main/resources/org/springframework/integration/xml/config/spring-integration-xml-2.0.xsd
+++ b/org.springframework.integration.xml/src/main/resources/org/springframework/integration/xml/config/spring-integration-xml-2.0.xsd
@@ -62,6 +62,14 @@
+
+
+
+ Specify whether to extract the payload before passing to the Marshaller. By default, this
+ value is "true". To have the full Message passed instead, set this to "false".
+
+
+
diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests-context.xml b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests-context.xml
index d3fda51660..507c07386c 100644
--- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests-context.xml
+++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests-context.xml
@@ -46,8 +46,14 @@
input-channel="marshallingTransformerWithResultTransformer"
output-channel="output"
marshaller="marshaller"
- result-transformer="resultTransformer">
-
+ result-transformer="resultTransformer" />
+
+
+
diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java
index 78b4a23737..d7d1012d0b 100644
--- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java
+++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2008 the original author or authors.
+ * Copyright 2002-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@ public class XmlMarshallingTransformerParserTests {
Message> result = output.receive(0);
assertTrue("Wrong payload type", result.getPayload() instanceof DOMResult);
Document doc = (Document) ((DOMResult) result.getPayload()).getNode();
- assertEquals("Wrong palyoad", "hello", doc.getDocumentElement().getTextContent());
+ assertEquals("Wrong payload", "hello", doc.getDocumentElement().getTextContent());
}
@Test
@@ -71,7 +71,7 @@ public class XmlMarshallingTransformerParserTests {
Message> result = output.receive(0);
assertTrue("Wrong payload type", result.getPayload() instanceof String);
String resultPayload = (String)result.getPayload();
- assertEquals("Wrong palyoad", "testReturn", resultPayload);
+ assertEquals("Wrong payload", "testReturn", resultPayload);
}
@Test
@@ -82,7 +82,7 @@ public class XmlMarshallingTransformerParserTests {
Message> result = output.receive(0);
assertTrue("Wrong payload type ", result.getPayload() instanceof DOMResult);
Document doc = (Document) ((DOMResult) result.getPayload()).getNode();
- assertEquals("Wrong palyoad", "hello", doc.getDocumentElement().getTextContent());
+ assertEquals("Wrong payload", "hello", doc.getDocumentElement().getTextContent());
}
@Test
@@ -103,4 +103,16 @@ public class XmlMarshallingTransformerParserTests {
assertTrue("Wrong payload type", result.getPayload() instanceof StubStringResult);
}
+ @Test
+ public void testFullMessage() throws Exception {
+ MessageChannel input = (MessageChannel) appContext.getBean("marshallingTransformerWithFullMessage");
+ GenericMessage