Browse Source

Avoid payload conversion if unnecessary

Closes gh-22386
pull/26676/head
Rossen Stoyanchev 7 years ago
parent
commit
b88aad6b39
  1. 5
      spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java
  2. 10
      spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java

5
spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-2019 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -221,6 +221,9 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter {
return this.objectMapper.readValue((byte[]) payload, javaType); return this.objectMapper.readValue((byte[]) payload, javaType);
} }
} }
else if (targetClass.isInstance(payload)) {
return payload;
}
else { else {
if (view != null) { if (view != null) {
return this.objectMapper.readerWithView(view).forType(javaType).readValue(payload.toString()); return this.objectMapper.readerWithView(view).forType(javaType).readValue(payload.toString());

10
spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-2019 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -110,6 +110,14 @@ public class MappingJackson2MessageConverterTests {
assertEquals("AQI=", actual.get("bytes")); assertEquals("AQI=", actual.get("bytes"));
} }
@Test // gh-22386
public void fromMessageMatchingInstance() {
MyBean myBean = new MyBean();
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
Message<?> message = MessageBuilder.withPayload(myBean).build();
assertSame(myBean, converter.fromMessage(message, MyBean.class));
}
@Test(expected = MessageConversionException.class) @Test(expected = MessageConversionException.class)
public void fromMessageInvalidJson() { public void fromMessageInvalidJson() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();

Loading…
Cancel
Save