@Override public void reset() { for (Source source : getBodySources()) { if (source instanceof StreamCache) { ((StreamCache) source).reset(); } } }
public static StreamCache prepareBodyForLogging(Exchange exchange, boolean streams) { if (!streams) { // no need to prepare if streams is not enabled return null; } Message message = exchange.hasOut() ? exchange.getOut() : exchange.getIn(); // check if body is already cached Object body = message.getBody(); if (body == null) { return null; } else if (body instanceof StreamCache) { StreamCache sc = (StreamCache) body; // reset so the cache is ready to be used before processing sc.reset(); return sc; } // cache the body and if we could do that replace it as the new body StreamCache sc = exchange.getContext().getStreamCachingStrategy().cache(exchange); if (sc != null) { message.setBody(sc); } return sc; }
void onResponse(Exchange exchange, SpanCustomizer span) { span.tag("camel.client.endpoint.url", url); span.tag("camel.client.exchange.id", exchange.getExchangeId()); span.tag("camel.client.exchange.pattern", exchange.getPattern().name()); if (eventNotifier.isIncludeMessageBody() || eventNotifier.isIncludeMessageBodyStreams()) { boolean streams = eventNotifier.isIncludeMessageBodyStreams(); StreamCache cache = prepareBodyForLogging(exchange, streams); String body = MessageHelper.extractBodyForLogging(exchange.hasOut() ? exchange.getOut() : exchange.getIn(), "", streams, streams); span.tag("camel.client.exchange.message.response.body", body); if (cache != null) { cache.reset(); } } // lets capture http response code for http based components String responseCode = exchange.hasOut() ? exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE, String.class) : exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE, String.class); if (responseCode != null) { span.tag("camel.client.exchange.message.response.code", responseCode); } } }
void onResponse(Exchange exchange, SpanCustomizer span) { String id = exchange.getExchangeId(); String mep = exchange.getPattern().name(); span.tag("camel.server.endpoint.url", url); span.tag("camel.server.exchange.id", id); span.tag("camel.server.exchange.pattern", mep); if (exchange.getException() != null) { String message = exchange.getException().getMessage(); span.tag("camel.server.exchange.failure", message); } else if (eventNotifier.isIncludeMessageBody() || eventNotifier.isIncludeMessageBodyStreams()) { boolean streams = eventNotifier.isIncludeMessageBodyStreams(); StreamCache cache = prepareBodyForLogging(exchange, streams); String body = MessageHelper.extractBodyForLogging(exchange.hasOut() ? exchange.getOut() : exchange.getIn(), "", streams, streams); span.tag("camel.server.exchange.message.response.body", body); if (cache != null) { cache.reset(); } } // lets capture http response code for http based components String responseCode = exchange.hasOut() ? exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE, String.class) : exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE, String.class); if (responseCode != null) { span.tag("camel.server.exchange.message.response.code", responseCode); } }
protected void readBody(HttpServletRequest request, HttpMessage message) { LOG.trace("readBody {}", request); // lets parse the body Object body = message.getBody(); // reset the stream cache if the body is the instance of StreamCache if (body instanceof StreamCache) { ((StreamCache) body).reset(); } // if content type is serialized java object, then de-serialize it to a Java object if (request.getContentType() != null && HttpConstants.CONTENT_TYPE_JAVA_SERIALIZED_OBJECT.equals(request.getContentType())) { // only deserialize java if allowed if (allowJavaSerializedObject || isTransferException()) { try { InputStream is = message.getExchange().getContext().getTypeConverter().mandatoryConvertTo(InputStream.class, body); Object object = HttpHelper.deserializeJavaObjectFromStream(is, message.getExchange().getContext()); if (object != null) { message.setBody(object); } } catch (Exception e) { throw new RuntimeCamelException("Cannot deserialize body to Java object", e); } } else { // set empty body message.setBody(null); } } populateAttachments(request, message); }
void onRequest(Exchange exchange, SpanCustomizer span) { span.name(spanName); span.tag("camel.client.endpoint.url", url); span.tag("camel.client.exchange.id", exchange.getExchangeId()); span.tag("camel.client.exchange.pattern", exchange.getPattern().name()); if (eventNotifier.isIncludeMessageBody() || eventNotifier.isIncludeMessageBodyStreams()) { boolean streams = eventNotifier.isIncludeMessageBodyStreams(); StreamCache cache = prepareBodyForLogging(exchange, streams); String body = MessageHelper.extractBodyForLogging(exchange.hasOut() ? exchange.getOut() : exchange.getIn(), "", streams, streams); span.tag("camel.client.exchange.message.request.body", body); if (cache != null) { cache.reset(); } } } }
void onRequest(Exchange exchange, SpanCustomizer span) { span.name(spanName); span.tag("camel.server.endpoint.url", url); span.tag("camel.server.exchange.id", exchange.getExchangeId()); span.tag("camel.server.exchange.pattern", exchange.getPattern().name()); if (eventNotifier.isIncludeMessageBody() || eventNotifier.isIncludeMessageBodyStreams()) { boolean streams = eventNotifier.isIncludeMessageBodyStreams(); StreamCache cache = prepareBodyForLogging(exchange, streams); String body = MessageHelper.extractBodyForLogging(exchange.hasOut() ? exchange.getOut() : exchange.getIn(), "", streams, streams); span.tag("camel.server.exchange.message.request.body", body); if (cache != null) { cache.reset(); } } } }