From aba3b47060ac8170d2233c40b6cb1c36770b17c8 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 28 Sep 2010 14:52:37 -0400 Subject: [PATCH] INT-1486 refactored payload-serializing/deserializing-transformes for latest commons-serializer updates --- ...PayloadDeserializingTransformerParser.java | 2 +- .../PayloadSerializingTransformerParser.java | 2 +- .../PayloadDeserializingTransformer.java | 10 ++++---- .../PayloadSerializingTransformer.java | 10 ++++---- .../PayloadTypeConvertingTransformer.java | 18 +++++++------- .../config/xml/spring-integration-2.0.xsd | 16 ++++++------- ...ializingTransformerParserTests-context.xml | 6 ++--- ...adDeserializingTransformerParserTests.java | 24 +++++++++---------- ...ializingTransformerParserTests-context.xml | 6 ++--- ...loadSerializingTransformerParserTests.java | 24 +++++++++---------- spring-integration-parent/pom.xml | 2 +- 11 files changed, 55 insertions(+), 65 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParser.java index d089dc4545..38339907b6 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParser.java @@ -35,7 +35,7 @@ public class PayloadDeserializingTransformerParser extends AbstractTransformerPa @Override protected void parseTransformer(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { - IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "converter"); + IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "deserializer"); } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParser.java index 9c65d52713..edaaa2b0ea 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParser.java @@ -36,7 +36,7 @@ public class PayloadSerializingTransformerParser extends AbstractTransformerPars @Override protected void parseTransformer(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { - IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "converter"); + IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "serializer"); } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadDeserializingTransformer.java b/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadDeserializingTransformer.java index faf9638dd6..006564ed02 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadDeserializingTransformer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadDeserializingTransformer.java @@ -16,9 +16,8 @@ package org.springframework.integration.transformer; +import org.springframework.commons.serializer.Deserializer; import org.springframework.commons.serializer.DeserializingConverter; -import org.springframework.commons.serializer.java.JavaStreamingConverter; -import org.springframework.core.convert.converter.Converter; /** * Transformer that deserializes the inbound byte array payload to an object by delegating to a @@ -33,15 +32,14 @@ import org.springframework.core.convert.converter.Converter; */ public class PayloadDeserializingTransformer extends PayloadTypeConvertingTransformer { - @Override - public void setConverter(Converter converter) { - this.converter = converter; + public void setDeserializer(Deserializer deserializer) { + this.setConverter(new DeserializingConverter(deserializer)); } @Override protected Object transformPayload(byte[] payload) throws Exception { if (this.converter == null) { - this.converter = new DeserializingConverter(new JavaStreamingConverter()); + this.setConverter(new DeserializingConverter()); } return this.converter.convert(payload); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadSerializingTransformer.java b/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadSerializingTransformer.java index 0d2edb1c82..2704842720 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadSerializingTransformer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadSerializingTransformer.java @@ -16,9 +16,8 @@ package org.springframework.integration.transformer; +import org.springframework.commons.serializer.Serializer; import org.springframework.commons.serializer.SerializingConverter; -import org.springframework.commons.serializer.java.JavaStreamingConverter; -import org.springframework.core.convert.converter.Converter; /** * Transformer that serializes the inbound payload into a byte array by delegating to a @@ -33,15 +32,14 @@ import org.springframework.core.convert.converter.Converter; */ public class PayloadSerializingTransformer extends PayloadTypeConvertingTransformer { - @Override - public void setConverter(Converter converter) { - this.converter = converter; + public void setSerializer(Serializer serializer) { + this.setConverter(new SerializingConverter(serializer)); } @Override protected byte[] transformPayload(Object payload) throws Exception { if (this.converter == null) { - this.converter = new SerializingConverter(new JavaStreamingConverter()); + this.setConverter(new SerializingConverter()); } return this.converter.convert(payload); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformer.java b/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformer.java index f93f41949a..008f9d4e6c 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformer.java @@ -25,20 +25,13 @@ import org.springframework.util.Assert; * * @author Gary Russell * @since 2.0 - * */ public class PayloadTypeConvertingTransformer extends AbstractPayloadTransformer { - + protected Converter converter; - @Override - protected U transformPayload(T payload) throws Exception { - Assert.notNull(this.converter, this.getClass().getName() + " needs a Converter"); - return converter.convert(payload); - } - /** - * Sets the converter to be used for Serialization. + * Specify the converter to use. * * @param converter The Converter. */ @@ -46,5 +39,10 @@ public class PayloadTypeConvertingTransformer extends AbstractPayloadTrans this.converter = converter; } - + @Override + protected U transformPayload(T payload) throws Exception { + Assert.notNull(this.converter, this.getClass().getName() + " requires a Converter"); + return this.converter.convert(payload); + } + } diff --git a/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd b/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd index b814cdc8b5..2c74620c22 100644 --- a/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd +++ b/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd @@ -1648,15 +1648,15 @@ - + - Reference to a Converter instance that converts from an object to a byte array. - This is optional. The default Converter will use standard Java serialization. + Reference to a Serializer instance to convert from an object to a byte array. + This is optional. The default will use standard Java serialization. - + @@ -1682,15 +1682,15 @@ - + - Reference to a Converter instance that converts from a byte array to an object. - This is optional. The default Converter will use standard Java deserialization. + Reference to a Deserializer instance to convert from a byte array to an object. + This is optional. The default will use standard Java deserialization. - + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests-context.xml index 4f16993314..5ba8ba0b39 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests-context.xml @@ -13,7 +13,7 @@ - + @@ -25,8 +25,8 @@ - + - + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests.java index 692e7b7b2f..165a6a7096 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadDeserializingTransformerParserTests.java @@ -21,15 +21,17 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.Serializable; -import java.io.UnsupportedEncodingException; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.convert.converter.Converter; +import org.springframework.commons.serializer.Deserializer; import org.springframework.integration.Message; import org.springframework.integration.MessageChannel; import org.springframework.integration.core.PollableChannel; @@ -37,6 +39,7 @@ import org.springframework.integration.message.GenericMessage; import org.springframework.integration.transformer.MessageTransformationException; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.util.FileCopyUtils; /** * @author Mark Fisher @@ -52,7 +55,7 @@ public class PayloadDeserializingTransformerParserTests { private MessageChannel queueInput; @Autowired - private MessageChannel customConverterInput; + private MessageChannel customDeserializerInput; @Autowired private PollableChannel output; @@ -105,8 +108,8 @@ public class PayloadDeserializingTransformerParserTests { } @Test - public void customConverter() throws Exception { - customConverterInput.send(new GenericMessage("test".getBytes("UTF-8"))); + public void customDeserializer() throws Exception { + customDeserializerInput.send(new GenericMessage("test".getBytes("UTF-8"))); Message result = output.receive(3000); assertNotNull(result); assertEquals(String.class, result.getPayload().getClass()); @@ -130,15 +133,10 @@ public class PayloadDeserializingTransformerParserTests { } - public static class TestDeserializingConverter implements Converter { + public static class TestDeserializer implements Deserializer { - public Object convert(byte[] source) { - try { - return new String(source, "UTF-8").toUpperCase(); - } - catch (UnsupportedEncodingException e) { - throw new MessageTransformationException("failed to convert payload", e); - } + public Object deserialize(InputStream source) throws IOException { + return FileCopyUtils.copyToString(new InputStreamReader(source, "UTF-8")).toUpperCase(); } } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests-context.xml index 61d4eb9d3d..a47d7d6af8 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests-context.xml @@ -13,7 +13,7 @@ - + @@ -25,8 +25,8 @@ - + - + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests.java index 3ec6df8bd0..a79fc69d4f 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PayloadSerializingTransformerParserTests.java @@ -21,15 +21,16 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.ObjectInputStream; +import java.io.OutputStream; import java.io.Serializable; -import java.io.UnsupportedEncodingException; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.convert.converter.Converter; +import org.springframework.commons.serializer.Serializer; import org.springframework.integration.Message; import org.springframework.integration.MessageChannel; import org.springframework.integration.core.PollableChannel; @@ -52,7 +53,7 @@ public class PayloadSerializingTransformerParserTests { private MessageChannel queueInput; @Autowired - private MessageChannel customConverterInput; + private MessageChannel customSerializerInput; @Autowired private PollableChannel output; @@ -103,8 +104,8 @@ public class PayloadSerializingTransformerParserTests { } @Test - public void customConverter() throws Exception { - customConverterInput.send(new GenericMessage("test")); + public void customSerializer() throws Exception { + customSerializerInput.send(new GenericMessage("test")); Message result = output.receive(3000); assertNotNull(result); assertEquals(byte[].class, result.getPayload().getClass()); @@ -127,15 +128,12 @@ public class PayloadSerializingTransformerParserTests { } - public static class TestSerializingConverter implements Converter { + public static class TestSerializer implements Serializer { - public byte[] convert(Object source) { - try { - return source.toString().toUpperCase().getBytes("UTF-8"); - } - catch (UnsupportedEncodingException e) { - throw new MessageTransformationException("failed to convert payload", e); - } + public void serialize(Object source, OutputStream outputStream) throws IOException { + outputStream.write(source.toString().toUpperCase().getBytes("UTF-8")); + outputStream.flush(); + outputStream.close(); } } diff --git a/spring-integration-parent/pom.xml b/spring-integration-parent/pom.xml index 137d3c1f99..96ddbeb988 100644 --- a/spring-integration-parent/pom.xml +++ b/spring-integration-parent/pom.xml @@ -209,7 +209,7 @@ org.springframework.commons spring-commons-serializer - 1.0.0.M1 + 1.0.0.BUILD-SNAPSHOT org.springframework.security