Author: cbegin
Date: Tue May  5 04:32:55 2009
New Revision: 771556

URL: http://svn.apache.org/viewvc?rev=771556&view=rev
Log:
added XPathParser

Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XNode.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XPathParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/xpath/XPathParserTest.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XNode.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XNode.java?rev=771556&r1=771555&r2=771556&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XNode.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XNode.java
 Tue May  5 04:32:55 2009
@@ -11,8 +11,10 @@
   private String body;
   private Properties attributes;
   private Properties variables;
+  private XPathParser xpathParser;
 
-  public XNode(Node node, Properties variables) {
+  public XNode(XPathParser xpathParser, Node node, Properties variables) {
+    this.xpathParser = xpathParser;
     this.node = node;
     this.name = node.getNodeName();
     this.variables = variables;
@@ -20,6 +22,26 @@
     this.body = parseBody(node);
   }
 
+  public String evalString(String expression) {
+    return xpathParser.evalString(node, expression);
+  }
+
+  public Boolean evalBoolean(String expression) {
+    return xpathParser.evalBoolean(node, expression);
+  }
+
+  public Double evalDouble(String expression) {
+    return xpathParser.evalDouble(node, expression);
+  }
+
+  public List<XNode> evalNodes(String expression) {
+    return xpathParser.evalNodes(node, expression);
+  }
+
+  public XNode evalNode(String expression) {
+    return xpathParser.evalNode(node, expression);
+  }
+
   public Node getNode() {
     return node;
   }
@@ -185,7 +207,7 @@
       for (int i = 0, n = nodeList.getLength(); i < n; i++) {
         Node node = nodeList.item(i);
         if (node.getNodeType() == Node.ELEMENT_NODE) {
-          children.add(new XNode(node, variables));
+          children.add(new XNode(xpathParser, node, variables));
         }
       }
     }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XPathParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XPathParser.java?rev=771556&r1=771555&r2=771556&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XPathParser.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xpath/XPathParser.java
 Tue May  5 04:32:55 2009
@@ -33,37 +33,61 @@
     this.xpath = factory.newXPath();
   }
 
-  public String getString(String expression) {
-    String result = (String) evaluate(expression, XPathConstants.STRING);
+  public void setVariables(Properties variables) {
+    this.variables = variables;
+  }
+
+  public String evalString(String expression) {
+    return evalString(document, expression);
+  }
+
+  public String evalString(Object root, String expression) {
+    String result = (String) evaluate(expression, root, XPathConstants.STRING);
     result = PropertyParser.parse(result, variables);
     return result;
   }
 
-  public Boolean getBoolean(String expression) {
-    return (Boolean)evaluate(expression, XPathConstants.BOOLEAN);
+  public Boolean evalBoolean(String expression) {
+    return evalBoolean(document, expression);
   }
 
-  public Double getDouble(String expression) {
-    return (Double)evaluate(expression, XPathConstants.NUMBER);
+  public Boolean evalBoolean(Object root, String expression) {
+    return (Boolean)evaluate(expression, root, XPathConstants.BOOLEAN);
   }
 
-  public List<XNode> getNodes(String expression) {
+  public Double evalDouble(String expression) {
+    return evalDouble(document, expression);
+  }
+
+  public Double evalDouble(Object root, String expression) {
+    return (Double)evaluate(expression, root, XPathConstants.NUMBER);
+  }
+
+  public List<XNode> evalNodes(String expression) {
+    return evalNodes(document, expression);
+  }
+
+  public List<XNode> evalNodes(Object root, String expression) {
     List<XNode> xnodes = new ArrayList<XNode>();
-    NodeList nodes = (NodeList) evaluate(expression, XPathConstants.NODESET);
+    NodeList nodes = (NodeList) evaluate(expression, root, 
XPathConstants.NODESET);
     for(int i = 0; i < nodes.getLength(); i++) {
-      xnodes.add(new XNode(nodes.item(i),variables));
+      xnodes.add(new XNode(this,nodes.item(i),variables));
     }
     return xnodes;
   }
 
-  public XNode getNode(String expression) {
-    Node node = (Node) evaluate(expression, XPathConstants.NODE);
-    return new XNode(node,variables);
+  public XNode evalNode(String expression) {
+    return evalNode(document, expression);
   }
 
-  private Object evaluate(String expression, QName returnType) {
+  public XNode evalNode(Object root, String expression) {
+    Node node = (Node) evaluate(expression, root, XPathConstants.NODE);
+    return new XNode(this,node,variables);
+  }
+
+  private Object evaluate(String expression, Object root, QName returnType) {
     try {
-      return xpath.evaluate(expression, document, returnType);
+      return xpath.evaluate(expression, root, returnType);
     } catch (Exception e) {
       throw new RuntimeException("Error evaluating XPath.  Cause: " + e, e);
     }
@@ -100,5 +124,4 @@
     }
   }
 
-
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/xpath/XPathParserTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/xpath/XPathParserTest.java?rev=771556&r1=771555&r2=771556&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/xpath/XPathParserTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/xpath/XPathParserTest.java
 Tue May  5 04:32:55 2009
@@ -13,11 +13,11 @@
     String resource = "resources/nodelet_test.xml";
     Reader reader = Resources.getResourceAsReader(resource);
     XPathParser parser = new XPathParser(reader, false, null, null);
-    assertEquals(5.8d,parser.getDouble("/employee/height"));
-    assertEquals("id_var",parser.getString("/employee/@id"));
-    assertEquals(Boolean.TRUE,parser.getBoolean("/employee/active"));
-    assertEquals("<id>id_var</id>", 
parser.getNode("/employee/@id").toString().trim());
-    assertEquals(7, parser.getNodes("/employee/*").size());
+    assertEquals(5.8d,parser.evalDouble("/employee/height"));
+    assertEquals("id_var",parser.evalString("/employee/@id"));
+    assertEquals(Boolean.TRUE,parser.evalBoolean("/employee/active"));
+    assertEquals("<id>id_var</id>", 
parser.evalNode("/employee/@id").toString().trim());
+    assertEquals(7, parser.evalNodes("/employee/*").size());
   }
 
 }


Reply via email to