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 .StandardCharsets ;
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 .*;
@@ -166,7 +164,7 @@ public void copyHeadersFromNullMap() {
166
164
headers .copyHeadersIfAbsent (null );
167
165
168
166
assertEquals (1 , headers .getMessageHeaders ().size ());
169
- assertEquals (new HashSet <>( Arrays . asList ("id" ) ), headers .getMessageHeaders ().keySet ());
167
+ assertEquals (Collections . singleton ("id" ), headers .getMessageHeaders ().keySet ());
170
168
}
171
169
172
170
@ Test
@@ -280,12 +278,7 @@ public void timestampDefaultBehavior() {
280
278
public void idGeneratorCustom () {
281
279
final UUID id = new UUID (0L , 23L );
282
280
MessageHeaderAccessor accessor = new MessageHeaderAccessor ();
283
- accessor .setIdGenerator (new IdGenerator () {
284
- @ Override
285
- public UUID generateId () {
286
- return id ;
287
- }
288
- });
281
+ accessor .setIdGenerator (() -> id );
289
282
assertSame (id , accessor .getMessageHeaders ().getId ());
290
283
}
291
284
@@ -299,12 +292,7 @@ public void idGeneratorDefaultBehavior() {
299
292
@ Test
300
293
public void idTimestampWithMutableHeaders () {
301
294
MessageHeaderAccessor accessor = new MessageHeaderAccessor ();
302
- accessor .setIdGenerator (new IdGenerator () {
303
- @ Override
304
- public UUID generateId () {
305
- return MessageHeaders .ID_VALUE_NONE ;
306
- }
307
- });
295
+ accessor .setIdGenerator (() -> MessageHeaders .ID_VALUE_NONE );
308
296
accessor .setEnableTimestamp (false );
309
297
accessor .setLeaveMutable (true );
310
298
MessageHeaders headers = accessor .getMessageHeaders ();
@@ -313,12 +301,7 @@ public UUID generateId() {
313
301
assertNull (headers .getTimestamp ());
314
302
315
303
final UUID id = new UUID (0L , 23L );
316
- accessor .setIdGenerator (new IdGenerator () {
317
- @ Override
318
- public UUID generateId () {
319
- return id ;
320
- }
321
- });
304
+ accessor .setIdGenerator (() -> id );
322
305
accessor .setEnableTimestamp (true );
323
306
accessor .setImmutable ();
324
307
@@ -396,10 +379,25 @@ public String toString() {
396
379
assertEquals ("headers={contentType=text/plain} payload=" + sb + " > 80" , actual );
397
380
}
398
381
382
+ @ Test
383
+ public void serializeMutableHeaders () throws Exception {
384
+ Map <String , Object > headers = new HashMap <>();
385
+ headers .put ("foo" , "bar" );
386
+ Message <String > message = new GenericMessage <>("test" , headers );
387
+ MessageHeaderAccessor mutableAccessor = MessageHeaderAccessor .getMutableAccessor (message );
388
+ mutableAccessor .setContentType (MimeTypeUtils .TEXT_PLAIN );
389
+
390
+ message = new GenericMessage <>(message .getPayload (), mutableAccessor .getMessageHeaders ());
391
+ Message <?> output = (Message <?>) SerializationTestUtils .serializeAndDeserialize (message );
392
+ assertEquals ("test" , output .getPayload ());
393
+ assertEquals ("bar" , output .getHeaders ().get ("foo" ));
394
+ assertNotNull (output .getHeaders ().get (MessageHeaders .CONTENT_TYPE ));
395
+ }
396
+
399
397
400
398
public static class TestMessageHeaderAccessor extends MessageHeaderAccessor {
401
399
402
- private TestMessageHeaderAccessor () {
400
+ public TestMessageHeaderAccessor () {
403
401
}
404
402
405
403
private TestMessageHeaderAccessor (Message <?> message ) {
0 commit comments