Hi folks,

I have an object coming in to the exchange from a direct route.

        from("direct:test2")
//            .log("plain message")
//            .log(LoggingLevel.INFO, log, "this is a test 2" )
            .setProperty("origMsg", body()) // Store the Original Message
            .log(LoggingLevel.INFO, log, "body saved off:
${exchangeProperty.origMsg}" )
            .end();

If either of the first two log statements are uncommented, then the final
log statement succeeds--the origMsg is placed on the exchange in a property
(it's a serializable pojo, if that matters).

However, if the first two log statements are commented out, as above, then
the output looks like:

12:35:27.246 [qtp173207982-22] INFO  MyRoute [CamelLogger.java:176] - body
saved off:

That is, the body is blank.

If I place a delay() between the from() and setProperty(), that also fails:

        from("direct:test2")
            .delay(1000)
            .setProperty("origMsg", body()) // Store the Original Message
            .log(LoggingLevel.INFO, log, "body saved off:
${exchangeProperty.origMsg}" )
            .end();

I am using java8/camel 2.15.2, and have confirmed the behavior on windows
and macos.

It seems to me that log() returns 'this', that is the ProcessorDefinition,
while from() returns a subclass of ProcessorDefinition, and that might be
causing setProperty() to be set on a different object.  But that is pure
speculation.

Am I using setProperty incorrectly?  What am I missing?

Thanks,
Dan

Reply via email to