[jboss-svn-commits] JBL Code SVN: r31406 - labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/actions/cbr.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 4 13:43:39 EST 2010


Author: kevin.conner at jboss.com
Date: 2010-02-04 13:43:39 -0500 (Thu, 04 Feb 2010)
New Revision: 31406

Modified:
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/actions/cbr/XPathRouter.java
Log:
Parse source using StAX: JBESB-3171

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/actions/cbr/XPathRouter.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/actions/cbr/XPathRouter.java	2010-02-04 18:32:21 UTC (rev 31405)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/actions/cbr/XPathRouter.java	2010-02-04 18:43:39 UTC (rev 31406)
@@ -19,14 +19,19 @@
  */
 package org.jboss.soa.esb.actions.cbr;
 
+import org.jboss.internal.soa.esb.util.XMLHelper;
 import org.jboss.soa.esb.services.routing.MessageRouterException;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.util.XPathNamespaceContext;
 import org.jboss.soa.esb.ConfigurationException;
+import org.milyn.payload.StringSource;
+import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
 
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLStreamException;
 import javax.xml.xpath.*;
 import java.util.*;
 import java.io.*;
@@ -86,18 +91,25 @@
         public boolean evaluate(Object objectToTest) throws MessageRouterException {
             try {
                 if(objectToTest instanceof String) {
-                    return (Boolean) xpathExpression.evaluate(new InputSource(new StringReader((String) objectToTest)), XPathConstants.BOOLEAN);
+                    final XMLEventReader reader = XMLHelper.getXMLEventReader(new StringSource((String)objectToTest)) ;
+                    final Document doc = XMLHelper.createDocument(reader) ;
+                    return (Boolean) xpathExpression.evaluate(doc, XPathConstants.BOOLEAN);
                 } else if(objectToTest instanceof byte[]) {
-                    return (Boolean) xpathExpression.evaluate(new InputSource(new ByteArrayInputStream((byte[]) objectToTest)), XPathConstants.BOOLEAN);
+                    final XMLEventReader reader = XMLHelper.getXMLEventReader(new ByteArrayInputStream((byte[])objectToTest)) ;
+                    final Document doc = XMLHelper.createDocument(reader) ;
+                    return (Boolean) xpathExpression.evaluate(doc, XPathConstants.BOOLEAN);
                 } else if(objectToTest instanceof Node || objectToTest instanceof NodeList) {
                     return (Boolean) xpathExpression.evaluate(objectToTest, XPathConstants.BOOLEAN);
-                } else {
+                } else if (logger.isDebugEnabled()) {
                     logger.debug("Unsupported XPath evaluation type '" + objectToTest.getClass().getName() + "'.");
                 }
+            } catch (ParserConfigurationException e) {
+                logger.debug("Error evaluating xpath expression.", e);
+            } catch (XMLStreamException e) {
+                logger.debug("Error evaluating xpath expression.", e);
             } catch (XPathExpressionException e) {
                 logger.debug("Error evaluating xpath expression.", e);
             }
-
             return false;
         }
     }



More information about the jboss-svn-commits mailing list