Exemplo n.º 1
0
 @Override
 public void doFilter(
     @Nonnull ServletRequest request,
     @Nonnull ServletResponse response,
     @Nonnull FilterChain chain)
     throws IOException, ServletException {
   final StopWatch stopWatch = new StopWatch();
   request.setAttribute(CURRENT_REQUEST_STOP_WATCH_ATTRIBUTE_NAME, stopWatch);
   final ScopeMapping globalMapping = _patternToMapping.get(null);
   final ScopeMapping specificMapping =
       request instanceof HttpServletRequest
           ? getMappingFor(((HttpServletRequest) request).getRequestURI())
           : null;
   try {
     chain.doFilter(request, response);
   } finally {
     request.removeAttribute(CURRENT_REQUEST_STOP_WATCH_ATTRIBUTE_NAME);
     final Duration duration = stopWatch.getCurrentDuration();
     final ServletHealthInterceptor interceptor = _interceptor;
     if (interceptor == null
         || interceptor.isRecordAllowed(request, globalMapping, specificMapping)) {
       globalMapping.record(null, duration);
       if (specificMapping != null) {
         final String targetName =
             interceptor != null
                 ? interceptor.getSpecificTargetName(request, specificMapping)
                 : null;
         specificMapping.record(targetName, duration);
       }
     }
   }
 }