class HttpRequestUnwrapperProcessor implements Processor {

    @Override
    public void process(final Exchange exchange) throws Exception {
        final Message message = exchange.getIn();
        final Object body = message.getBody();

        final JsonNode data = parseBody(body);

        if (data == null) {
            return;
        }

        final JsonNode paramMap = data.get("parameters");
        final JsonNode bodyData = data.get("body");

        if (paramMap != null || bodyData != null) {
            if (paramMap != null) {
                for (final String key : parameters) {
                    final JsonNode valueNode = paramMap.get(key);
                    if (valueNode != null) {
                        final String val = valueNode.asText();
                        message.setHeader(key, val);
                    }
                }
            }

            if (bodyData == null) {
                message.setBody(null);
                return;
            }

            if (bodyData.isContainerNode()) {
                message.setBody(JsonUtils.toString(bodyData));
                return;
            }

            message.setHeader(Exchange.CONTENT_TYPE, "text/plain");
            message.setBody(bodyData.asText());
        }
    }

    public  HttpRequestUnwrapperProcessor(final JsonNode schema);

}