Hi and thanks for the fix. However there are some additional issues.
The rest dsl is not returning the correct status code. I have reverted back to a normal flow using .to(). Not sure if it’s related. But I’m not capable to return the correct http status code. The error message is returned but with 200 OK. /M Den 23 mars 2024 kl 09:27, Claus Ibsen <[claus.ib...@gmail.com](mailto:Den 23 mars 2024 kl 09:27, Claus Ibsen <<a href=)> skrev: > Hi > > Thanks for the sample project. This is the http response I see now after a > code-fix > > ~/workspace ❯ curl -i -X POST http://localhost:8080/test > > 8s > HTTP/1.1 500 > Content-Type: application/json > Transfer-Encoding: chunked > Date: Sat, 23 Mar 2024 08:02:31 GMT > Connection: close > > { > "status" : 1000, > "message" : "ERROR message = Unspecific Error(Error occurred)" > }% > > On Sat, Mar 23, 2024 at 9:15 AM Claus Ibsen <claus.ib...@gmail.com> wrote: > >> Hi >> >> https://issues.apache.org/jira/browse/CAMEL-20607 >> >> On Thu, Mar 21, 2024 at 1:03 PM Mikael Andersson Wigander >> <mikael.andersson.wigan...@pm.me.invalid> wrote: >> >>> >>> Hi >>> >>> As simple as I get do it… >>> >>> https://github.com/hakuseki/demo-Camel-UoW >>> >>> >>> >>> /M >>> >>> >>> On Thursday, March 21st, 2024 at 11:09, Claus Ibsen < >>> claus.ib...@gmail.com> wrote: >>> >>> > Hi >>> > >>> > Yeah if you keep it plain camel and not fancy spring boot stuff >>> > >>> > On Thu, Mar 21, 2024 at 11:06 AM Mikael Andersson Wigander >>> > mikael.andersson.wigan...@pm.me.invalid wrote: >>> > >>> > > Spring boot OK? >>> > > >>> > > >>> > > /M >>> > > >>> > > Den 21 mars 2024 kl 10:51, Claus Ibsen <[claus.ib...@gmail.com >>> ](mailto:Den >>> > > 21 mars 2024 kl 10:51, Claus Ibsen <<a href=)> skrev: >>> > > >>> > > > Hi >>> > > > >>> > > > Can you make something that is pure camel (not quarkus) that will >>> help >>> > > > >>> > > > On Thu, Mar 21, 2024 at 7:56 AM Mikael Andersson Wigander >>> > > > mikael.andersson.wigan...@pm.me.invalid wrote: >>> > > > >>> > > > > Here's a repo to use >>> > > > > >>> > > > > https://github.com/hakuseki/code-with-quarkus >>> > > > > >>> > > > > /M >>> > > > > >>> > > > > On Wednesday, March 20th, 2024 at 22:17, Claus Ibsen < >>> > > > > claus.ib...@gmail.com> wrote: >>> > > > > >>> > > > > > Hi >>> > > > > > >>> > > > > > Are you able to put together a smaller and simpler example with >>> just >>> > > > > > routes >>> > > > > > (no rest-dsl) that can let us quicker take a look and better >>> > > > > > understand >>> > > > > > what is happening? >>> > > > > > >>> > > > > > On Mon, Mar 18, 2024 at 10:04 AM Mikael Andersson Wigander >>> > > > > > mikael.andersson.wigan...@pm.me.invalid wrote: >>> > > > > > >>> > > > > > > Hi >>> > > > > > > >>> > > > > > > I have experienced a weird behavior in Camel 4.4.0 in Quarkus >>> where >>> > > > > > > the >>> > > > > > > Exception handling is not executing as expected when using a >>> toV(). >>> > > > > > > >>> > > > > > > In my code sample below everything starts with a rest call. >>> > > > > > > If this rest call finish without errors then the original >>> message >>> > > > > > > should >>> > > > > > > be returned. >>> > > > > > > If an error is thrown, then an error message should be >>> returned. >>> > > > > > > >>> > > > > > > But if I call an endpoint using the .toV(), the error is >>> processed >>> > > > > > > as >>> > > > > > > expected BUT NOT returned. It seems like something is messing >>> with >>> > > > > > > the >>> > > > > > > unit >>> > > > > > > of work or whatever… >>> > > > > > > >>> > > > > > > from(direct("start")) >>> > > > > > > .setBody(constant(List.of("A", "B"))) >>> > > > > > > .to(direct("line")); >>> > > > > > > >>> > > > > > > // .toV(direct("line").getUri(), "mySend", "myReceive"); >>> > > > > > > >>> > > > > > > By commenting out the .to() and removing the comment on >>> .toV() the >>> > > > > > > problem >>> > > > > > > occurs. >>> > > > > > > >>> > > > > > > This is a simulation so the incoming rest post payload is NOT >>> > > > > > > returned >>> > > > > > > (just POST a JSON), however the body of the "start" endpoint >>> should >>> > > > > > > be >>> > > > > > > returned if everything work, but an error message should be >>> returned >>> > > > > > > if an >>> > > > > > > error is thrown. >>> > > > > > > This is not happening if the .toV() is used. Then the body of >>> the >>> > > > > > > "start" >>> > > > > > > endpoint is returned. >>> > > > > > > >>> > > > > > > Might this be a bug or have I messed something up? >>> > > > > > > >>> > > > > > > I really like the Variables now, to send to an endpoint and be >>> > > > > > > certain >>> > > > > > > the >>> > > > > > > original body is untouched without the hazzle of >>> storing/restoring >>> > > > > > > logic… >>> > > > > > > >>> > > > > > > /M >>> > > > > > > >>> > > > > > > *public class *TestRouter *extends *EndpointRouteBuilder { >>> > > > > > > @Override >>> > > > > > > *public void *configure() *throws Exception { >>> > > > > > > onException(IllegalAccessException.class) >>> > > > > > > .routeId("Exceptions") >>> > > > > > > .maximumRedeliveries(0) >>> > > > > > > .handled(true) >>> > > > > > > .removeHeaders("") >>> > > > > > > .process(*new *JsonResponseProcessor()) >>> > > > > > > .to(log("Exceptions").level("WARN") >>> > > > > > > .showBody(false) >>> > > > > > > .showBodyType(false) >>> > > > > > > .showHeaders(true) >>> > > > > > > .multiline(true)) >>> > > > > > > .to(direct("reply")); >>> > > > > > > >>> > > > > > > restConfiguration() >>> > > > > > > .bindingMode(RestBindingMode.json) >>> > > > > > > .dataFormatProperty("prettyPrint", "true") >>> > > > > > > .component("servlet") >>> > > > > > > .apiProperty("cors", "true"); >>> > > > > > > >>> > > > > > > rest().post("/test") >>> > > > > > > .id("REST-workOrder-POST") >>> > > > > > > .consumes("application/json") >>> > > > > > > .produces("application/json") >>> > > > > > > .outType(ResponseMessage.class) >>> > > > > > > .to(direct("start").getUri()); >>> > > > > > > >>> > > > > > > from(direct("start")) >>> > > > > > > .setBody(constant(List.of("A", "B"))) >>> > > > > > > .to(direct("line")); >>> > > > > > > >>> > > > > > > *// .toV(direct("line").getUri(), "mySend", "myReceive"); >>> > > > > > > *from("direct:line") >>> > > > > > > .to("log:line") >>> > > > > > > .process(*new *MyProcessor()) >>> > > > > > > .to("mock:line"); >>> > > > > > > >>> > > > > > > from(direct("reply")) >>> > > > > > > .routeId("createResponse") >>> > > > > > > .description("Creates a unified response") >>> > > > > > > .to(log("DIRECT_REPLY").showBody(true) >>> > > > > > > .showVariables(true) >>> > > > > > > .showBodyType(true) >>> > > > > > > .showHeaders(true) >>> > > > > > > .multiline(true)) >>> > > > > > > .end(); >>> > > > > > > } >>> > > > > > > >>> > > > > > > *private class *MyProcessor *implements >>> > > > > > > *org.apache.camel.*Processor * >>> > > > > > > { >>> > > > > > > @Override >>> > > > > > > *public void *process(*final **Exchange *exchange) *throws >>> > > > > > > *Exception >>> > > > > > > { >>> > > > > > > log.info(exchange.getIn() >>> > > > > > > .getBody(String.class)); >>> > > > > > > *throw new *IllegalAccessException("Error occurred"); >>> > > > > > > } >>> > > > > > > } >>> > > > > > > >>> > > > > > > *private class *JsonResponseProcessor *implements **Processor >>> *{ >>> > > > > > > @Override >>> > > > > > > *public void *process(*final **Exchange *exchange) { >>> > > > > > > >>> > > > > > > Exception cause = exchange.getProperty(Exchange. >>> > > > > > > EXCEPTION_CAUGHT, Exception.class); >>> > > > > > > ResponseMessage message = *new *ResponseMessage(); >>> > > > > > > >>> > > > > > > *final **Message *in = exchange.getIn(); >>> > > > > > > *if *(cause != null) { >>> > > > > > > String responseCode = in.getHeader(Exchange. >>> > > > > > > HTTP_RESPONSE_CODE, String.class); >>> > > > > > > >>> > > > > > > String reason = "Unspecific Error"; >>> > > > > > > String errorString = cause.getMessage(); >>> > > > > > > String statusCode = "1000"; >>> > > > > > > >>> > > > > > > in.setHeader(Exchange.HTTP_RESPONSE_CODE, >>> > > > > > > HttpResponseStatus.INTERNAL_SERVER_ERROR); >>> > > > > > > message.setError(NumberUtils.toInt(statusCode, 1000), >>> > > > > > > String.format("ERROR message = %s(%s)", >>> > > > > > > reason, errorString)); >>> > > > > > > >>> > > > > > > } >>> > > > > > > in.setBody(message); >>> > > > > > > } >>> > > > > > > } >>> > > > > > > } >>> > > > > > > >>> > > > > > > ------------------------------ >>> > > > > > > >>> > > > > > > Capgemini is a trading name used by the Capgemini Group of >>> companies >>> > > > > > > which >>> > > > > > > includes Capgemini Sverige AB, a company registered in Sweden >>> > > > > > > (number >>> > > > > > > 556092-3053) whose registered office is at FLEMINGGATAN 18 >>> BOX 12054 >>> > > > > > > S-102 >>> > > > > > > 22 Stockholm, Sweden. >>> > > > > > > This message contains information that may be privileged or >>> > > > > > > confidential >>> > > > > > > and is the property of the Capgemini Group. It is intended >>> only for >>> > > > > > > the >>> > > > > > > person to whom it is addressed. If you are not the intended >>> > > > > > > recipient, >>> > > > > > > you >>> > > > > > > are not authorized to read, print, retain, copy, disseminate, >>> > > > > > > distribute, >>> > > > > > > or use this message or any part thereof. If you receive this >>> > > > > > > message in >>> > > > > > > error, please notify the sender immediately and delete all >>> copies of >>> > > > > > > this >>> > > > > > > message. >>> > > > > > >>> > > > > > -- >>> > > > > > Claus Ibsen >>> > > > > > ----------------- >>> > > > > > @davsclaus >>> > > > > > Camel in Action 2: https://www.manning.com/ibsen2 >>> > > > >>> > > > -- >>> > > > Claus Ibsen >>> > > > ----------------- >>> > > > @davsclaus >>> > > > Camel in Action 2: https://www.manning.com/ibsen2 >>> > >>> > >>> > >>> > >>> > -- >>> > Claus Ibsen >>> > ----------------- >>> > @davsclaus >>> > Camel in Action 2: https://www.manning.com/ibsen2 >>> >> >> >> -- >> Claus Ibsen >> ----------------- >> @davsclaus >> Camel in Action 2: https://www.manning.com/ibsen2 >> > > -- > Claus Ibsen > ----------------- > @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2