diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java index 4267a6abb8b..f101aa26755 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -118,10 +118,8 @@ public abstract class AbstractMessageConverter implements MessageConverter { */ public void setStrictContentTypeMatch(boolean strictContentTypeMatch) { if (strictContentTypeMatch) { - Assert.notEmpty(getSupportedMimeTypes(), - "A strict converter requires a non-empty list of supported mime types"); - Assert.notNull(getContentTypeResolver(), - "A strict converter requires a ContentTypeResolver"); + Assert.notEmpty(getSupportedMimeTypes(), "Strict match requires non-empty list of supported mime types."); + Assert.notNull(getContentTypeResolver(), "Strict match requires ContentTypeResolver."); } this.strictContentTypeMatch = strictContentTypeMatch; } @@ -242,9 +240,8 @@ public abstract class AbstractMessageConverter implements MessageConverter { return true; } } - for (MimeType supported : getSupportedMimeTypes()) { - if (supported.getType().equals(mimeType.getType()) && - supported.getSubtype().equals(mimeType.getSubtype())) { + for (MimeType current : getSupportedMimeTypes()) { + if (current.getType().equals(mimeType.getType()) && current.getSubtype().equals(mimeType.getSubtype())) { return true; } } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java index b3ba9db005d..93da70c9981 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java @@ -250,6 +250,8 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC List converters = new ArrayList(); boolean registerDefaults = configureMessageConverters(converters); if (registerDefaults) { + converters.add(new StringMessageConverter()); + converters.add(new ByteArrayMessageConverter()); if (jackson2Present) { DefaultContentTypeResolver resolver = new DefaultContentTypeResolver(); resolver.setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON); @@ -257,8 +259,6 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC converter.setContentTypeResolver(resolver); converters.add(converter); } - converters.add(new StringMessageConverter()); - converters.add(new ByteArrayMessageConverter()); } return new CompositeMessageConverter(converters); } diff --git a/spring-messaging/src/test/java/org/springframework/messaging/simp/config/MessageBrokerConfigurationTests.java b/spring-messaging/src/test/java/org/springframework/messaging/simp/config/MessageBrokerConfigurationTests.java index fa9a4d61ed1..848b11e6faf 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/simp/config/MessageBrokerConfigurationTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/simp/config/MessageBrokerConfigurationTests.java @@ -154,7 +154,7 @@ public class MessageBrokerConfigurationTests { assertEquals(SimpMessageType.MESSAGE, headers.getMessageType()); assertEquals("/foo", headers.getDestination()); - assertEquals("\"bar\"", new String((byte[]) message.getPayload())); + assertEquals("bar", new String((byte[]) message.getPayload())); } @Test @@ -244,7 +244,7 @@ public class MessageBrokerConfigurationTests { assertEquals(SimpMessageType.MESSAGE, headers.getMessageType()); assertEquals("/bar", headers.getDestination()); - assertEquals("\"bar\"", new String((byte[]) message.getPayload())); + assertEquals("bar", new String((byte[]) message.getPayload())); } @Test @@ -290,11 +290,11 @@ public class MessageBrokerConfigurationTests { List converters = compositeConverter.getConverters(); assertThat(converters.size(), Matchers.is(3)); - assertThat(converters.get(0), Matchers.instanceOf(MappingJackson2MessageConverter.class)); - assertThat(converters.get(1), Matchers.instanceOf(StringMessageConverter.class)); - assertThat(converters.get(2), Matchers.instanceOf(ByteArrayMessageConverter.class)); + assertThat(converters.get(0), Matchers.instanceOf(StringMessageConverter.class)); + assertThat(converters.get(1), Matchers.instanceOf(ByteArrayMessageConverter.class)); + assertThat(converters.get(2), Matchers.instanceOf(MappingJackson2MessageConverter.class)); - ContentTypeResolver resolver = ((MappingJackson2MessageConverter) converters.get(0)).getContentTypeResolver(); + ContentTypeResolver resolver = ((MappingJackson2MessageConverter) converters.get(2)).getContentTypeResolver(); assertEquals(MimeTypeUtils.APPLICATION_JSON, ((DefaultContentTypeResolver) resolver).getDefaultMimeType()); } @@ -350,9 +350,9 @@ public class MessageBrokerConfigurationTests { assertThat(compositeConverter.getConverters().size(), Matchers.is(4)); Iterator iterator = compositeConverter.getConverters().iterator(); assertThat(iterator.next(), Matchers.is(testConverter)); - assertThat(iterator.next(), Matchers.instanceOf(MappingJackson2MessageConverter.class)); assertThat(iterator.next(), Matchers.instanceOf(StringMessageConverter.class)); assertThat(iterator.next(), Matchers.instanceOf(ByteArrayMessageConverter.class)); + assertThat(iterator.next(), Matchers.instanceOf(MappingJackson2MessageConverter.class)); } @Test diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java index f0e45814990..c2c9c3216b5 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java @@ -398,6 +398,8 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { if (convertersElement == null || Boolean.valueOf(convertersElement.getAttribute("register-defaults"))) { convertersDef.setSource(source); + convertersDef.add(new RootBeanDefinition(StringMessageConverter.class)); + convertersDef.add(new RootBeanDefinition(ByteArrayMessageConverter.class)); if (jackson2Present) { RootBeanDefinition jacksonConverterDef = new RootBeanDefinition(MappingJackson2MessageConverter.class); RootBeanDefinition resolverDef = new RootBeanDefinition(DefaultContentTypeResolver.class); @@ -405,8 +407,6 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { jacksonConverterDef.getPropertyValues().add("contentTypeResolver", resolverDef); convertersDef.add(jacksonConverterDef); } - convertersDef.add(new RootBeanDefinition(StringMessageConverter.class)); - convertersDef.add(new RootBeanDefinition(ByteArrayMessageConverter.class)); } ConstructorArgumentValues cavs = new ConstructorArgumentValues(); diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParserTests.java b/spring-websocket/src/test/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParserTests.java index 9bb15d1b60c..4accbdce9f9 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParserTests.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParserTests.java @@ -279,11 +279,11 @@ public class MessageBrokerBeanDefinitionParserTests { List converters = compositeMessageConverter.getConverters(); assertThat(converters.size(), Matchers.is(3)); - assertThat(converters.get(0), Matchers.instanceOf(MappingJackson2MessageConverter.class)); - assertThat(converters.get(1), Matchers.instanceOf(StringMessageConverter.class)); - assertThat(converters.get(2), Matchers.instanceOf(ByteArrayMessageConverter.class)); + assertThat(converters.get(0), Matchers.instanceOf(StringMessageConverter.class)); + assertThat(converters.get(1), Matchers.instanceOf(ByteArrayMessageConverter.class)); + assertThat(converters.get(2), Matchers.instanceOf(MappingJackson2MessageConverter.class)); - ContentTypeResolver resolver = ((MappingJackson2MessageConverter) converters.get(0)).getContentTypeResolver(); + ContentTypeResolver resolver = ((MappingJackson2MessageConverter) converters.get(2)).getContentTypeResolver(); assertEquals(MimeTypeUtils.APPLICATION_JSON, ((DefaultContentTypeResolver) resolver).getDefaultMimeType()); } diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompWebSocketIntegrationTests.java b/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompWebSocketIntegrationTests.java index f795dcc1f35..26ddac122b5 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompWebSocketIntegrationTests.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompWebSocketIntegrationTests.java @@ -176,7 +176,7 @@ public class StompWebSocketIntegrationTests extends AbstractWebSocketIntegration String payload = clientHandler.actual.get(0).getPayload(); assertTrue(payload.startsWith("MESSAGE\n")); assertTrue(payload.contains("destination:/user/queue/error\n")); - assertTrue(payload.endsWith("\"Got error: Bad input\"\0")); + assertTrue(payload.endsWith("Got error: Bad input\0")); } finally { session.close(); @@ -201,7 +201,7 @@ public class StompWebSocketIntegrationTests extends AbstractWebSocketIntegration String payload = clientHandler.actual.get(0).getPayload(); assertTrue(payload.startsWith("MESSAGE\n")); assertTrue(payload.contains("destination:/topic/scopedBeanValue\n")); - assertTrue(payload.endsWith("\"55\"\0")); + assertTrue(payload.endsWith("55\0")); } finally { session.close();