11/*
2- * Copyright 2015-2016 the original author or authors.
2+ * Copyright 2015-2018 the original author or authors.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
1717package org .springframework .integration .support ;
1818
1919import static org .hamcrest .Matchers .hasEntry ;
20+ import static org .junit .Assert .assertEquals ;
2021import static org .junit .Assert .assertThat ;
2122
23+ import java .nio .ByteBuffer ;
2224import java .util .HashMap ;
2325import java .util .Map ;
2426import java .util .UUID ;
3032
3133/**
3234 * @author Stuart Williams
35+ * @author Nathan Kurtyka
36+ *
3337 * @since 4.2
3438 */
3539public class MutableMessageTests {
@@ -49,8 +53,8 @@ public void testMessageIdTimestampRemains() {
4953 MutableMessage <Object > mutableMessage = new MutableMessage <>(payload , headerMap );
5054 MutableMessageHeaders headers = mutableMessage .getHeaders ();
5155
52- assertThat (headers .getRawHeaders (), hasEntry (MessageHeaders .ID , ( Object ) uuid ));
53- assertThat (headers .getRawHeaders (), hasEntry (MessageHeaders .TIMESTAMP , ( Object ) timestamp ));
56+ assertThat (headers .getRawHeaders (), hasEntry (MessageHeaders .ID , uuid ));
57+ assertThat (headers .getRawHeaders (), hasEntry (MessageHeaders .TIMESTAMP , timestamp ));
5458 }
5559
5660 @ Test
@@ -69,7 +73,38 @@ public void testMessageHeaderIsSettable() {
6973 headers .remove ("eep" );
7074 headers .putAll (additional );
7175
72- assertThat (headers .getRawHeaders (), hasEntry ("foo" , (Object ) "bar" ));
76+ assertThat (headers .getRawHeaders (), hasEntry ("foo" , "bar" ));
77+ }
78+
79+ @ Test
80+ public void testMessageHeaderIsSerializable () {
81+
82+ Object payload = new Object ();
83+
84+ UUID uuid = UUID .nameUUIDFromBytes (((System .currentTimeMillis () - System .nanoTime ()) + "" ).getBytes ());
85+ Long timestamp = System .currentTimeMillis ();
86+
87+ // UUID as String; timestamp as String
88+ Map <String , Object > headerMapStrings = new HashMap <>();
89+ headerMapStrings .put (MessageHeaders .ID , uuid .toString ());
90+ headerMapStrings .put (MessageHeaders .TIMESTAMP , timestamp .toString ());
91+ MutableMessage <Object > mutableMessageStrings = new MutableMessage <>(payload , headerMapStrings );
92+ assertEquals (uuid , mutableMessageStrings .getHeaders ().getId ());
93+ assertEquals (timestamp , mutableMessageStrings .getHeaders ().getTimestamp ());
94+
95+ // UUID as byte[]; timestamp as Long
96+ Map <String , Object > headerMapByte = new HashMap <>();
97+ byte [] uuidAsBytes =
98+ ByteBuffer .allocate (16 )
99+ .putLong (uuid .getMostSignificantBits ())
100+ .putLong (uuid .getLeastSignificantBits ())
101+ .array ();
102+
103+ headerMapByte .put (MessageHeaders .ID , uuidAsBytes );
104+ headerMapByte .put (MessageHeaders .TIMESTAMP , timestamp );
105+ MutableMessage <Object > mutableMessageBytes = new MutableMessage <>(payload , headerMapByte );
106+ assertEquals (uuid , mutableMessageBytes .getHeaders ().getId ());
107+ assertEquals (timestamp , mutableMessageBytes .getHeaders ().getTimestamp ());
73108 }
74109
75110}
0 commit comments