You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/05/07 15:06:13 UTC

svn commit: r654091 - /servicemix/smx3/branches/servicemix-3.2/core/servicemix-core/src/main/java/org/apache/servicemix/expression/JAXPXPathExpression.java

Author: gnodet
Date: Wed May  7 06:06:13 2008
New Revision: 654091

URL: http://svn.apache.org/viewvc?rev=654091&view=rev
Log:
SM-1307: Rest provider marshaler

Modified:
    servicemix/smx3/branches/servicemix-3.2/core/servicemix-core/src/main/java/org/apache/servicemix/expression/JAXPXPathExpression.java

Modified: servicemix/smx3/branches/servicemix-3.2/core/servicemix-core/src/main/java/org/apache/servicemix/expression/JAXPXPathExpression.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/core/servicemix-core/src/main/java/org/apache/servicemix/expression/JAXPXPathExpression.java?rev=654091&r1=654090&r2=654091&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/core/servicemix-core/src/main/java/org/apache/servicemix/expression/JAXPXPathExpression.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/core/servicemix-core/src/main/java/org/apache/servicemix/expression/JAXPXPathExpression.java Wed May  7 06:06:13 2008
@@ -22,9 +22,11 @@
 import javax.jbi.messaging.MessagingException;
 import javax.jbi.messaging.NormalizedMessage;
 import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
@@ -96,17 +98,45 @@
     }
 
     /**
+     * Evaluates the XPath expression and returns the string values for the XML items described
+     * by that expression.
+     *
      * Before evaluating the xpath expression, it will be compiled by calling
      * the {@link #afterPropertiesSet()} method.
+     *
+     * @param exchange MessageExchange to use on MessageVariableResolver
+     * @param message  NormalizedMessage to use on MessageVariableResolver
+     *
+     * @return Object  Contains the string values for the XML items described by the provided XPath
+     *                 expression
      */
     public Object evaluate(MessageExchange exchange, NormalizedMessage message) throws MessagingException {
+        return evaluate(exchange, message, XPathConstants.STRING);
+    }
+
+    /**
+     * Evaluates the XPath expression and the XML items described by that expression. The type is
+     * determined by the returnType parameter.  
+     *
+     * Before evaluating the xpath expression, it will be compiled by calling
+     * the {@link #afterPropertiesSet()} method.
+     *
+     * @param exchange    MessageExchange to use on MessageVariableResolver
+     * @param message     NormalizedMessage to use on MessageVariableResolver
+     * @param returnType  QName as defined by javax.xml.xpath.XPathConstants that describes the
+     *                    desired type of the object to be retuned
+     *
+     * @return Object    Contains the XML items described by the provided XPath expression. The type is
+     *                   determined by the returnType parameter.
+     */
+    public Object evaluate(MessageExchange exchange, NormalizedMessage message, QName returnType) throws MessagingException {
         try {
             afterPropertiesSet();
             Object object = getXMLNode(exchange, message);
             synchronized (this) {
                 variableResolver.setExchange(exchange);
                 variableResolver.setMessage(message);
-                return evaluateXPath(object);
+                return evaluateXPath(object, returnType);
             }
         } catch (TransformerException e) {
             throw new MessagingException(e);
@@ -196,6 +226,10 @@
         return xPathExpression.evaluate(object);
     }
 
+    protected Object evaluateXPath(Object object, QName returnType) throws XPathExpressionException {
+        return xPathExpression.evaluate(object, returnType);
+    }
+
     protected XPathExpression getXPathExpression() {
         return xPathExpression;
     }