11/*
2- * Copyright 2002-2016 the original author or authors.
2+ * Copyright 2002-2017 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 .messaging .support ;
1818
1919import java .nio .charset .StandardCharsets ;
20- import java .util .Arrays ;
2120import java .util .Collections ;
2221import java .util .HashMap ;
23- import java .util .HashSet ;
2422import java .util .Map ;
2523import java .util .UUID ;
2624
3028
3129import org .springframework .messaging .Message ;
3230import org .springframework .messaging .MessageHeaders ;
33- import org .springframework .util .IdGenerator ;
3431import org .springframework .util .MimeTypeUtils ;
32+ import org .springframework .util .SerializationTestUtils ;
3533
3634import static org .hamcrest .CoreMatchers .*;
3735import static org .junit .Assert .*;
@@ -166,7 +164,7 @@ public void copyHeadersFromNullMap() {
166164 headers .copyHeadersIfAbsent (null );
167165
168166 assertEquals (1 , headers .getMessageHeaders ().size ());
169- assertEquals (new HashSet <>( Arrays . asList ("id" ) ), headers .getMessageHeaders ().keySet ());
167+ assertEquals (Collections . singleton ("id" ), headers .getMessageHeaders ().keySet ());
170168 }
171169
172170 @ Test
@@ -280,12 +278,7 @@ public void timestampDefaultBehavior() {
280278 public void idGeneratorCustom () {
281279 final UUID id = new UUID (0L , 23L );
282280 MessageHeaderAccessor accessor = new MessageHeaderAccessor ();
283- accessor .setIdGenerator (new IdGenerator () {
284- @ Override
285- public UUID generateId () {
286- return id ;
287- }
288- });
281+ accessor .setIdGenerator (() -> id );
289282 assertSame (id , accessor .getMessageHeaders ().getId ());
290283 }
291284
@@ -299,12 +292,7 @@ public void idGeneratorDefaultBehavior() {
299292 @ Test
300293 public void idTimestampWithMutableHeaders () {
301294 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 );
308296 accessor .setEnableTimestamp (false );
309297 accessor .setLeaveMutable (true );
310298 MessageHeaders headers = accessor .getMessageHeaders ();
@@ -313,12 +301,7 @@ public UUID generateId() {
313301 assertNull (headers .getTimestamp ());
314302
315303 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 );
322305 accessor .setEnableTimestamp (true );
323306 accessor .setImmutable ();
324307
@@ -396,10 +379,25 @@ public String toString() {
396379 assertEquals ("headers={contentType=text/plain} payload=" + sb + " > 80" , actual );
397380 }
398381
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+
399397
400398 public static class TestMessageHeaderAccessor extends MessageHeaderAccessor {
401399
402- private TestMessageHeaderAccessor () {
400+ public TestMessageHeaderAccessor () {
403401 }
404402
405403 private TestMessageHeaderAccessor (Message <?> message ) {
0 commit comments