@Test
  public void resolveViewNoMatchUseUnacceptableStatus() throws Exception {
    viewResolver.setUseNotAcceptableStatusCode(true);
    request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9");

    ViewResolver viewResolverMock = createMock(ViewResolver.class);
    viewResolver.setViewResolvers(Collections.singletonList(viewResolverMock));

    View viewMock = createMock("application_xml", View.class);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    expect(viewResolverMock.resolveViewName(viewName, locale)).andReturn(viewMock);
    expect(viewMock.getContentType()).andReturn("application/pdf").anyTimes();

    replay(viewResolverMock, viewMock);

    View result = viewResolver.resolveViewName(viewName, locale);
    assertNotNull("Invalid view", result);
    MockHttpServletResponse response = new MockHttpServletResponse();
    result.render(null, request, response);
    assertEquals("Invalid status code set", 406, response.getStatus());

    verify(viewResolverMock, viewMock);
  }
  @Test
  public void resolveViewNameWithRequestParameter() throws Exception {
    request.addParameter("format", "xls");

    viewResolver.setFavorParameter(true);
    viewResolver.setMediaTypes(Collections.singletonMap("xls", "application/vnd.ms-excel"));

    ViewResolver viewResolverMock = createMock(ViewResolver.class);
    viewResolver.setViewResolvers(Collections.singletonList(viewResolverMock));

    View viewMock = createMock("application_xls", View.class);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    expect(viewResolverMock.resolveViewName(viewName, locale)).andReturn(null);
    expect(viewResolverMock.resolveViewName(viewName + ".xls", locale)).andReturn(viewMock);
    expect(viewMock.getContentType()).andReturn("application/vnd.ms-excel").anyTimes();

    replay(viewResolverMock, viewMock);

    View result = viewResolver.resolveViewName(viewName, locale);
    assertSame("Invalid view", viewMock, result);

    verify(viewResolverMock, viewMock);
  }
  @Test
  public void resolveViewNameAcceptHeaderSortByQuality() throws Exception {
    request.addHeader("Accept", "text/plain;q=0.5, application/json");

    ViewResolver htmlViewResolver = createMock(ViewResolver.class);
    ViewResolver jsonViewResolver = createMock(ViewResolver.class);
    viewResolver.setViewResolvers(Arrays.asList(htmlViewResolver, jsonViewResolver));

    View htmlView = createMock("text_html", View.class);
    View jsonViewMock = createMock("application_json", View.class);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    expect(htmlViewResolver.resolveViewName(viewName, locale)).andReturn(htmlView);
    expect(jsonViewResolver.resolveViewName(viewName, locale)).andReturn(jsonViewMock);
    expect(htmlView.getContentType()).andReturn("text/html").anyTimes();
    expect(jsonViewMock.getContentType()).andReturn("application/json").anyTimes();
    replay(htmlViewResolver, jsonViewResolver, htmlView, jsonViewMock);

    viewResolver.setFavorPathExtension(false);
    View result = viewResolver.resolveViewName(viewName, locale);
    assertSame("Invalid view", jsonViewMock, result);

    verify(htmlViewResolver, jsonViewResolver, htmlView, jsonViewMock);
  }
  @Test
  public void resolveViewNameWithDefaultContentType() throws Exception {
    request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");

    viewResolver.setIgnoreAcceptHeader(true);
    viewResolver.setDefaultContentType(new MediaType("application", "xml"));

    ViewResolver viewResolverMock1 = createMock("viewResolver1", ViewResolver.class);
    ViewResolver viewResolverMock2 = createMock("viewResolver2", ViewResolver.class);
    viewResolver.setViewResolvers(Arrays.asList(viewResolverMock1, viewResolverMock2));

    View viewMock1 = createMock("application_xml", View.class);
    View viewMock2 = createMock("text_html", View.class);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    expect(viewResolverMock1.resolveViewName(viewName, locale)).andReturn(viewMock1);
    expect(viewResolverMock2.resolveViewName(viewName, locale)).andReturn(viewMock2);
    expect(viewMock1.getContentType()).andReturn("application/xml").anyTimes();
    expect(viewMock2.getContentType()).andReturn("text/html;charset=ISO-8859-1").anyTimes();

    replay(viewResolverMock1, viewResolverMock2, viewMock1, viewMock2);

    View result = viewResolver.resolveViewName(viewName, locale);
    assertSame("Invalid view", viewMock1, result);

    verify(viewResolverMock1, viewResolverMock2, viewMock1, viewMock2);
  }
  @Bean
  public ContentNegotiatingViewResolver viewResolver() {

    ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();

    // Used strategy only for JSON
    FixedContentNegotiationStrategy fixedStrategy =
        new FixedContentNegotiationStrategy(MediaType.APPLICATION_JSON);
    Collection<ContentNegotiationStrategy> strategies = new ArrayList<ContentNegotiationStrategy>();
    strategies.add(fixedStrategy);
    resolver.setContentNegotiationManager(new ContentNegotiationManager(fixedStrategy));

    // Handle formatting of dates and JSON root elements
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
    mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, false);
    mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    mapper.registerModule(new JodaModule());

    ArrayList<View> defaultViews = new ArrayList<View>();

    MappingJackson2JsonView jsonView = new MappingJackson2JsonView();
    jsonView.setObjectMapper(mapper);
    jsonView.setExtractValueFromSingleKeyModel(true);

    defaultViews.add(jsonView);
    resolver.setDefaultViews(defaultViews);

    resolver.setOrder(2);

    return resolver;
  }
Esempio n. 6
0
 @Bean
 public ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
   ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
   resolver.setViewResolvers(Arrays.asList(urlBasedViewResolver()));
   resolver.setDefaultViews(Arrays.asList(mappingJacksonJsonView()));
   return resolver;
 }
  @Test
  public void resolveViewNameAcceptHeaderDefaultView() throws Exception {
    request.addHeader("Accept", "application/json");

    ViewResolver viewResolverMock1 = createMock(ViewResolver.class);
    ViewResolver viewResolverMock2 = createMock(ViewResolver.class);
    viewResolver.setViewResolvers(Arrays.asList(viewResolverMock1, viewResolverMock2));

    View viewMock1 = createMock("application_xml", View.class);
    View viewMock2 = createMock("text_html", View.class);
    View viewMock3 = createMock("application_json", View.class);

    List<View> defaultViews = new ArrayList<View>();
    defaultViews.add(viewMock3);
    viewResolver.setDefaultViews(defaultViews);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    expect(viewResolverMock1.resolveViewName(viewName, locale)).andReturn(viewMock1);
    expect(viewResolverMock2.resolveViewName(viewName, locale)).andReturn(viewMock2);
    expect(viewMock1.getContentType()).andReturn("application/xml").anyTimes();
    expect(viewMock2.getContentType()).andReturn("text/html;charset=ISO-8859-1").anyTimes();
    expect(viewMock3.getContentType()).andReturn("application/json").anyTimes();

    replay(viewResolverMock1, viewResolverMock2, viewMock1, viewMock2, viewMock3);

    View result = viewResolver.resolveViewName(viewName, locale);
    assertSame("Invalid view", viewMock3, result);

    verify(viewResolverMock1, viewResolverMock2, viewMock1, viewMock2, viewMock3);
  }
  @Test
  public void resolveViewNameFilename() throws Exception {
    request.setRequestURI("/test.html");

    ViewResolver viewResolverMock1 = createMock("viewResolver1", ViewResolver.class);
    ViewResolver viewResolverMock2 = createMock("viewResolver2", ViewResolver.class);
    viewResolver.setViewResolvers(Arrays.asList(viewResolverMock1, viewResolverMock2));

    View viewMock1 = createMock("application_xml", View.class);
    View viewMock2 = createMock("text_html", View.class);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    expect(viewResolverMock1.resolveViewName(viewName, locale)).andReturn(viewMock1);
    expect(viewResolverMock1.resolveViewName(viewName + ".html", locale)).andReturn(null);
    expect(viewResolverMock2.resolveViewName(viewName, locale)).andReturn(null);
    expect(viewResolverMock2.resolveViewName(viewName + ".html", locale)).andReturn(viewMock2);
    expect(viewMock1.getContentType()).andReturn("application/xml").anyTimes();
    expect(viewMock2.getContentType()).andReturn("text/html;charset=ISO-8859-1").anyTimes();

    replay(viewResolverMock1, viewResolverMock2, viewMock1, viewMock2);

    View result = viewResolver.resolveViewName(viewName, locale);
    assertSame("Invalid view", viewMock2, result);

    verify(viewResolverMock1, viewResolverMock2, viewMock1, viewMock2);
  }
  @Test
  public void resolveViewNameRedirectView() throws Exception {
    request.addHeader("Accept", "application/json");
    request.setRequestURI("/test");

    StaticWebApplicationContext webAppContext = new StaticWebApplicationContext();
    webAppContext.setServletContext(new MockServletContext());
    webAppContext.refresh();

    UrlBasedViewResolver urlViewResolver = new InternalResourceViewResolver();
    urlViewResolver.setApplicationContext(webAppContext);
    ViewResolver xmlViewResolver = createMock(ViewResolver.class);
    viewResolver.setViewResolvers(Arrays.<ViewResolver>asList(xmlViewResolver, urlViewResolver));

    View xmlView = createMock("application_xml", View.class);
    View jsonView = createMock("application_json", View.class);
    viewResolver.setDefaultViews(Arrays.asList(jsonView));

    String viewName = "redirect:anotherTest";
    Locale locale = Locale.ENGLISH;

    expect(xmlViewResolver.resolveViewName(viewName, locale)).andReturn(xmlView);
    expect(jsonView.getContentType()).andReturn("application/json").anyTimes();

    replay(xmlViewResolver, xmlView, jsonView);

    View actualView = viewResolver.resolveViewName(viewName, locale);
    assertEquals("Invalid view", RedirectView.class, actualView.getClass());

    verify(xmlViewResolver, xmlView, jsonView);
  }
 @Test
 public void getMediaTypeFromFilenameMediaTypes() {
   viewResolver.setMediaTypes(Collections.singletonMap("HTML", "application/xhtml+xml"));
   assertEquals(
       "Invalid content type",
       new MediaType("application", "xhtml+xml"),
       viewResolver.getMediaTypeFromFilename("test.html"));
 }
 @Test
 public void getMediaTypeFilenameWithContextPath() {
   request.setContextPath("/project-1.0.0.M3");
   request.setRequestURI("/project-1.0.0.M3/");
   assertTrue("Context path should be excluded", viewResolver.getMediaTypes(request).isEmpty());
   request.setRequestURI("/project-1.0.0.M3");
   assertTrue("Context path should be excluded", viewResolver.getMediaTypes(request).isEmpty());
 }
 @Test
 public void getMediaTypeFromFilenameNoJaf() {
   viewResolver.setUseJaf(false);
   assertEquals(
       "Invalid content type",
       MediaType.APPLICATION_OCTET_STREAM,
       viewResolver.getMediaTypeFromFilename("test.xls"));
 }
 @Test
 public void getDefaultContentType() {
   request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
   viewResolver.setIgnoreAcceptHeader(true);
   viewResolver.setDefaultContentType(new MediaType("application", "pdf"));
   List<MediaType> result = viewResolver.getMediaTypes(request);
   assertEquals("Invalid amount of media types", 1, result.size());
   assertEquals("Invalid content type", new MediaType("application", "pdf"), result.get(0));
 }
 @Test
 public void getMediaTypeParameter() {
   viewResolver.setFavorParameter(true);
   viewResolver.setMediaTypes(Collections.singletonMap("html", "application/xhtml+xml"));
   request.addParameter("format", "html");
   List<MediaType> result = viewResolver.getMediaTypes(request);
   assertEquals(
       "Invalid content type",
       Collections.singletonList(new MediaType("application", "xhtml+xml")),
       result);
 }
Esempio n. 15
0
  @Bean
  public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager) {
    List<ViewResolver> resolvers = new ArrayList<ViewResolver>();
    resolvers.add(getJspViewResolver());
    resolvers.add(getJsonViewResolver());

    ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
    resolver.setContentNegotiationManager(manager);
    resolver.setViewResolvers(resolvers);
    return resolver;
  }
Esempio n. 16
0
  @Bean
  public ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
    final ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
    final List<View> defaultViews = new ArrayList<View>();

    defaultViews.add(jsonView());
    resolver.setDefaultViews(defaultViews);
    resolver.setUseNotAcceptableStatusCode(true);
    resolver.setOrder(1);
    return resolver;
  }
 @Bean
 public ViewResolver contentNegotiatingViewResolver() {
   ContentNegotiatingViewResolver viewResolver = new ContentNegotiatingViewResolver();
   viewResolver.setOrder(0);
   Map<String, String> mediaTypes = new HashMap<String, String>();
   mediaTypes.put("json", "application/json");
   viewResolver.setMediaTypes(mediaTypes);
   List<View> defaultViews = new ArrayList<View>();
   defaultViews.add(new MappingJacksonJsonView());
   viewResolver.setDefaultViews(defaultViews);
   return viewResolver;
 }
Esempio n. 18
0
 @Bean
 public ContentNegotiatingViewResolver contentNegotation() {
   ContentNegotiatingViewResolver contentNegotiator = new ContentNegotiatingViewResolver();
   Map<String, String> mapContentType = new HashMap<String, String>();
   java.util.List<View> lstViews = new ArrayList<View>();
   mapContentType.put("html", "text/html");
   mapContentType.put("json", "application/json");
   contentNegotiator.setMediaTypes(mapContentType);
   lstViews.add(new MappingJacksonJsonView());
   contentNegotiator.setDefaultViews(lstViews);
   return contentNegotiator;
 }
Esempio n. 19
0
  /*
   * @Bean public ThymeleafViewResolver thymeleafViewResolver() {
   * ThymeleafViewResolver thymeleafViewResolver = new
   * ThymeleafViewResolver(); thymeleafViewResolver .setViewNames(new String[]
   * { "WEEB-IBF/views/thymeleaf/*" }); thymeleafViewResolver.setOrder(2);
   * thymeleafViewResolver.setTemplateEngine(springTemplateEngine()); return
   * thymeleafViewResolver; }
   */
  @Bean
  public ContentNegotiatingViewResolver contentNegotiatingViewResolver(
      final ContentNegotiationManager contentNegotiationManager) {
    ContentNegotiatingViewResolver contentNegotiatingViewResolver =
        new ContentNegotiatingViewResolver();
    contentNegotiatingViewResolver.setContentNegotiationManager(contentNegotiationManager);

    List<ViewResolver> viewResolvers = new ArrayList<ViewResolver>();
    viewResolvers.add(beanNameViewResolver());
    viewResolvers.add(internalResourceViewResolver());
    contentNegotiatingViewResolver.setViewResolvers(viewResolvers);
    return contentNegotiatingViewResolver;
  }
 @Test
 public void getMediaTypeFilename() {
   request.setRequestURI("/test.html?foo=bar");
   List<MediaType> result = viewResolver.getMediaTypes(request);
   assertEquals(
       "Invalid content type", Collections.singletonList(new MediaType("text", "html")), result);
   viewResolver.setMediaTypes(Collections.singletonMap("html", "application/xhtml+xml"));
   result = viewResolver.getMediaTypes(request);
   assertEquals(
       "Invalid content type",
       Collections.singletonList(new MediaType("application", "xhtml+xml")),
       result);
 }
Esempio n. 21
0
 @Bean
 public ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
   ContentNegotiatingViewResolver result = new ContentNegotiatingViewResolver();
   Map<String, String> mediaTypes = new HashMap<String, String>();
   mediaTypes.put("json", MediaType.APPLICATION_JSON_VALUE);
   result.setMediaTypes(mediaTypes);
   MappingJacksonJsonView jacksonView = new MappingJacksonJsonView();
   jacksonView.setExtractValueFromSingleKeyModel(true);
   Set<String> modelKeys = new HashSet<String>();
   modelKeys.add("events");
   modelKeys.add("event");
   jacksonView.setModelKeys(modelKeys);
   result.setDefaultViews(Collections.singletonList((View) jacksonView));
   return result;
 }
 @Test
 public void getMediaTypeFilenameWithEncodedURI() {
   request.setRequestURI("/quo%20vadis%3f.html");
   List<MediaType> result = viewResolver.getMediaTypes(request);
   assertEquals(
       "Invalid content type", Collections.singletonList(new MediaType("text", "html")), result);
 }
  @Test
  public void resolveViewNameWithInvalidAcceptHeader() throws Exception {
    request.addHeader("Accept", "application");

    View result = viewResolver.resolveViewName("test", Locale.ENGLISH);
    assertNull(result);
  }
 @Test
 public void getMediaTypeFromFilenameJaf() {
   assertEquals(
       "Invalid content type",
       new MediaType("application", "vnd.ms-excel"),
       viewResolver.getMediaTypeFromFilename("test.xls"));
 }
 @Test
 public void getMediaTypeAcceptHeaderWithProduces() {
   Set<MediaType> producibleTypes = Collections.singleton(MediaType.APPLICATION_XHTML_XML);
   request.setAttribute(HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, producibleTypes);
   request.addHeader("Accept", "text/html,application/xml;q=0.9,application/xhtml+xml,*/*;q=0.8");
   List<MediaType> result = viewResolver.getMediaTypes(request);
   assertEquals("Invalid content type", new MediaType("application", "xhtml+xml"), result.get(0));
 }
  @Test
  public void nestedViewResolverIsNotSpringBean() throws Exception {
    StaticWebApplicationContext webAppContext = new StaticWebApplicationContext();
    webAppContext.setServletContext(new MockServletContext());
    webAppContext.refresh();

    InternalResourceViewResolver nestedResolver = new InternalResourceViewResolver();
    nestedResolver.setApplicationContext(webAppContext);
    nestedResolver.setViewClass(InternalResourceView.class);
    viewResolver.setViewResolvers(new ArrayList<ViewResolver>(Arrays.asList(nestedResolver)));
    viewResolver.setDefaultContentType(MediaType.TEXT_HTML);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    View result = viewResolver.resolveViewName(viewName, locale);
    assertNotNull("Invalid view", result);
  }
Esempio n. 27
0
  @Bean
  public ContentNegotiatingViewResolver contentViewResolver() throws Exception {
    ContentNegotiationManagerFactoryBean contentNegotiationManager =
        new ContentNegotiationManagerFactoryBean();
    contentNegotiationManager.addMediaType("json", MediaType.APPLICATION_JSON);

    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");

    MappingJackson2JsonView defaultView = new MappingJackson2JsonView();
    defaultView.setExtractValueFromSingleKeyModel(true);

    ContentNegotiatingViewResolver contentViewResolver = new ContentNegotiatingViewResolver();
    contentViewResolver.setContentNegotiationManager(contentNegotiationManager.getObject());
    contentViewResolver.setViewResolvers(Arrays.<ViewResolver>asList(viewResolver));
    contentViewResolver.setDefaultViews(Arrays.<View>asList(defaultView));
    return contentViewResolver;
  }
 @Before
 public void createViewResolver() {
   StaticWebApplicationContext wac = new StaticWebApplicationContext();
   wac.setServletContext(new MockServletContext());
   wac.refresh();
   viewResolver = new ContentNegotiatingViewResolver();
   viewResolver.setApplicationContext(wac);
   request = new MockHttpServletRequest("GET", "/test");
   RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
 }
  @Bean
  ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
    if (null == viewResolver) {
      viewResolver = new ContentNegotiatingViewResolver();

      Map<String, String> mediaTypes =
          new HashMap<String, String>() {
            {
              put("json", "application/json");
              put("urilist", "text/uri-list");
            }
          };
      viewResolver.setMediaTypes(mediaTypes);

      RepositoryRestViewResolver jsonvr = new RepositoryRestViewResolver(jsonView());
      RepositoryRestViewResolver urilistvr = new RepositoryRestViewResolver(urilistView());
      viewResolver.setViewResolvers(Arrays.<ViewResolver>asList(jsonvr, urilistvr));
    }
    return viewResolver;
  }
  @Test
  public void resolveViewNoMatch() throws Exception {
    request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9");

    ViewResolver viewResolverMock = createMock(ViewResolver.class);
    viewResolver.setViewResolvers(Collections.singletonList(viewResolverMock));

    View viewMock = createMock("application_xml", View.class);

    String viewName = "view";
    Locale locale = Locale.ENGLISH;

    expect(viewResolverMock.resolveViewName(viewName, locale)).andReturn(viewMock);
    expect(viewMock.getContentType()).andReturn("application/pdf").anyTimes();

    replay(viewResolverMock, viewMock);

    View result = viewResolver.resolveViewName(viewName, locale);
    assertNull("Invalid view", result);

    verify(viewResolverMock, viewMock);
  }