private void mergeIncomingContextToBackend(HttpServletRequest request) { final Enumeration headers = request.getHeaders(HTTP_HEADER_NAME); if (headers == null) { throw new IllegalStateException("Could not read headers with name '" + HTTP_HEADER_NAME + "'. The access seem to be forbidden by the container."); } final Map<String, String> parsed = new HashMap<String, String>(); while (headers.hasMoreElements()) { parsed.putAll(transportSerialization.parse((String) headers.nextElement())); } final Map<String, String> filtered = backend.getConfiguration().filterDeniedParams(parsed, IncomingRequest); backend.putAll(filtered); }
private void writeContextToResponse(HttpServletResponse response, TraceeFilterConfiguration configuration) { if (configuration.shouldProcessContext(OutgoingResponse) && !backend.isEmpty()) { final Map<String, String> filteredContext = backend.getConfiguration(profile).filterDeniedParams(backend, OutgoingResponse); response.setHeader(HTTP_HEADER_NAME, transportSerialization.render(filteredContext)); } }
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object o, ModelAndView modelAndView) throws Exception { final TraceeFilterConfiguration configuration = backend.getConfiguration(profileName); if (configuration.shouldProcessContext(OutgoingResponse) && !backend.isEmpty()) { final Map<String, String> filteredContext = configuration.filterDeniedParams(backend, OutgoingResponse); response.setHeader(outgoingHeaderName, httpJsonHeaderSerialization.render(filteredContext)); } backend.clear(); }
final void parseSoapHeaderToBackend(SOAPHeader soapHeader) { final Map<String, String> parsedContext = transportSerialization.parse(soapHeader); final Map<String, String> filteredContext = getTraceeBackend().getConfiguration().filterDeniedParams(parsedContext, OutgoingRequest); getTraceeBackend().putAll(filteredContext); }
protected final void handleOutgoing(SOAPMessageContext context) { final TraceeBackend backend = getTraceeBackend(); final SOAPMessage msg = context.getMessage(); try { if (msg != null && backend.getConfiguration().shouldProcessContext(OutgoingResponse)) { final SOAPEnvelope env = msg.getSOAPPart().getEnvelope(); // get or create header final SOAPHeader header = getOrCreateHeader(env); final Map<String, String> filteredContext = backend.getConfiguration().filterDeniedParams(backend, OutgoingResponse); transportSerialization.renderTo(filteredContext, header); msg.saveChanges(); context.setMessage(msg); } } catch (final SOAPException e) { traceeLogger.error("TraceeServerHandler : Exception " + "occurred during processing of outbound message.", e); } finally { // must reset tracee context backend.clear(); } }
protected final void handleOutgoing(final SOAPMessageContext context) { final SOAPMessage msg = context.getMessage(); final TraceeBackend backend = getTraceeBackend(); if (msg != null && backend.getConfiguration().shouldProcessContext(IncomingResponse)) { try { final SOAPEnvelope env = msg.getSOAPPart().getEnvelope(); // get or create header SOAPHeader header = env.getHeader(); if (header == null) { header = env.addHeader(); } final Map<String, String> filteredContext = backend.getConfiguration().filterDeniedParams(backend, IncomingResponse); transportSerialization.renderTo(filteredContext, header); msg.saveChanges(); } catch (final SOAPException e) { traceeLogger.error("TraceeClientHandler : Exception " + "occurred during processing of outbound message.", e); } context.setMessage(msg); } }
protected final void handleIncoming(SOAPMessageContext context) { final SOAPPart soapPart = context.getMessage().getSOAPPart(); try { final TraceeBackend backend = getTraceeBackend(); final SOAPHeader header = soapPart.getEnvelope().getHeader(); if (header != null && backend.getConfiguration().shouldProcessContext(IncomingRequest)) { final Map<String, String> parsedContext = transportSerialization.parse(header); final Map<String, String> filteredContext = backend.getConfiguration().filterDeniedParams(parsedContext, IncomingRequest); getTraceeBackend().putAll(filteredContext); } // generate request id if it doesn't exist if (getTraceeBackend().get(TraceeConstants.REQUEST_ID_KEY) == null && getTraceeBackend().getConfiguration().shouldGenerateRequestId()) { getTraceeBackend().put(TraceeConstants.REQUEST_ID_KEY, Utilities.createRandomAlphanumeric(getTraceeBackend().getConfiguration().generatedRequestIdLength())); } } catch (final SOAPException e) { traceeLogger.error("TraceeServerHandler - Error during precessing of inbound soap header"); } }