I'm using camel-rest to connect to external API and validate json-schemas, the app works as intended but, there's no response coming back on calls, I can only see it through logs inside the Camel as shown below:
INFO [route3] (vert.x-worker-thread-0) HTTP Response: [{"description":"Winter fruit","name":"Apple"},{"description":"Tropical fruit","name":"Pineapple"}]
And any curl made only returns 200 OK.
This is my code:
public class Validator extends RouteBuilder {
private static final String REST_ENDPOINT_ECHO= "{{rest.endpoint}}?bridgeEndpoint=true" +
"©Headers=true" +
"&connectionClose=true";
@Override
public void configure() throws Exception {
onException(JsonValidationException.class)
.handled(true)
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400))
.setHeader(Exchange.CONTENT_TYPE, simple("text/plain"))
.log("Body: ${body}, Header: ${headers}")
.setBody(simple("Error: Invalid JSON Schema"));
rest()
.post("/{{rest.endpoint.subpath}}").enableCORS(true).route()
.to("direct:validator")
.endRest();
from("direct:echoServiceUrl")
.to("json-validator:file:/deployments/schema.json")
.to("http://" + REST_ENDPOINT_ECHO)
.log("HTTP Response: " + "${body}")
.convertBodyTo(String.class)
.end();
Http component returns CachedOutputStream so when u log it This stream object is being consumed and u get an empty response . this way your stream object is stored in the next steps. first solution u can set to streamcaching to your code like that
Other way u must delete log line