private String getRequestAttribute(IAccessEvent acccessEvent) { String attr = acccessEvent.getAttribute(additionalKey); if (IAccessEvent.NA.equals(attr)) { return null; } else { return attr; } }
@Override public String convert(IAccessEvent accessEvent) { if (!isStarted()) { return "INACTIVE_REQUEST_ATTRIB_CONV"; } return accessEvent.getAttribute(key); }
@Test public void callingPrepareForDeferredProcessingShouldBeIdempotent() { String key = "key-"+diff; String val = "val-"+diff; IAccessEvent ae = DummyAccessEventBuilder.buildNewAccessEvent(); DummyRequest request = (DummyRequest) ae.getRequest(); Map<String, String> headersMap = request.getHeaders(); Map<String, String[]> parametersMap = request.getParameterMap(); headersMap.put(key, val); request.setAttribute(key, val); parametersMap.put(key, new String[] {val}); ae.prepareForDeferredProcessing(); assertEquals(val, ae.getAttribute(key)); assertEquals(val, ae.getRequestHeader(key)); assertEquals(val, ae.getRequestParameter(key)[0]); request.setAttribute(key, "change"); headersMap.put(key, "change"); parametersMap.put(key, new String[] {"change"}); ae.prepareForDeferredProcessing(); assertEquals(val, ae.getAttribute(key)); assertEquals(val, ae.getRequestHeader(key)); assertEquals(val, ae.getRequestParameter(key)[0]); }
@Test public void testSerialization() throws IOException, ClassNotFoundException { Object o = buildSerializedAccessEvent(); assertNotNull(o); IAccessEvent aeBack = (IAccessEvent) o; assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP, aeBack.getResponseHeaderMap()); assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP.get("x"), aeBack.getResponseHeader("x")); assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP.get("headerName1"), aeBack.getResponseHeader("headerName1")); assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP.size(), aeBack.getResponseHeaderNameList().size()); assertEquals(DummyResponse.DUMMY_DEFAULT_CONTENT_COUNT, aeBack.getContentLength()); assertEquals(DummyResponse.DUMMY_DEFAULT_STATUS, aeBack.getStatusCode()); assertEquals(DummyRequest.DUMMY_CONTENT_STRING, aeBack.getRequestContent()); assertEquals(DummyRequest.DUMMY_RESPONSE_CONTENT_STRING, aeBack.getResponseContent()); assertEquals(DummyRequest.DUMMY_DEFAULT_ATTR_MAP.get("testKey"), aeBack.getAttribute("testKey")); }
@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")); } }