Please review the revised patch, unit test patch is attached as well:
https://issues.apache.org/activemq/browse/SM-1358
On May 19, 2008, at 11:25, Guillaume Nodet wrote:
Btw, if you have some test case, that would be awesome!
On Mon, May 19, 2008 at 10:25 AM, Guillaume Nodet <[EMAIL PROTECTED]>
wrote:
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/
--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/