1
1
/*
2
- * Copyright 2002-2016 the original author or authors.
2
+ * Copyright 2002-2017 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 .messaging .support ;
18
18
19
19
import java .nio .charset .Charset ;
20
- import java .util .Arrays ;
21
20
import java .util .Collections ;
22
21
import java .util .HashMap ;
23
- import java .util .HashSet ;
24
22
import java .util .Map ;
25
23
import java .util .UUID ;
26
24
30
28
31
29
import org .springframework .messaging .Message ;
32
30
import org .springframework .messaging .MessageHeaders ;
33
- import org .springframework .util .IdGenerator ;
34
31
import org .springframework .util .MimeTypeUtils ;
32
+ import org .springframework .util .SerializationTestUtils ;
35
33
36
34
import static org .hamcrest .CoreMatchers .*;
37
35
import static org .junit .Assert .*;
@@ -168,7 +166,7 @@ public void copyHeadersFromNullMap() {
168
166
headers .copyHeadersIfAbsent (null );
169
167
170
168
assertEquals (1 , headers .getMessageHeaders ().size ());
171
- assertEquals (new HashSet <>( Arrays . asList ("id" ) ), headers .getMessageHeaders ().keySet ());
169
+ assertEquals (Collections . singleton ("id" ), headers .getMessageHeaders ().keySet ());
172
170
}
173
171
174
172
@ Test
@@ -282,12 +280,7 @@ public void timestampDefaultBehavior() {
282
280
public void idGeneratorCustom () {
283
281
final UUID id = new UUID (0L , 23L );
284
282
MessageHeaderAccessor accessor = new MessageHeaderAccessor ();
285
- accessor .setIdGenerator (new IdGenerator () {
286
- @ Override
287
- public UUID generateId () {
288
- return id ;
289
- }
290
- });
283
+ accessor .setIdGenerator (() -> id );
291
284
assertSame (id , accessor .getMessageHeaders ().getId ());
292
285
}
293
286
@@ -301,12 +294,7 @@ public void idGeneratorDefaultBehavior() {
301
294
@ Test
302
295
public void idTimestampWithMutableHeaders () {
303
296
MessageHeaderAccessor accessor = new MessageHeaderAccessor ();
304
- accessor .setIdGenerator (new IdGenerator () {
305
- @ Override
306
- public UUID generateId () {
307
- return MessageHeaders .ID_VALUE_NONE ;
308
- }
309
- });
297
+ accessor .setIdGenerator (() -> MessageHeaders .ID_VALUE_NONE );
310
298
accessor .setEnableTimestamp (false );
311
299
accessor .setLeaveMutable (true );
312
300
MessageHeaders headers = accessor .getMessageHeaders ();
@@ -315,12 +303,7 @@ public UUID generateId() {
315
303
assertNull (headers .getTimestamp ());
316
304
317
305
final UUID id = new UUID (0L , 23L );
318
- accessor .setIdGenerator (new IdGenerator () {
319
- @ Override
320
- public UUID generateId () {
321
- return id ;
322
- }
323
- });
306
+ accessor .setIdGenerator (() -> id );
324
307
accessor .setEnableTimestamp (true );
325
308
accessor .setImmutable ();
326
309
@@ -398,10 +381,25 @@ public String toString() {
398
381
assertEquals ("headers={contentType=text/plain} payload=" + sb + " > 80" , actual );
399
382
}
400
383
384
+ @ Test
385
+ public void serializeMutableHeaders () throws Exception {
386
+ Map <String , Object > headers = new HashMap <>();
387
+ headers .put ("foo" , "bar" );
388
+ Message <String > message = new GenericMessage <>("test" , headers );
389
+ MessageHeaderAccessor mutableAccessor = MessageHeaderAccessor .getMutableAccessor (message );
390
+ mutableAccessor .setContentType (MimeTypeUtils .TEXT_PLAIN );
391
+
392
+ message = new GenericMessage <>(message .getPayload (), mutableAccessor .getMessageHeaders ());
393
+ Message <?> output = (Message <?>) SerializationTestUtils .serializeAndDeserialize (message );
394
+ assertEquals ("test" , output .getPayload ());
395
+ assertEquals ("bar" , output .getHeaders ().get ("foo" ));
396
+ assertNotNull (output .getHeaders ().get (MessageHeaders .CONTENT_TYPE ));
397
+ }
398
+
401
399
402
400
public static class TestMessageHeaderAccessor extends MessageHeaderAccessor {
403
401
404
- private TestMessageHeaderAccessor () {
402
+ public TestMessageHeaderAccessor () {
405
403
}
406
404
407
405
private TestMessageHeaderAccessor (Message <?> message ) {
0 commit comments