public void prepareForDeferredProcessing() { getRequestHeaderMap(); getRequestParameterMap(); getResponseHeaderMap(); getLocalPort(); getMethod(); getProtocol(); getRemoteAddr(); getRemoteHost(); getRemoteUser(); getRequestURI(); getRequestURL(); getServerName(); getTimeStamp(); getElapsedTime(); getStatusCode(); getContentLength(); getRequestContent(); getResponseContent(); copyAttributeMap(); } }
@Override public void log(Request jettyRequest, Response jettyResponse) { JettyServerAdapter adapter = new JettyServerAdapter(jettyRequest, jettyResponse); IAccessEvent accessEvent = new AccessEvent(jettyRequest, jettyResponse, adapter); if (getFilterChainDecision(accessEvent) == FilterReply.DENY) { return; } aai.appendLoopOnAppenders(accessEvent); }
result.setLocalPort(event.getLocalPort()); result.setMethod(event.getMethod()); result.setProtocol(event.getProtocol()); result.setRemoteAddress(event.getRemoteAddr()); result.setRemoteHost(event.getRemoteHost()); result.setRemoteUser(event.getRemoteUser()); result.setRequestHeaders(event.getRequestHeaderMap()); result.setRequestParameters(event.getRequestParameterMap()); result.setRequestURI(event.getRequestURI()); result.setRequestURL(event.getRequestURL()); result.setResponseHeaders(event.getResponseHeaderMap()); result.setServerName(event.getServerName()); result.setStatusCode(event.getStatusCode()); result.setTimeStamp(event.getTimeStamp()); return result;
/** {@inheritDoc} */ @Override public int getLocalPort() { if (localPort == null) { if (useServerPortInsteadOfLocalPort) { localPort = getOptionalRequest() .map(HttpServletRequest::getServerPort) .filter(port -> port >= 0) .orElseGet(super::getLocalPort); } else { localPort = super.getLocalPort(); } } return localPort; }
@Override public Enumeration<String> getRequestHeaderNames() { // post-serialization if (httpRequest == null) { Vector<String> list = new Vector<String>(getRequestHeaderMap().keySet()); return list.elements(); } return httpRequest.getHeaderNames(); }
private IAccessEvent createEvent() { DummyServerAdapter dummyAdapter = new DummyServerAdapter(request, response); return new AccessEvent(request, response, dummyAdapter); }
static public IAccessEvent buildNewAccessEvent() { DummyRequest request = new DummyRequest(); DummyResponse response = new DummyResponse(); DummyServerAdapter adapter = new DummyServerAdapter(request, response); return new AccessEvent(request, response, adapter); }
private IAccessEvent createAccessEvent(String uri) { DummyRequest request = new DummyRequest(); request.setRequestUri(uri); DummyResponse response = new DummyResponse(); DummyServerAdapter adapter = new DummyServerAdapter(request, response); return new AccessEvent(request, response, adapter); } }
@Test public void testExpectTrue() throws EvaluationException { request.setRequestUri(expectedURL1); IAccessEvent ae = new AccessEvent(request, response, serverAdapter); assertTrue(evaluator.evaluate(ae)); }
@Test public void testExpectFalse() throws EvaluationException { request.setRequestUri("test"); IAccessEvent ae = new AccessEvent(request, response, serverAdapter); assertFalse(evaluator.evaluate(ae)); }
@Override public void invoke(Request request, Response response) throws IOException, ServletException { try { if (!alreadySetLogbackStatusManager) { alreadySetLogbackStatusManager = true; org.apache.catalina.Context tomcatContext = request.getContext(); if (tomcatContext != null) { ServletContext sc = tomcatContext.getServletContext(); if (sc != null) { sc.setAttribute(AccessConstants.LOGBACK_STATUS_MANAGER_KEY, getStatusManager()); } } } getNext().invoke(request, response); TomcatServerAdapter adapter = new TomcatServerAdapter(request, response); IAccessEvent accessEvent = new AccessEvent(request, response, adapter); addThreadName(accessEvent); if (getFilterChainDecision(accessEvent) == FilterReply.DENY) { return; } // TODO better exception handling aai.appendLoopOnAppenders(accessEvent); } finally { request.removeAttribute(AccessConstants.LOGBACK_STATUS_MANAGER_KEY); } }
@Test public void block() throws EvaluationException { evaluator.setExpression("String protocol = event.getProtocol();" + "return protocol.equals(\"testProtocol\");"); evaluator.start(); IAccessEvent ae = new AccessEvent(request, response, serverAdapter); assertTrue(evaluator.evaluate(ae)); }
@Test public void invalidExpression() throws EvaluationException { evaluator.setExpression("return true"); evaluator.start(); IAccessEvent ae = new AccessEvent(request, response, serverAdapter); try { evaluator.evaluate(ae); fail("Was expecting an exception"); } catch (IllegalStateException e) { } } }
@Test public void testExpectTrueMultiple() throws EvaluationException { evaluator.addURL(expectedURL2); request.setRequestUri(expectedURL2); IAccessEvent ae = new AccessEvent(request, response, serverAdapter); assertTrue(evaluator.evaluate(ae)); } }
@Test public void smoke() throws EvaluationException { evaluator.setExpression("event.getProtocol().equals(\"testProtocol\")"); evaluator.start(); IAccessEvent ae = new AccessEvent(request, response, serverAdapter); assertTrue(evaluator.evaluate(ae)); }
@Test public void testAttributesAreNotTakenFromRecycledRequestWhenProcessingDeferred() { DummyRequest request = new DummyRequest(); DummyResponse response = new DummyResponse(); DummyServerAdapter adapter = new DummyServerAdapter(request, response); IAccessEvent event = new AccessEvent(request, response, adapter); request.setAttribute("testKey", "ORIGINAL"); event.prepareForDeferredProcessing(); request.setAttribute("testKey", "NEW"); // Event should capture the original value assertEquals("ORIGINAL", event.getAttribute("testKey")); } }