org.apache.camel.spi.HeaderFilterStrategy Java Examples
The following examples show how to use
org.apache.camel.spi.HeaderFilterStrategy.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SyndesisContextCustomizerTest.java From syndesis with Apache License 2.0 | 6 votes |
@Test public void testSyndesisHeaderStrategy() throws Exception { DefaultCamelContext context = new DefaultCamelContext(); Properties properties = new Properties(); properties.setProperty(Constants.PROPERTY_CAMEL_K_CUSTOMIZER, "syndesis"); PropertiesComponent pc = new PropertiesComponent(); pc.setInitialProperties(properties); context.setPropertiesComponent(pc); RuntimeSupport.configureContextCustomizers(context); context.start(); assertThat(context.getRegistry().findByType(HeaderFilterStrategy.class)).hasSize(1); assertThat(context.getRegistry().lookupByName("syndesisHeaderStrategy")).isInstanceOf(SyndesisHeaderStrategy.class); context.stop(); }
Example #2
Source File: QuarkusPlatformHttpConsumer.java From camel-quarkus with Apache License 2.0 | 4 votes |
static Object toHttpResponse(HttpServerResponse response, Message message, HeaderFilterStrategy headerFilterStrategy) { final Exchange exchange = message.getExchange(); final int code = determineResponseCode(exchange, message.getBody()); response.setStatusCode(code); final TypeConverter tc = exchange.getContext().getTypeConverter(); // copy headers from Message to Response if (headerFilterStrategy != null) { for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) { final String key = entry.getKey(); final 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); String firstValue = null; List<String> values = null; while (it.hasNext()) { final String headerValue = tc.convertTo(String.class, it.next()); if (headerValue != null && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, exchange)) { if (firstValue == null) { firstValue = headerValue; } else { if (values == null) { values = new ArrayList<String>(); values.add(firstValue); } values.add(headerValue); } } } if (values != null) { response.putHeader(key, values); } else if (firstValue != null) { response.putHeader(key, firstValue); } } } Object body = message.getBody(); final Exception exception = exchange.getException(); if (exception != null) { // we failed due an exception so print it as plain text final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw); exception.printStackTrace(pw); // the body should then be the stacktrace body = ByteBuffer.wrap(sw.toString().getBytes(StandardCharsets.UTF_8)); // force content type to be text/plain as that is what the stacktrace is message.setHeader(Exchange.CONTENT_TYPE, "text/plain; charset=utf-8"); // and mark the exception as failure handled, as we handled it by returning it as the response ExchangeHelper.setFailureHandled(exchange); } // set the content-length if it can be determined, or chunked encoding final Integer length = determineContentLength(exchange, body); if (length != null) { response.putHeader("Content-Length", String.valueOf(length)); } else { response.setChunked(true); } // set the content type in the response. final String contentType = MessageHelper.getContentType(message); if (contentType != null) { // set content-type response.putHeader("Content-Type", contentType); } return body; }
Example #3
Source File: SyndesisHttpConfiguration.java From syndesis with Apache License 2.0 | 4 votes |
@Bean @ConditionalOnMissingBean public HeaderFilterStrategy syndesisHeaderStrategy() { return new SyndesisHeaderStrategy(); }