INT-1280 Remove cyclic package dependency - remove default (de)serializer; add constructor
This commit is contained in:
@@ -19,13 +19,11 @@ package org.springframework.commons.serializer;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.springframework.commons.serializer.java.JavaStreamingConverter;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
|
||||
/**
|
||||
* Delegates to a {@link InputStreamingConverter} (default is
|
||||
* {@link JavaStreamingConverter}} to deserialize data
|
||||
* in a byte[] to an object.
|
||||
* A {@link Converter} that delegates to a {@link InputStreamingConverter}
|
||||
* to convert data in a byte[] to an object.
|
||||
*
|
||||
* @author Gary Russell
|
||||
* @since 2.0
|
||||
@@ -33,8 +31,14 @@ import org.springframework.core.convert.converter.Converter;
|
||||
*/
|
||||
public class DeserializingConverter implements Converter<byte[], Object> {
|
||||
|
||||
private InputStreamingConverter<Object> streamingConverter
|
||||
= new JavaStreamingConverter();
|
||||
private InputStreamingConverter<Object> streamingConverter;
|
||||
|
||||
/**
|
||||
* @param streamingConverter the InputStreamingConverter
|
||||
*/
|
||||
public DeserializingConverter(InputStreamingConverter<Object> streamingConverter) {
|
||||
this.streamingConverter = streamingConverter;
|
||||
}
|
||||
|
||||
public Object convert(byte[] source) {
|
||||
ByteArrayInputStream byteStream = new ByteArrayInputStream(source);
|
||||
@@ -50,13 +54,4 @@ public class DeserializingConverter implements Converter<byte[], Object> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Override the default {@link JavaStreamingConverter}
|
||||
* @param streamingConverter the streamingConverter to set
|
||||
*/
|
||||
public void setStreamingConverter(InputStreamingConverter<Object> streamingConverter) {
|
||||
this.streamingConverter = streamingConverter;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -17,16 +17,12 @@
|
||||
package org.springframework.commons.serializer;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.springframework.commons.serializer.java.JavaStreamingConverter;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Delegates to a {@link OutputStreamingConverter} (default is
|
||||
* {@link JavaStreamingConverter}) to serialize an object
|
||||
* to a byte[].
|
||||
* A {@Link Converter} that delegates to a {@link OutputStreamingConverter}
|
||||
* to convert an object to a byte[].
|
||||
*
|
||||
* @author Gary Russell
|
||||
* @since 2.0
|
||||
@@ -34,11 +30,17 @@ import org.springframework.util.Assert;
|
||||
*/
|
||||
public class SerializingConverter implements Converter<Object, byte[]> {
|
||||
|
||||
private OutputStreamingConverter<Object> streamingConverter
|
||||
= new JavaStreamingConverter();
|
||||
private OutputStreamingConverter<Object> streamingConverter;
|
||||
|
||||
/**
|
||||
* @param streamingConverter the OutputStreamingConverter
|
||||
*/
|
||||
public SerializingConverter(OutputStreamingConverter<Object> streamingConverter) {
|
||||
this.streamingConverter = streamingConverter;
|
||||
}
|
||||
|
||||
public byte[] convert(Object source) {
|
||||
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
|
||||
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(128);
|
||||
try {
|
||||
this.streamingConverter.convert(source, byteStream);
|
||||
return byteStream.toByteArray();
|
||||
@@ -47,13 +49,4 @@ public class SerializingConverter implements Converter<Object, byte[]> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Override the default {@link JavaStreamingConverter}
|
||||
* @param streamingConverter the streamingConverter to set
|
||||
*/
|
||||
public void setStreamingConverter(
|
||||
OutputStreamingConverter<Object> streamingConverter) {
|
||||
this.streamingConverter = streamingConverter;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
package org.springframework.integration.transformer;
|
||||
|
||||
import org.springframework.commons.serializer.DeserializingConverter;
|
||||
import org.springframework.commons.serializer.java.JavaStreamingConverter;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Transformer that deserializes the inbound byte array payload to an object by delegating to a
|
||||
@@ -33,13 +33,11 @@ import org.springframework.util.Assert;
|
||||
*/
|
||||
public class PayloadDeserializingTransformer extends PayloadTypeConvertingTransformer<byte[], Object> {
|
||||
|
||||
public PayloadDeserializingTransformer() {
|
||||
this.converter = new DeserializingConverter();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object transformPayload(byte[] payload) throws Exception {
|
||||
Assert.notNull(this.converter, this.getClass().getName() + " needs a Converter<byte[], Object>");
|
||||
if (this.converter == null) {
|
||||
this.converter = new DeserializingConverter(new JavaStreamingConverter());
|
||||
}
|
||||
return converter.convert(payload);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
package org.springframework.integration.transformer;
|
||||
|
||||
import org.springframework.commons.serializer.SerializingConverter;
|
||||
import org.springframework.commons.serializer.java.JavaStreamingConverter;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Transformer that serializes the inbound payload into a byte array by delegating to a
|
||||
@@ -34,13 +34,11 @@ import org.springframework.util.Assert;
|
||||
public class PayloadSerializingTransformer extends PayloadTypeConvertingTransformer<Object, byte[]> {
|
||||
|
||||
|
||||
public PayloadSerializingTransformer() {
|
||||
this.converter = new SerializingConverter();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected byte[] transformPayload(Object payload) throws Exception {
|
||||
Assert.notNull(this.converter, this.getClass().getName() + " needs a Converter<Object, byte[]>");
|
||||
if (this.converter == null) {
|
||||
this.converter = new SerializingConverter(new JavaStreamingConverter());
|
||||
}
|
||||
return converter.convert(payload);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.io.NotSerializableException;
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.commons.serializer.java.JavaStreamingConverter;
|
||||
|
||||
|
||||
/**
|
||||
@@ -36,15 +37,16 @@ public class JavaSerializationTests {
|
||||
|
||||
@Test
|
||||
public void testGood() {
|
||||
SerializingConverter toBytes = new SerializingConverter();
|
||||
JavaStreamingConverter streamingConverter = new JavaStreamingConverter();
|
||||
SerializingConverter toBytes = new SerializingConverter(streamingConverter);
|
||||
byte[] bytes = toBytes.convert("Testing");
|
||||
DeserializingConverter fromBytes = new DeserializingConverter();
|
||||
DeserializingConverter fromBytes = new DeserializingConverter(streamingConverter);
|
||||
assertEquals("Testing", fromBytes.convert(bytes));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBadSerializeNotSerializable() {
|
||||
SerializingConverter toBytes = new SerializingConverter();
|
||||
SerializingConverter toBytes = new SerializingConverter(new JavaStreamingConverter());
|
||||
try {
|
||||
toBytes.convert(new Object());
|
||||
fail("Expected IllegalArgumentException");
|
||||
@@ -57,7 +59,7 @@ public class JavaSerializationTests {
|
||||
|
||||
@Test
|
||||
public void testBadSerializeNotSerializableField() {
|
||||
SerializingConverter toBytes = new SerializingConverter();
|
||||
SerializingConverter toBytes = new SerializingConverter(new JavaStreamingConverter());
|
||||
try {
|
||||
toBytes.convert(new UnSerializable());
|
||||
fail("Expected SerializationFailureException");
|
||||
@@ -70,7 +72,7 @@ public class JavaSerializationTests {
|
||||
|
||||
@Test
|
||||
public void testBadDeserialize() {
|
||||
DeserializingConverter fromBytes = new DeserializingConverter();
|
||||
DeserializingConverter fromBytes = new DeserializingConverter(new JavaStreamingConverter());
|
||||
try {
|
||||
fromBytes.convert("Junk".getBytes());
|
||||
fail("Expected DeserializationFailureException");
|
||||
|
||||
@@ -25,8 +25,10 @@ import java.io.Serializable;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.integration.Message;
|
||||
import org.springframework.integration.core.GenericMessage;
|
||||
import org.springframework.integration.core.MessageBuilder;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
@@ -69,6 +71,17 @@ public class PayloadDeserializingTransformerTests {
|
||||
transformer.transform(new GenericMessage<byte[]>(bytes));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customDeserializer() {
|
||||
PayloadDeserializingTransformer transformer = new PayloadDeserializingTransformer();
|
||||
transformer.setConverter(new Converter<byte[], Object>(){
|
||||
public Object convert(byte[] source) {
|
||||
return "Converted";
|
||||
}
|
||||
});
|
||||
Message<?> message = transformer.transform(MessageBuilder.withPayload("Test".getBytes()).build());
|
||||
assertEquals("Converted", message.getPayload());
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
private static class TestBean implements Serializable {
|
||||
|
||||
@@ -26,8 +26,10 @@ import java.io.Serializable;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.integration.Message;
|
||||
import org.springframework.integration.core.GenericMessage;
|
||||
import org.springframework.integration.core.MessageBuilder;
|
||||
import org.springframework.integration.core.StringMessage;
|
||||
|
||||
/**
|
||||
@@ -68,6 +70,18 @@ public class PayloadSerializingTransformerTests {
|
||||
PayloadSerializingTransformer transformer = new PayloadSerializingTransformer();
|
||||
transformer.transform(new GenericMessage<Object>(new Object()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customSerializer() {
|
||||
PayloadSerializingTransformer transformer = new PayloadSerializingTransformer();
|
||||
transformer.setConverter(new Converter<Object, byte[]>(){
|
||||
public byte[] convert(Object source) {
|
||||
return "Converted".getBytes();
|
||||
}
|
||||
});
|
||||
Message<?> message = transformer.transform(MessageBuilder.withPayload("Test").build());
|
||||
assertEquals("Converted", new String((byte[]) message.getPayload()));
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
|
||||
Reference in New Issue
Block a user