From 9494dd93719bac3dc9c09abbd3aa80455c6d5a9b Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Mon, 14 Dec 2009 00:44:50 +0000 Subject: [PATCH] INT-909 Added support for the 'extract-payload' attribute on the 'marshalling-transformer' element. The default value is "true". --- .../config/MarshallingTransformerParser.java | 4 ++++ .../xml/config/spring-integration-xml-2.0.xsd | 8 ++++++++ ...shallingTransformerParserTests-context.xml | 10 ++++++++-- .../XmlMarshallingTransformerParserTests.java | 20 +++++++++++++++---- 4 files changed, 36 insertions(+), 6 deletions(-) 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 message = new GenericMessage("hello"); + input.send(message); + Message result = output.receive(0); + assertTrue("Wrong payload type", result.getPayload() instanceof DOMResult); + Document doc = (Document) ((DOMResult) result.getPayload()).getNode(); + String expected = "[Payload=hello][Headers="; + assertEquals("Wrong payload", expected, doc.getDocumentElement().getTextContent().substring(0, expected.length())); + } + }