in components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConsumer.java [76:116]
protected void handleService(HttpServletRequest request, HttpServletResponse response) throws Exception {
if (isSuspended()) {
LOG.debug("Consumer suspended, cannot service request: {}", request);
response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
return;
}
Exchange exchange = createExchange(true);
exchange.setPattern(ExchangePattern.InOut);
HttpHelper.setCharsetFromContentType(request.getContentType(), exchange);
exchange.setIn(new PlatformHttpMessage(exchange, binding, request, response));
String contextPath = getEndpoint().getPath();
exchange.getIn().setHeader(SpringBootPlatformHttpConstants.CONTEXT_PATH, contextPath);
// set context path as header
String httpPath = (String) exchange.getIn().getHeader(Exchange.HTTP_PATH);
// here we just remove the CamelServletContextPath part from the HTTP_PATH
if (contextPath != null
&& httpPath.startsWith(contextPath)) {
exchange.getIn().setHeader(Exchange.HTTP_PATH,
httpPath.substring(contextPath.length()));
}
// TODO: async with CompletionStage returned to spring boot?
// we want to handle the UoW
try {
createUoW(exchange);
} catch (Exception e) {
throw new ServletException(e);
}
if (LOG.isTraceEnabled()) {
LOG.trace("Processing request for exchangeId: {}", exchange.getExchangeId());
}
try {
getProcessor().process(exchange);
} catch (Exception e) {
exchange.setException(e);
} finally {
afterProcess(response, exchange, true);
}
}