Search in sources :

Example 11 with MappingJackson2XmlHttpMessageConverter

use of org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter in project spring-framework by spring-projects.

the class RequestResponseBodyMethodProcessorTests method resolveArgumentWithJacksonJsonViewAndXmlMessageConverter.

// SPR-12501
@Test
public void resolveArgumentWithJacksonJsonViewAndXmlMessageConverter() throws Exception {
    String content = "<root>" + "<withView1>with</withView1>" + "<withView2>with</withView2>" + "<withoutView>without</withoutView></root>";
    this.servletRequest.setContent(content.getBytes("UTF-8"));
    this.servletRequest.setContentType(MediaType.APPLICATION_XML_VALUE);
    Method method = JacksonController.class.getMethod("handleRequestBody", JacksonViewBean.class);
    HandlerMethod handlerMethod = new HandlerMethod(new JacksonController(), method);
    MethodParameter methodParameter = handlerMethod.getMethodParameters()[0];
    List<HttpMessageConverter<?>> converters = new ArrayList<>();
    converters.add(new MappingJackson2XmlHttpMessageConverter());
    RequestResponseBodyMethodProcessor processor = new RequestResponseBodyMethodProcessor(converters, null, Collections.singletonList(new JsonViewRequestBodyAdvice()));
    JacksonViewBean result = (JacksonViewBean) processor.resolveArgument(methodParameter, this.container, this.request, this.factory);
    assertThat(result).isNotNull();
    assertThat(result.getWithView1()).isEqualTo("with");
    assertThat(result.getWithView2()).isNull();
    assertThat(result.getWithoutView()).isNull();
}
Also used : MappingJackson2XmlHttpMessageConverter(org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter) AllEncompassingFormHttpMessageConverter(org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter) ResourceHttpMessageConverter(org.springframework.http.converter.ResourceHttpMessageConverter) MappingJackson2XmlHttpMessageConverter(org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter) StringHttpMessageConverter(org.springframework.http.converter.StringHttpMessageConverter) HttpMessageConverter(org.springframework.http.converter.HttpMessageConverter) ByteArrayHttpMessageConverter(org.springframework.http.converter.ByteArrayHttpMessageConverter) MappingJackson2HttpMessageConverter(org.springframework.http.converter.json.MappingJackson2HttpMessageConverter) ArrayList(java.util.ArrayList) HandlerMethod(org.springframework.web.method.HandlerMethod) Method(java.lang.reflect.Method) MethodParameter(org.springframework.core.MethodParameter) HandlerMethod(org.springframework.web.method.HandlerMethod) Test(org.junit.jupiter.api.Test)

Example 12 with MappingJackson2XmlHttpMessageConverter

use of org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter in project spring-framework by spring-projects.

the class MvcNamespaceTests method testDefaultConfig.

@Test
public void testDefaultConfig() throws Exception {
    loadBeanDefinitions("mvc-config.xml");
    RequestMappingHandlerMapping mapping = appContext.getBean(RequestMappingHandlerMapping.class);
    assertThat(mapping).isNotNull();
    assertThat(mapping.getOrder()).isEqualTo(0);
    assertThat(mapping.getUrlPathHelper().shouldRemoveSemicolonContent()).isTrue();
    mapping.setDefaultHandler(handlerMethod);
    MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo.json");
    NativeWebRequest webRequest = new ServletWebRequest(request);
    ContentNegotiationManager manager = mapping.getContentNegotiationManager();
    assertThat(manager.resolveMediaTypes(webRequest)).as("Should not resolve file extensions by default").containsExactly(MediaType.ALL);
    RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class);
    assertThat(adapter).isNotNull();
    assertThat(new DirectFieldAccessor(adapter).getPropertyValue("ignoreDefaultModelOnRedirect")).asInstanceOf(BOOLEAN).isFalse();
    List<HttpMessageConverter<?>> converters = adapter.getMessageConverters();
    assertThat(converters.size() > 0).isTrue();
    for (HttpMessageConverter<?> converter : converters) {
        if (converter instanceof AbstractJackson2HttpMessageConverter) {
            ObjectMapper objectMapper = ((AbstractJackson2HttpMessageConverter) converter).getObjectMapper();
            assertThat(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)).isFalse();
            assertThat(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)).isFalse();
            assertThat(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
            if (converter instanceof MappingJackson2XmlHttpMessageConverter) {
                assertThat(objectMapper.getClass()).isEqualTo(XmlMapper.class);
            }
        }
    }
    assertThat(appContext.getBean(FormattingConversionServiceFactoryBean.class)).isNotNull();
    assertThat(appContext.getBean(ConversionService.class)).isNotNull();
    assertThat(appContext.getBean(LocalValidatorFactoryBean.class)).isNotNull();
    assertThat(appContext.getBean(Validator.class)).isNotNull();
    assertThat(appContext.getBean("localeResolver", LocaleResolver.class)).isNotNull();
    assertThat(appContext.getBean("themeResolver", ThemeResolver.class)).isNotNull();
    assertThat(appContext.getBean("viewNameTranslator", RequestToViewNameTranslator.class)).isNotNull();
    assertThat(appContext.getBean("flashMapManager", FlashMapManager.class)).isNotNull();
    // default web binding initializer behavior test
    request = new MockHttpServletRequest("GET", "/");
    request.addParameter("date", "2009-10-31");
    request.addParameter("percent", "99.99%");
    MockHttpServletResponse response = new MockHttpServletResponse();
    HandlerExecutionChain chain = mapping.getHandler(request);
    assertThat(chain.getInterceptorList().size()).isEqualTo(1);
    assertThat(chain.getInterceptorList().get(0) instanceof ConversionServiceExposingInterceptor).isTrue();
    ConversionServiceExposingInterceptor interceptor = (ConversionServiceExposingInterceptor) chain.getInterceptorList().get(0);
    interceptor.preHandle(request, response, handlerMethod);
    assertThat(request.getAttribute(ConversionService.class.getName())).isSameAs(appContext.getBean(ConversionService.class));
    adapter.handle(request, response, handlerMethod);
    assertThat(handler.recordedValidationError).isTrue();
    assertThat(handler.date).isInSameDayAs("2009-10-31T00:00:00+00:00");
    assertThat(handler.percent).isEqualTo(Double.valueOf(0.9999));
    CompositeUriComponentsContributor uriComponentsContributor = this.appContext.getBean(MvcUriComponentsBuilder.MVC_URI_COMPONENTS_CONTRIBUTOR_BEAN_NAME, CompositeUriComponentsContributor.class);
    assertThat(uriComponentsContributor).isNotNull();
    String name = "mvcHandlerMappingIntrospector";
    HandlerMappingIntrospector introspector = this.appContext.getBean(name, HandlerMappingIntrospector.class);
    assertThat(introspector).isNotNull();
    assertThat(introspector.getHandlerMappings().size()).isEqualTo(2);
    assertThat(introspector.getHandlerMappings().get(0)).isSameAs(mapping);
    assertThat(introspector.getHandlerMappings().get(1).getClass()).isEqualTo(BeanNameUrlHandlerMapping.class);
}
Also used : HandlerMappingIntrospector(org.springframework.web.servlet.handler.HandlerMappingIntrospector) MockHttpServletRequest(org.springframework.web.testfixture.servlet.MockHttpServletRequest) NativeWebRequest(org.springframework.web.context.request.NativeWebRequest) ContentNegotiationManager(org.springframework.web.accept.ContentNegotiationManager) CompositeUriComponentsContributor(org.springframework.web.method.support.CompositeUriComponentsContributor) HandlerExecutionChain(org.springframework.web.servlet.HandlerExecutionChain) ConversionServiceExposingInterceptor(org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor) MappingJackson2XmlHttpMessageConverter(org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter) ConversionService(org.springframework.core.convert.ConversionService) DirectFieldAccessor(org.springframework.beans.DirectFieldAccessor) MappingJackson2XmlHttpMessageConverter(org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter) AbstractJackson2HttpMessageConverter(org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter) HttpMessageConverter(org.springframework.http.converter.HttpMessageConverter) AbstractJackson2HttpMessageConverter(org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter) RequestMappingHandlerMapping(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping) ServletWebRequest(org.springframework.web.context.request.ServletWebRequest) RequestMappingHandlerAdapter(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) MockHttpServletResponse(org.springframework.web.testfixture.servlet.MockHttpServletResponse) Test(org.junit.jupiter.api.Test)

Aggregations

MappingJackson2XmlHttpMessageConverter (org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter)12 HttpMessageConverter (org.springframework.http.converter.HttpMessageConverter)9 MappingJackson2HttpMessageConverter (org.springframework.http.converter.json.MappingJackson2HttpMessageConverter)9 StringHttpMessageConverter (org.springframework.http.converter.StringHttpMessageConverter)8 Test (org.junit.jupiter.api.Test)6 MethodParameter (org.springframework.core.MethodParameter)5 ByteArrayHttpMessageConverter (org.springframework.http.converter.ByteArrayHttpMessageConverter)5 ResourceHttpMessageConverter (org.springframework.http.converter.ResourceHttpMessageConverter)5 AllEncompassingFormHttpMessageConverter (org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter)5 Method (java.lang.reflect.Method)4 ArrayList (java.util.ArrayList)4 AbstractJackson2HttpMessageConverter (org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter)4 HandlerMethod (org.springframework.web.method.HandlerMethod)4 List (java.util.List)3 DeserializationFeature (com.fasterxml.jackson.databind.DeserializationFeature)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 SerializationFeature (com.fasterxml.jackson.databind.SerializationFeature)2 Locale (java.util.Locale)2 Optional (java.util.Optional)2 TimeUnit (java.util.concurrent.TimeUnit)2