Details
Description
When using the options outputHeader and outputType=SelectOne the body of the Exchange is not copied from in to out when the select returns no data..
Probably root is line 175-185 of SqlProducer.java that is missing an else for the above mentioned case.
if (data != null) { // <--- Missing the else // for noop=true we still want to enrich with the row count header if (getEndpoint().isNoop()) { exchange.getOut().setBody(exchange.getIn().getBody()); } else if (getEndpoint().getOutputHeader() != null) { exchange.getOut().setBody(exchange.getIn().getBody()); exchange.getOut().setHeader(getEndpoint().getOutputHeader(), data); } else { exchange.getOut().setBody(data); } exchange.getOut().setHeader(SqlConstants.SQL_ROW_COUNT, 1); }
following could be added (untested)
else { // if data == null if (getEndpoint().isNoop()) { exchange.getOut().setBody(exchange.getIn().getBody()); } else if (getEndpoint().getOutputHeader() != null) { exchange.getOut().setBody(exchange.getIn().getBody()); } exchange.getOut().setHeader(SqlConstants.SQL_ROW_COUNT, 0); }