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/

Reply via email to