Avoid payload conversion if unnecessary

Closes gh-22386
This commit is contained in:
Rossen Stoyanchev 2019-03-12 16:17:39 -04:00
parent baa7e2e228
commit b88aad6b39
2 changed files with 13 additions and 2 deletions

View File

@ -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());

View File

@ -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();