1
1
/*
2
- * Copyright 2015-2016 the original author or authors.
2
+ * Copyright 2015-2018 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
17
17
package org .springframework .integration .support ;
18
18
19
19
import static org .hamcrest .Matchers .hasEntry ;
20
+ import static org .junit .Assert .assertEquals ;
20
21
import static org .junit .Assert .assertThat ;
21
22
23
+ import java .nio .ByteBuffer ;
22
24
import java .util .HashMap ;
23
25
import java .util .Map ;
24
26
import java .util .UUID ;
30
32
31
33
/**
32
34
* @author Stuart Williams
35
+ * @author Nathan Kurtyka
36
+ *
33
37
* @since 4.2
34
38
*/
35
39
public class MutableMessageTests {
@@ -49,8 +53,8 @@ public void testMessageIdTimestampRemains() {
49
53
MutableMessage <Object > mutableMessage = new MutableMessage <>(payload , headerMap );
50
54
MutableMessageHeaders headers = mutableMessage .getHeaders ();
51
55
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 ));
54
58
}
55
59
56
60
@ Test
@@ -69,7 +73,38 @@ public void testMessageHeaderIsSettable() {
69
73
headers .remove ("eep" );
70
74
headers .putAll (additional );
71
75
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 ());
73
108
}
74
109
75
110
}
0 commit comments