You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by zappee <ar...@gmail.com> on 2016/02/07 15:32:57 UTC

type save body() unboxing

Hi,

I want to send emails with an smtp endpoint. Source endpoint: message queue.
Source message type: Person.class bean.
I need to read the Person.email parameter somehow at the beginning of my
route and save the value of the email bean parameter for the further
processing. I want to use this value as a "to" parameter of my smtp
endpoint.

I suppose that I can read the bean (which is on the body at the beginning of
my route) via Simple like this: simple("${header.email}"). But if I rename
the email member variable with my IDE (and getter/setter methods are renamed
as well) then my code still correct syntactically because "email" is
referenced as a string and my IDE wont rename this part of my code.

Can I do something like this: setHeader("to",
body().convertTo(Person.class).getEmail()) ?


String emailEndpoint =
"smtp://smtp.gmail.com:587?username=..&password=...&*to=%s*";

from(queueEndpointUrl)
   .log(LoggingLevel.DEBUG, LOGGER, "email sending...")
   .*setHeader("to", simple("${header.email}"))*
   .to("velocity:file:/....)
   .convertBodyTo(String.class)
   .log("Email is ready for send")
   .to( String.format(emailEndpoint, header("to"))
   .log("Email successfully sent");






--
View this message in context: http://camel.465427.n5.nabble.com/type-save-body-unboxing-tp5777342.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: type save body() unboxing

Posted by zappee <ar...@gmail.com>.
Thanks for the answer. Honestly I am looking for a simple, "one line"
solution instead of create a new Processor class or Bean or use inline
Processor definition.




--
View this message in context: http://camel.465427.n5.nabble.com/type-save-body-unboxing-tp5777342p5777594.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: type save body() unboxing

Posted by Gregoire Autric <ga...@redhat.com>.
Hi zappee,

I think If you want manage some header and class syntactically (compile
time)
you should use Processor feature [1]

from("....").process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        Person payload = exchange.getIn().getBody(Person.class);
        // do something with the payload and/or exchange here
       exchange.getIn().setHeader("to", payload.getEmail());
   }
}).to("....");

[1] http://camel.apache.org/processor.html


Best Regards, Bien à vous,  どうぞお元気で,
____________________________________________________
Greg AUTRIC
- JBoss Middleware Consultant -


On Sun, Feb 7, 2016 at 3:32 PM, zappee <ar...@gmail.com> wrote:
>
> Hi,
>
> I want to send emails with an smtp endpoint. Source endpoint: message
queue.
> Source message type: Person.class bean.
> I need to read the Person.email parameter somehow at the beginning of my
> route and save the value of the email bean parameter for the further
> processing. I want to use this value as a "to" parameter of my smtp
> endpoint.
>
> I suppose that I can read the bean (which is on the body at the beginning
of
> my route) via Simple like this: simple("${header.email}"). But if I rename
> the email member variable with my IDE (and getter/setter methods are
renamed
> as well) then my code still correct syntactically because "email" is
> referenced as a string and my IDE wont rename this part of my code.
>
> Can I do something like this: setHeader("to",
> body().convertTo(Person.class).getEmail()) ?
>
>
> String emailEndpoint =
> "smtp://smtp.gmail.com:587?username=..&password=...&*to=%s*";
>
> from(queueEndpointUrl)
>    .log(LoggingLevel.DEBUG, LOGGER, "email sending...")
>    .*setHeader("to", simple("${header.email}"))*
>    .to("velocity:file:/....)
>    .convertBodyTo(String.class)
>    .log("Email is ready for send")
>    .to( String.format(emailEndpoint, header("to"))
>    .log("Email successfully sent");
>
>
>
>
>
>
> --
> View this message in context:
http://camel.465427.n5.nabble.com/type-save-body-unboxing-tp5777342.html
> Sent from the Camel - Users mailing list archive at Nabble.com.