MessageHeaders no removes any non-serializable values from its map upon serialization. A warn-level notification will be logged.
This commit is contained in:
@@ -21,6 +21,10 @@ import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -92,4 +96,40 @@ public class MessageHeadersTests {
|
||||
assertTrue(keys.contains("key2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void serializeWithAllSerializableHeaders() throws Exception {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("name", "joe");
|
||||
map.put("age", 42);
|
||||
MessageHeaders input = new MessageHeaders(map);
|
||||
MessageHeaders output = (MessageHeaders) serializeAndDeserialize(input);
|
||||
assertEquals("joe", output.get("name"));
|
||||
assertEquals(42, output.get("age"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void serializeWithNonSerializableHeader() throws Exception {
|
||||
Object address = new Object();
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("name", "joe");
|
||||
map.put("address", address);
|
||||
MessageHeaders input = new MessageHeaders(map);
|
||||
MessageHeaders output = (MessageHeaders) serializeAndDeserialize(input);
|
||||
assertEquals("joe", output.get("name"));
|
||||
assertNull(output.get("address"));
|
||||
}
|
||||
|
||||
|
||||
private static Object serializeAndDeserialize(Object object) throws Exception {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ObjectOutputStream out = new ObjectOutputStream(baos);
|
||||
out.writeObject(object);
|
||||
out.close();
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
||||
ObjectInputStream in = new ObjectInputStream(bais);
|
||||
Object result = in.readObject();
|
||||
in.close();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user