private boolean invokeSafeOnBeginRequest(ServletRequest req, ServletResponse res) { if (!isInitialized) { return false; } boolean success = true; try { RequestTelemetryContext context = new RequestTelemetryContext(new Date().getTime(), (HttpServletRequest) req); ThreadContext.setRequestTelemetryContext(context); webModulesContainer.invokeOnBeginRequest(req, res); } catch (Exception e) { InternalLogger.INSTANCE.error( "Failed to invoke OnBeginRequest on telemetry modules with the following exception: %s", ExceptionUtils.getStackTrace(e)); success = false; } return success; }
private boolean invokeSafeOnBeginRequest(ServletRequest req, ServletResponse res) { if (!isInitialized) { return false; } boolean success = true; try { RequestTelemetryContext context = new RequestTelemetryContext(new Date().getTime(), (HttpServletRequest) req); ThreadContext.setRequestTelemetryContext(context); webModulesContainer.invokeOnBeginRequest(req, res); } catch (Exception e) { InternalLogger.INSTANCE.error( "Failed to invoke OnBeginRequest on telemetry modules with the following exception: %s", ExceptionUtils.getStackTrace(e)); success = false; } return success; }
@Test public void testFiltersChainWhenExceptionIsThrownOnModulesInvocation() throws Exception { Filter filter = createInitializedFilter(); // mocking WebModulesContainer containerMock = ServletUtils.setMockWebModulesContainer(filter); Mockito.doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { throw new Exception("FATAL!"); } }).when(containerMock).invokeOnBeginRequest(any(ServletRequest.class), any(ServletResponse.class)); FilterChain chain = mock(FilterChain.class); ServletRequest request = ServletUtils.generateDummyServletRequest(); // execute filter.doFilter(request, ServletUtils.generateDummyServletResponse(), chain); // validate verify(chain).doFilter(any(ServletRequest.class), any(ServletResponse.class)); }