You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Raul Kripalani (JIRA)" <ji...@apache.org> on 2012/10/03 01:09:07 UTC
[jira] [Created] (CAMEL-5680) Create a set/assign DSL where the
target is determined by an expression
Raul Kripalani created CAMEL-5680:
-------------------------------------
Summary: Create a set/assign DSL where the target is determined by an expression
Key: CAMEL-5680
URL: https://issues.apache.org/jira/browse/CAMEL-5680
Project: Camel
Issue Type: New Feature
Components: camel-core
Reporter: Raul Kripalani
Assignee: Raul Kripalani
Right now we have three setXYZ DSLs: {{setBody}}, {{setHeader}}, {{setProperty}}. We could create a generic {{<set />}} DSL where the target of the assignment is determined by an expression.
Imagine you had a POJO in your payload, and you want to invoke a setter with the value of a header. You could write something like:
{code}
<set>
<from>
<header>abc</header>
</from>
<to>
<ognl>body.setName($value)</ognl>
</to>
</set>
{code}
Kind of like BPEL's <assign />.
If you had a HashMap as the body, you could do ad-hoc setting of entries (now using the assign variant):
{code}
<assign>
<from>
<xpath headerName="myHeader">/my/expression</xpath>
</from>
<to>
<ognl>body.put('key', $value)</ognl>
</to>
</assign>
{code}
And if we could support XPath to XPath mapping, like BPEL's assign, that would be excellent.
{code}
<assign>
<from>
<xpath headerName="foo">/my/expression</xpath>
</from>
<to>
<xpath>body.put('key', $value)</xpath>
</to>
</assign>
{code}
But the latter is much more complex because the XPath standard by itself doesn't encompass setting of elements for obvious reasons. However, XProc does (p:insert).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira