Looks like a good use case, thx a lot for sharing this. Could you raise a JIRA and attach your patch ?
On Mon, May 19, 2008 at 10:22 AM, Andrew Skiba <[EMAIL PROTECTED]> wrote: > Hello Guillaume, > > First of all, I really meant maps, not only for an example. > ConstantExpression is already handling maps correctly, I tried. I guess > PropertyExpression will handle any complex type, too. So only XPath > expressions are unable to deal with maps. > > It's needed to use maps instead of primitives if you implement a Command > Pattern in the endpoint. For example, database named query has a name and a > list of named parameters with their values. It may be implemented with a > method like query(String queryName, Map<String, Object> params). Instead of > hard coding XPath of params in the NormalizedMessage, it would be useful if > you could configure where to find it, like this: > > <jpa:jpa-query service="test:jpa" > endpoint="updateQuery"> > <queryName> > <bean > class="org.apache.servicemix.expression. JAXPXPathXStreamExpression"> > <constructor-arg > value="/query/name"/> > </bean> > </queryName> > <params> > <bean > class="org.apache.servicemix.expression.JAXPXPathXStreamExpression"> > <constructor-arg > value="/query/params/map"/> > </bean> > </params> > </jpa:jpa-query> > > Then it can handle messages with content like > > <query> > <name>updateVideoTitle</name> > <params> > <map> > <entry> > <key>id</key> > <value>10</value> > </entry><entry> > <key>title</key> > <value>Office space</value> > </entry> > </map> > </params> > </query> > > What do you think? > Andrew. > > On May 19, 2008, at 10:15, Guillaume Nodet wrote: > >> How would one use such an expression ? Usually, predicates use simple >> types >> such as boolean or string, not complex objects as maps. I know map is >> just >> an example, but other simple types are already handled by subtypes of the >> JAXPXpathExpression. Just wondering... >> >> On Sun, May 18, 2008 at 3:27 PM, Andrew Skiba <[EMAIL PROTECTED]> wrote: >>> >>> Existing JAXPXPathExpression evaluates only to strings. This subclass >>> allows >>> to use XStream to evaluate a part of a message into an object of any >>> type. >>> For example if a message carries XML like <message> <params> <map> >>> <entry> >>> <key>key1</key> <value>value1</value> </...> and >>> xpath=/message/params/map >>> then this JAXPXPathXStreamExpression evaluates it into java.util.Map >>> Please tell me what you think. >>> Andrew. >>> >>> >>> >> >> >> >> -- >> Cheers, >> Guillaume Nodet >> ------------------------ >> Blog: http://gnodet.blogspot.com/ > > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/
