diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/converter/SerializingHttpMessageConverter.java b/spring-integration-http/src/main/java/org/springframework/integration/http/converter/SerializingHttpMessageConverter.java index 2486233270..54a3fcd93c 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/converter/SerializingHttpMessageConverter.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/converter/SerializingHttpMessageConverter.java @@ -34,11 +34,14 @@ import org.springframework.util.FileCopyUtils; * * @author Mark Fisher * @author Gary Russell + * @author Artem Bilan + * * @since 2.0 */ public class SerializingHttpMessageConverter extends AbstractHttpMessageConverter { - private static final MediaType APPLICATION_JAVA_SERIALIZED_OBJECT = new MediaType("application", "x-java-serialized-object"); + private static final MediaType APPLICATION_JAVA_SERIALIZED_OBJECT = + new MediaType("application", "x-java-serialized-object"); /** Creates a new instance of the {@code SerializingHttpMessageConverter}. */ @@ -54,7 +57,7 @@ public class SerializingHttpMessageConverter extends AbstractHttpMessageConverte @Override public boolean canWrite(Class clazz, MediaType mediaType) { - return (Serializable.class.isAssignableFrom(clazz) && APPLICATION_JAVA_SERIALIZED_OBJECT.includes(mediaType)); + return Serializable.class.isAssignableFrom(clazz) && canWrite(mediaType); } @Override diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpInboundGatewayParserTests.java b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpInboundGatewayParserTests.java index 8501a453e5..fedfb6d55c 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpInboundGatewayParserTests.java +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpInboundGatewayParserTests.java @@ -28,6 +28,7 @@ import static org.junit.Assert.assertTrue; import static org.springframework.integration.test.util.TestUtils.getPropertyValue; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -37,7 +38,6 @@ import javax.servlet.http.HttpServletResponse; import org.hamcrest.Matcher; import org.junit.Test; import org.junit.runner.RunWith; - import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -45,6 +45,7 @@ import org.springframework.core.convert.converter.Converter; import org.springframework.expression.common.LiteralExpression; import org.springframework.expression.spel.standard.SpelExpression; import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.http.converter.SerializingHttpMessageConverter; @@ -140,17 +141,21 @@ public class HttpInboundGatewayParserTests { assertEquals(1001, TestUtils.getPropertyValue(this.gateway, "phase")); } - @Test @DirtiesContext + @Test + @DirtiesContext public void checkFlow() throws Exception { this.requests.subscribe(handlerExpecting(any(Message.class))); MockHttpServletRequest request = new MockHttpServletRequest(); request.setMethod("GET"); - request.addHeader("Accept", "application/x-java-serialized-object"); + request.addHeader("Accept", "application/my-serialized"); request.setParameter("foo", "bar"); MockHttpServletResponse response = new MockHttpServletResponse(); - List> converters = new ArrayList>(); - converters.add(new SerializingHttpMessageConverter()); + List> converters = new ArrayList<>(); + SerializingHttpMessageConverter serializingHttpMessageConverter = new SerializingHttpMessageConverter(); + serializingHttpMessageConverter.setSupportedMediaTypes( + Collections.singletonList(new MediaType("application", "my-serialized"))); + converters.add(serializingHttpMessageConverter); this.gateway.setMessageConverters(converters); this.gateway.afterPropertiesSet(); this.gateway.start(); @@ -158,13 +163,13 @@ public class HttpInboundGatewayParserTests { this.gateway.handleRequest(request, response); assertThat(response.getStatus(), is(HttpServletResponse.SC_OK)); - assertEquals(response.getContentType(), "application/x-java-serialized-object"); + assertEquals(response.getContentType(), "application/my-serialized"); } @Test public void testController() throws Exception { DirectFieldAccessor accessor = new DirectFieldAccessor(inboundController); - String errorCode = (String) accessor.getPropertyValue("errorCode"); + String errorCode = (String) accessor.getPropertyValue("errorCode"); assertEquals("oops", errorCode); LiteralExpression viewExpression = (LiteralExpression) accessor.getPropertyValue("viewExpression"); assertEquals("foo", viewExpression.getValue()); @@ -173,7 +178,7 @@ public class HttpInboundGatewayParserTests { @Test public void testControllerViewExp() throws Exception { DirectFieldAccessor accessor = new DirectFieldAccessor(inboundControllerViewExp); - String errorCode = (String) accessor.getPropertyValue("errorCode"); + String errorCode = (String) accessor.getPropertyValue("errorCode"); assertEquals("oops", errorCode); SpelExpression viewExpression = (SpelExpression) accessor.getPropertyValue("viewExpression"); assertNotNull(viewExpression); @@ -183,7 +188,7 @@ public class HttpInboundGatewayParserTests { @Test public void requestWithHeaders() throws Exception { DefaultHttpHeaderMapper headerMapper = - (DefaultHttpHeaderMapper) TestUtils.getPropertyValue(withMappedHeaders, "headerMapper"); + (DefaultHttpHeaderMapper) TestUtils.getPropertyValue(withMappedHeaders, "headerMapper"); HttpHeaders headers = new HttpHeaders(); headers.set("foo", "foo"); @@ -207,7 +212,7 @@ public class HttpInboundGatewayParserTests { @Test public void requestWithHeadersWithConversionService() throws Exception { DefaultHttpHeaderMapper headerMapper = - (DefaultHttpHeaderMapper) TestUtils.getPropertyValue(withMappedHeadersAndConverter, "headerMapper"); + (DefaultHttpHeaderMapper) TestUtils.getPropertyValue(withMappedHeadersAndConverter, "headerMapper"); headerMapper.setUserDefinedHeaderPrefix("X-"); @@ -239,7 +244,7 @@ public class HttpInboundGatewayParserTests { public void testInboundGatewayWithMessageConverterDefaults() { @SuppressWarnings("unchecked") List> messageConverters = - TestUtils.getPropertyValue(gatewayWithOneCustomConverter, "messageConverters", List.class); + TestUtils.getPropertyValue(gatewayWithOneCustomConverter, "messageConverters", List.class); assertThat("There should be only 1 message converter, by default register-default-converters is off", messageConverters.size(), is(1));