public void handleResponse(HttpResponse httpResponse, HttpContext httpContext) throws IOException { if (LOG.isDebugEnabled()) { LOG.debug("Handle response"); } httpContext.setAttribute(RESPONSE_RECEIVED, Boolean.TRUE); Exchange e = (Exchange) httpContext.getAttribute(Exchange.class.getName()); e.getOut().setBody(httpResponse.getEntity()); HeaderFilterStrategy strategy = getEndpoint().getHeaderFilterStrategy(); for (Iterator it = httpResponse.headerIterator(); it.hasNext();) { Header h = (Header) it.next(); if (strategy != null && !strategy.applyFilterToExternalHeaders(h.getName(), h.getValue())) { e.getOut().setHeader(h.getName(), h.getValue()); } } e.getOut().setHeader(HTTP_RESPONSE_CODE, httpResponse.getStatusLine().getStatusCode()); AsyncCallback callback = (AsyncCallback) e.removeProperty(AsyncCallback.class.getName()); callback.done(false); }
protected void writeRequestHeaders(GTaskEndpoint endpoint, Exchange exchange, TaskOptions request) { HeaderFilterStrategy strategy = endpoint.getHeaderFilterStrategy(); for (String headerName : exchange.getIn().getHeaders().keySet()) { String headerValue = exchange.getIn().getHeader(headerName, String.class); if (strategy != null && !strategy.applyFilterToCamelHeaders(headerName, headerValue, exchange)) { request.header(headerName, headerValue); } } }
@Override public Object toHttpResponse(HttpServerExchange httpExchange, Message message) throws IOException { boolean failed = message.getExchange().isFailed(); int defaultCode = failed ? 500 : 200; int code = message.getHeader(Exchange.HTTP_RESPONSE_CODE, defaultCode, int.class); TypeConverter tc = message.getExchange().getContext().getTypeConverter(); String headerValue = tc.convertTo(String.class, it.next()); if (headerValue != null && headerFilterStrategy != null && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) { LOG.trace("HTTP-Header: {}={}", key, headerValue); httpExchange.getResponseHeaders().add(new HttpString(key), headerValue); Object body = message.getBody(); Exception exception = message.getExchange().getException();
camelExchange.getOut().getHeaders().putAll(camelExchange.getIn().getHeaders()); String encoding = (String)camelExchange.getProperty(Exchange.CHARSET_NAME); camelExchange.getOut().setBody(DefaultCxfBinding.getContentFromCxf(cxfMessage, camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class), encoding)); if (!headerFilterStrategy.applyFilterToExternalHeaders(Client.RESPONSE_CONTEXT, responseContext, camelExchange)) { camelExchange.getOut().setHeader(Client.RESPONSE_CONTEXT, responseContext);
protected void populateResponse(Exchange exchange, HttpMethod method, Message in, HeaderFilterStrategy strategy, int responseCode) throws IOException, ClassNotFoundException, URISyntaxException { Message answer = exchange.getOut(); answer.setHeader(Exchange.HTTP_RESPONSE_CODE, responseCode); answer.setHeader(Exchange.HTTP_RESPONSE_TEXT, method.getStatusText()); answer.setBody(response); if (name.toLowerCase().equals("content-type")) { name = Exchange.CONTENT_TYPE; exchange.setProperty(Exchange.CHARSET_NAME, IOHelper.getCharsetNameFromContentType(value)); if (strategy != null && !strategy.applyFilterToExternalHeaders(name, extracted, exchange)) { HttpHelper.appendHeader(answer.getHeaders(), name, extracted); MessageHelper.copyHeaders(exchange.getIn(), answer, httpProtocolHeaderFilterStrategy, false);
BindingOperationInfo boi = camelExchange.getProperty(BindingOperationInfo.class.getName(), BindingOperationInfo.class); if (boi != null) { camelExchange.getIn().setHeader(CxfConstants.OPERATION_NAMESPACE, boi.getName().getNamespaceURI()); camelExchange.getIn().setHeader(CxfConstants.OPERATION_NAME, boi.getName().getLocalPart()); if (LOG.isTraceEnabled()) { camelExchange.getIn().setHeader(CxfConstants.OPERATION_NAME, method.getName()); if (LOG.isTraceEnabled()) { LOG.trace("Set IN header: {}={}", if (value != null && !headerFilterStrategy.applyFilterToExternalHeaders( Client.REQUEST_CONTEXT, value, camelExchange)) { camelExchange.getIn().setHeader(Client.REQUEST_CONTEXT, value);
protected void readResponseHeaders(GHttpEndpoint endpoint, Exchange exchange, HTTPResponse response) { HeaderFilterStrategy strategy = endpoint.getHeaderFilterStrategy(); Message in = exchange.getIn(); Message out = exchange.getOut(); out.setHeaders(in.getHeaders()); out.setHeader(Exchange.HTTP_RESPONSE_CODE, response.getResponseCode()); String contentType = getResponseHeader("Content-Type", response); if (contentType != null) { out.setHeader(Exchange.CONTENT_TYPE, contentType); } for (HTTPHeader header : response.getHeaders()) { String name = header.getName(); String value = header.getValue(); if (strategy != null && !strategy.applyFilterToExternalHeaders(name, value, exchange)) { out.setHeader(name, value); } } }
public void populateExchangeFromRestletRequest(Request request, Response response, Exchange exchange) throws Exception { Message inMessage = exchange.getIn(); exchange.setPattern(ExchangePattern.InOut); if (!getHeaderFilterStrategy().applyFilterToExternalHeaders( entry.getKey(), entry.getValue(), exchange)) { inMessage.setHeader(entry.getKey(), entry.getValue()); LOG.debug("Populate exchange from Restlet request header: [{}] value: [{}]" , entry.getKey(), entry.getValue()); inMessage.setHeader(Exchange.HTTP_METHOD, request.getMethod()); inMessage.setHeader(Exchange.CONTENT_TYPE, request.getEntity() .getMediaType()); if (!getHeaderFilterStrategy().applyFilterToExternalHeaders( entry.getKey(), entry.getValue(), exchange)) {
final Message out = exchange.getOut(); MediaType mediaType = out.getHeader(Exchange.CONTENT_TYPE, MediaType.class); Object body = out.getBody(); mediaType = MediaType.TEXT_PLAIN; if (body instanceof CharSequence) { String responseCode = out.getHeader(Exchange.HTTP_RESPONSE_CODE, String.class); if (responseCode != null) { response.setStatus(Status.valueOf(Integer.valueOf(responseCode))); for (Map.Entry<String, Object> entry : out.getHeaders().entrySet()) { if (!getHeaderFilterStrategy().applyFilterToCamelHeaders( entry.getKey(), entry.getValue(), exchange)) { response.getAttributes().put(entry.getKey(), entry.getValue()); characterSet = exchange.getProperty(Exchange.CHARSET_NAME, String.class); if (characterSet != null) {
exchange.setProperty(Exchange.SKIP_GZIP_ENCODING, Boolean.TRUE); String queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class); if (queryString != null) { skipRequestHeaders = URISupport.parseQuery(queryString, false, true); exchange.getIn().getHeaders().remove("host"); Message in = exchange.getIn(); String httpProtocolVersion = in.getHeader(Exchange.HTTP_PROTOCOL_VERSION, String.class); if (httpProtocolVersion != null) { continue; if (value != null && strategy != null && !strategy.applyFilterToCamelHeaders(key, value, exchange)) { values.add(value);
if (message.getBody() instanceof HttpRequest) { return (HttpRequest) message.getBody(); TypeConverter tc = message.getExchange().getContext().getTypeConverter(); && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) { LOG.trace("HTTP-Header: {}={}", key, headerValue); request.headers().add(key, headerValue);
public void doWriteResponse(Message message, HttpServletResponse response, Exchange exchange) throws IOException { if (message.getHeader(Exchange.HTTP_RESPONSE_CODE) != null) { int code = message.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class); response.setStatus(code); for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); String headerValue = convertHeaderValueToString(exchange, it.next()); if (headerValue != null && headerFilterStrategy != null && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, exchange)) { response.addHeader(key, headerValue);
@Override public Object toHttpRequest(ClientRequest clientRequest, Message message) { Object body = message.getBody(); final HeaderMap requestHeaders = clientRequest.getRequestHeaders(); // set the content type in the response. String contentType = MessageHelper.getContentType(message); if (contentType != null) { // set content-type requestHeaders.put(Headers.CONTENT_TYPE, contentType); LOG.trace("Content-Type: {}", contentType); } TypeConverter tc = message.getExchange().getContext().getTypeConverter(); //copy headers from Message to Request for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); // use an iterator as there can be multiple values. (must not use a delimiter) final Iterator<?> it = ObjectHelper.createIterator(value, null); while (it.hasNext()) { String headerValue = tc.convertTo(String.class, it.next()); if (headerValue != null && headerFilterStrategy != null && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) { LOG.trace("HTTP-Header: {}={}", key, headerValue); requestHeaders.add(new HttpString(key), headerValue); } } } return body; }
throws MessagingException, IOException { for (Map.Entry<String, Object> entry : exchange.getIn().getHeaders().entrySet()) { String headerName = entry.getKey(); Object headerValue = entry.getValue(); if (headerValue != null) { if (headerFilterStrategy != null && !headerFilterStrategy.applyFilterToCamelHeaders(headerName, headerValue, exchange)) { if (headerName.equalsIgnoreCase("subject")) { mimeMessage.setSubject(asString(exchange, headerValue), determineCharSet(configuration, exchange));
@Override public Message toCamelMessage(HttpServerExchange httpExchange, Exchange exchange) throws Exception { Message result = new DefaultMessage(exchange.getContext()); populateCamelHeaders(httpExchange, result.getHeaders(), exchange); if (value.isFile()) { DefaultAttachment attachment = new DefaultAttachment(new FilePartDataSource(value)); result.addAttachmentObject(key, attachment); body.put(key, attachment.getDataHandler()); } else if (headerFilterStrategy != null && !headerFilterStrategy.applyFilterToExternalHeaders(key, value.getValue(), exchange)) { UndertowHelper.appendHeader(result.getHeaders(), key, value.getValue()); UndertowHelper.appendHeader(body, key, value.getValue());
@SuppressWarnings("unchecked") protected void copyProtocolHeader(org.apache.cxf.message.Message cxfMessage, Message camelMessage, Exchange camelExchange) { Map<String, List<String>> headers = (Map<String, List<String>>)cxfMessage.get(org.apache.cxf.message.Message.PROTOCOL_HEADERS); for (Map.Entry<String, List<String>>entry : headers.entrySet()) { // just make sure the first String element is not null if (headerFilterStrategy.applyFilterToExternalHeaders(entry.getKey(), entry.getValue(), camelExchange) || entry.getValue().isEmpty()) { LOG.trace("Drop CXF message protocol header: {}={}", entry.getKey(), entry.getValue()); } else { // just put the first String element, as the complex one is filtered camelMessage.setHeader(entry.getKey(), entry.getValue().get(0)); } continue; } }
org.apache.camel.Message camelMessage, Exchange exchange) { Map<String, List<String>> cxfHeaders = CastUtils.cast((Map<?, ?>)cxfMessage.get(Message.PROTOCOL_HEADERS)); Map<String, Object> camelHeaders = camelMessage.getHeaders(); camelHeaders.put(CxfConstants.CAMEL_CXF_MESSAGE, cxfMessage); if (!headerFilterStrategy.applyFilterToExternalHeaders(entry.getKey(), entry.getValue(), exchange)) { && entry.getValue().get(0).startsWith("multipart/related")) { DataFormat dataFormat = exchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class); if (dataFormat.equals(DataFormat.RAW)) { camelHeaders.put(entry.getKey(), getContentTypeString(entry.getValue())); Object value = cxfMessage.get(key); if (value != null) { if (!headerFilterStrategy.applyFilterToExternalHeaders(key, value, exchange)) { camelHeaders.put(key, value); LOG.trace("Populate header from CXF header={} value={}", key, value); if (!headerFilterStrategy.applyFilterToExternalHeaders(SoapBindingConstants.SOAP_ACTION, soapAction, exchange)) { camelHeaders.put(SoapBindingConstants.SOAP_ACTION, soapAction); LOG.trace("Populate header from CXF header={} value={}", SoapBindingConstants.SOAP_ACTION, soapAction);
Map<String, List<String>> h = CastUtils.cast((Map<?, ?>)camelExchange.getProperty(Message.PROTOCOL_HEADERS)); if (h != null) { transportHeaders.putAll(h); DataFormat dataFormat = camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class); if (headerFilterStrategy.applyFilterToCamelHeaders(entry.getKey(), entry.getValue(), camelExchange)) { continue;
protected void readHeaders(HttpServletRequest request, HttpMessage message) { LOG.trace("readHeaders {}", request); Map<String, Object> headers = message.getHeaders(); //apply the headerFilterStrategy Enumeration<?> names = request.getHeaderNames(); while (names.hasMoreElements()) { String name = (String)names.nextElement(); String value = request.getHeader(name); // use http helper to extract parameter value as it may contain multiple values Object extracted = HttpHelper.extractHttpParameterValue(value); // mapping the content-type if (name.toLowerCase().equals("content-type")) { name = Exchange.CONTENT_TYPE; } if (headerFilterStrategy != null && !headerFilterStrategy.applyFilterToExternalHeaders(name, extracted, message.getExchange())) { HttpHelper.appendHeader(headers, name, extracted); } } if (request.getCharacterEncoding() != null) { headers.put(Exchange.HTTP_CHARACTER_ENCODING, request.getCharacterEncoding()); message.getExchange().setProperty(Exchange.CHARSET_NAME, request.getCharacterEncoding()); } try { populateRequestParameters(request, message); } catch (Exception e) { throw new RuntimeCamelException("Cannot read request parameters due " + e.getMessage(), e); } }
UndertowEndpoint endpoint = (UndertowEndpoint) exchange.getFromEndpoint(); if (endpoint.getHttpURI() != null) { && !headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, "Basic", exchange)) { UndertowHelper.appendHeader(headersMap, Exchange.AUTHENTICATION, "Basic"); LOG.trace("HTTP-header: {}", value); if (headerFilterStrategy != null && !headerFilterStrategy.applyFilterToExternalHeaders(name.toString(), value, exchange)) { UndertowHelper.appendHeader(headersMap, name.toString(), value); LOG.trace("URI-Parameter: {}", value); if (headerFilterStrategy != null && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) { UndertowHelper.appendHeader(headersMap, name, value);