Java 类org.springframework.web.servlet.handler.HandlerExceptionResolverComposite 实例源码

项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebMvcAutoConfigurationTests.java   
private void testLogResolvedExceptionCustomization(final boolean expected) {
    HandlerExceptionResolver exceptionResolver = this.context
            .getBean(HandlerExceptionResolver.class);
    assertThat(exceptionResolver)
            .isInstanceOf(HandlerExceptionResolverComposite.class);
    List<HandlerExceptionResolver> delegates = ((HandlerExceptionResolverComposite) exceptionResolver)
            .getExceptionResolvers();
    for (HandlerExceptionResolver delegate : delegates) {
        if (delegate instanceof AbstractHandlerMethodAdapter) {
            assertThat(
                    new DirectFieldAccessor(delegate).getPropertyValue("warnLogger"))
                            .is(new Condition<Object>() {
                                @Override
                                public boolean matches(Object value) {
                                    return (expected ? value != null : value == null);
                                }
                            });
        }
    }
}
项目:class-guard    文件:WebMvcConfigurationSupportTests.java   
@Test
public void handlerExceptionResolver() throws Exception {
    HandlerExceptionResolverComposite compositeResolver =
        (HandlerExceptionResolverComposite) mvcConfiguration.handlerExceptionResolver();

    assertEquals(0, compositeResolver.getOrder());

    List<HandlerExceptionResolver> expectedResolvers = compositeResolver.getExceptionResolvers();

    assertEquals(ExceptionHandlerExceptionResolver.class, expectedResolvers.get(0).getClass());
    assertEquals(ResponseStatusExceptionResolver.class, expectedResolvers.get(1).getClass());
    assertEquals(DefaultHandlerExceptionResolver.class, expectedResolvers.get(2).getClass());

    ExceptionHandlerExceptionResolver eher = (ExceptionHandlerExceptionResolver) expectedResolvers.get(0);
    assertNotNull(eher.getApplicationContext());
}
项目:spring4-understanding    文件:WebMvcConfigurationSupport.java   
/**
 * Returns a {@link HandlerExceptionResolverComposite} containing a list
 * of exception resolvers obtained either through
 * {@link #configureHandlerExceptionResolvers(List)} or through
 * {@link #addDefaultHandlerExceptionResolvers(List)}.
 * <p><strong>Note:</strong> This method cannot be made final due to CGLib
 * constraints. Rather than overriding it, consider overriding
 * {@link #configureHandlerExceptionResolvers(List)}, which allows
 * providing a list of resolvers.
 */
@Bean
public HandlerExceptionResolver handlerExceptionResolver() {
    List<HandlerExceptionResolver> exceptionResolvers = new ArrayList<HandlerExceptionResolver>();
    configureHandlerExceptionResolvers(exceptionResolvers);

    if (exceptionResolvers.isEmpty()) {
        addDefaultHandlerExceptionResolvers(exceptionResolvers);
    }

    HandlerExceptionResolverComposite composite = new HandlerExceptionResolverComposite();
    composite.setOrder(0);
    composite.setExceptionResolvers(exceptionResolvers);
    return composite;
}
项目:spring4-understanding    文件:WebMvcConfigurationSupportTests.java   
@Test
@SuppressWarnings("unchecked")
public void handlerExceptionResolver() throws Exception {
    ApplicationContext context = initContext(WebConfig.class);
    HandlerExceptionResolverComposite compositeResolver =
            context.getBean("handlerExceptionResolver", HandlerExceptionResolverComposite.class);

    assertEquals(0, compositeResolver.getOrder());
    List<HandlerExceptionResolver> expectedResolvers = compositeResolver.getExceptionResolvers();

    assertEquals(ExceptionHandlerExceptionResolver.class, expectedResolvers.get(0).getClass());
    assertEquals(ResponseStatusExceptionResolver.class, expectedResolvers.get(1).getClass());
    assertEquals(DefaultHandlerExceptionResolver.class, expectedResolvers.get(2).getClass());

    ExceptionHandlerExceptionResolver eher = (ExceptionHandlerExceptionResolver) expectedResolvers.get(0);
    assertNotNull(eher.getApplicationContext());

    DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(eher);
    List<Object> interceptors = (List<Object>) fieldAccessor.getPropertyValue("responseBodyAdvice");
    assertEquals(1, interceptors.size());
    assertEquals(JsonViewResponseBodyAdvice.class, interceptors.get(0).getClass());

    LocaleContextHolder.setLocale(Locale.ENGLISH);
    try {
        ResponseStatusExceptionResolver rser = (ResponseStatusExceptionResolver) expectedResolvers.get(1);
        MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
        MockHttpServletResponse response = new MockHttpServletResponse();
        rser.resolveException(request, response, context.getBean(TestController.class), new UserAlreadyExistsException());
        assertEquals("User already exists!", response.getErrorMessage());
    }
    finally {
        LocaleContextHolder.resetLocaleContext();
    }
}
项目:spring4-understanding    文件:DelegatingWebMvcConfigurationTests.java   
@Test
public void configureExceptionResolvers() throws Exception {
    List<WebMvcConfigurer> configurers = new ArrayList<WebMvcConfigurer>();
    configurers.add(new WebMvcConfigurerAdapter() {
        @Override
        public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
            exceptionResolvers.add(new DefaultHandlerExceptionResolver());
        }
    });
    delegatingConfig.setConfigurers(configurers);

    HandlerExceptionResolverComposite composite =
        (HandlerExceptionResolverComposite) delegatingConfig.handlerExceptionResolver();
    assertEquals("Only one custom converter is expected", 1, composite.getExceptionResolvers().size());
}
项目:mybus    文件:WebApplicationConfig.java   
@Bean
public HandlerExceptionResolverComposite getHandlerExceptionResolverComposite() {
    HandlerExceptionResolverComposite result = new HandlerExceptionResolverComposite();
    List<HandlerExceptionResolver> resolverList = new ArrayList<>();
    resolverList.add(new ExceptionHandlerExceptionResolver());
    resolverList.add(new ResponseStatusExceptionResolver());
    resolverList.add(new Error500Resolver());
    resolverList.add(new DefaultHandlerExceptionResolver());
    result.setExceptionResolvers(resolverList);
    return result;
}
项目:class-guard    文件:WebMvcConfigurationSupport.java   
/**
 * Returns a {@link HandlerExceptionResolverComposite} containing a list
 * of exception resolvers obtained either through
 * {@link #configureHandlerExceptionResolvers(List)} or through
 * {@link #addDefaultHandlerExceptionResolvers(List)}.
 * <p><strong>Note:</strong> This method cannot be made final due to CGLib
 * constraints. Rather than overriding it, consider overriding
 * {@link #configureHandlerExceptionResolvers(List)}, which allows
 * providing a list of resolvers.
 */
@Bean
public HandlerExceptionResolver handlerExceptionResolver() {
    List<HandlerExceptionResolver> exceptionResolvers = new ArrayList<HandlerExceptionResolver>();
    configureHandlerExceptionResolvers(exceptionResolvers);

    if (exceptionResolvers.isEmpty()) {
        addDefaultHandlerExceptionResolvers(exceptionResolvers);
    }

    HandlerExceptionResolverComposite composite = new HandlerExceptionResolverComposite();
    composite.setOrder(0);
    composite.setExceptionResolvers(exceptionResolvers);
    return composite;
}
项目:class-guard    文件:DelegatingWebMvcConfigurationTests.java   
@Test
public void configureExceptionResolvers() throws Exception {
    List<WebMvcConfigurer> configurers = new ArrayList<WebMvcConfigurer>();
    configurers.add(new WebMvcConfigurerAdapter() {
        @Override
        public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
            exceptionResolvers.add(new DefaultHandlerExceptionResolver());
        }
    });
    delegatingConfig.setConfigurers(configurers);

    HandlerExceptionResolverComposite composite =
        (HandlerExceptionResolverComposite) delegatingConfig.handlerExceptionResolver();
    assertEquals("Only one custom converter is expected", 1, composite.getExceptionResolvers().size());
}
项目:flash-messages    文件:FlashMessagesConfigurationSupport.java   
/**
 * adds a FlashMessagesMethodArgumentResolver to handlerExceptionResolver's argument resolvers
 */
@PostConstruct
private void configureMessagesExceptionArgumentResolvers() {
    this.handlerExceptionResolver = this.applicationContext.getBean("handlerExceptionResolver", HandlerExceptionResolver.class);

    for (final HandlerExceptionResolver resolver : ((HandlerExceptionResolverComposite) this.handlerExceptionResolver).getExceptionResolvers()) {
        if (resolver instanceof ExceptionHandlerExceptionResolver) {
            configureCustomHandlerMethodArgumentResolver((ExceptionHandlerExceptionResolver) resolver);
        }
    }
}
项目:flash-messages    文件:FlashMessagesConfigurationSupportSpecs.java   
@Test
public void it_should_add_exception_argument_resolver() {
    final HandlerExceptionResolver handlerExceptionResolver = this.context.getBean(HandlerExceptionResolver.class);

    assertThat(handlerExceptionResolver).isInstanceOf(HandlerExceptionResolverComposite.class);
    for (final HandlerExceptionResolver resolver : ((HandlerExceptionResolverComposite) handlerExceptionResolver).getExceptionResolvers()) {
        if (resolver instanceof ExceptionHandlerExceptionResolver) {
            assertThat(((ExceptionHandlerExceptionResolver) resolver).getArgumentResolvers().getResolvers().get(0))
                .isInstanceOf(FlashMessagesMethodArgumentResolver.class);
        }
    }
}
项目:spring4-understanding    文件:WebMvcConfigurationSupportExtensionTests.java   
@Test
public void exceptionResolvers() throws Exception {
    HandlerExceptionResolver exceptionResolver = this.config.handlerExceptionResolver();
    assertEquals(1, ((HandlerExceptionResolverComposite) exceptionResolver).getExceptionResolvers().size());
}
项目:class-guard    文件:WebMvcConfigurationSupportExtensionTests.java   
@Test
public void exceptionResolvers() throws Exception {
    HandlerExceptionResolverComposite composite = (HandlerExceptionResolverComposite) webConfig.handlerExceptionResolver();
    assertEquals(1, composite.getExceptionResolvers().size());
}