You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ra...@apache.org on 2006/05/15 02:58:48 UTC

svn commit: r406491 - in /xmlbeans/trunk/src: store/org/apache/xmlbeans/impl/store/Query.java store/org/apache/xmlbeans/impl/store/SaxonXBeansDelegate.java xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java

Author: radup
Date: Sun May 14 17:58:47 2006
New Revision: 406491

URL: http://svn.apache.org/viewcvs?rev=406491&view=rev
Log:
Added ability to use XQuery external variables.

Modified:
    xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Query.java
    xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/SaxonXBeansDelegate.java
    xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java

Modified: xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Query.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Query.java?rev=406491&r1=406490&r2=406491&view=diff
==============================================================================
--- xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Query.java (original)
+++ xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Query.java Sun May 14 17:58:47 2006
@@ -17,7 +17,6 @@
 
 import org.apache.xmlbeans.*;
 import org.apache.xmlbeans.impl.common.XPath;
-import org.apache.xmlbeans.impl.store.*;
 import org.w3c.dom.*;
 
 import javax.xml.namespace.QName;
@@ -265,8 +264,10 @@
                 // ("Document changed during select")
                     ;
 
+                Map bindings = (Map) XmlOptions.maskNull(_options).
+                    get(XmlOptions.XQUERY_VARIABLE_MAP);
                 List resultsList;
-                resultsList = _saxonImpl.execQuery(_cur.getDom());
+                resultsList = _saxonImpl.execQuery(_cur.getDom(), bindings);
 
                 assert resultsList.size() > -1;
 
@@ -338,8 +339,10 @@
                 // ("Document changed during select")
                     ;
 
+                Map bindings = (Map) XmlOptions.maskNull(_options).
+                    get(XmlOptions.XQUERY_VARIABLE_MAP);
                 List resultsList;
-                resultsList = _saxonImpl.execQuery(_cur.getDom());
+                resultsList = _saxonImpl.execQuery(_cur.getDom(), bindings);
 
                 assert resultsList.size() > -1;
 

Modified: xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/SaxonXBeansDelegate.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/SaxonXBeansDelegate.java?rev=406491&r1=406490&r2=406491&view=diff
==============================================================================
--- xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/SaxonXBeansDelegate.java (original)
+++ xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/SaxonXBeansDelegate.java Sun May 14 17:58:47 2006
@@ -126,6 +126,6 @@
 
      public static interface QueryInterface
     {
-        public List execQuery(Object node);
+        public List execQuery(Object node, Map variableBindings);
     }
 }

Modified: xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java?rev=406491&r1=406490&r2=406491&view=diff
==============================================================================
--- xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java (original)
+++ xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java Sun May 14 17:58:47 2006
@@ -20,12 +20,15 @@
 import net.sf.saxon.query.StaticQueryContext;
 import net.sf.saxon.query.XQueryExpression;
 import org.apache.xmlbeans.XmlRuntimeException;
+import org.apache.xmlbeans.XmlTokenSource;
 import org.apache.xmlbeans.impl.store.SaxonXBeansDelegate;
 import org.w3c.dom.Node;
 
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.TransformerException;
 import java.util.List;
+import java.util.Map;
+import java.util.Iterator;
 
 
 public class XBeansXQuery
@@ -62,7 +65,7 @@
         }
     }
 
-    public List execQuery(Object node)
+    public List execQuery(Object node, Map variableBindings)
     {
         try {
             Node context_node = (Node) node;
@@ -72,6 +75,25 @@
                     buildDocument(new DOMSource(context_node)));
             dynamicContext.setParameter(_contextVar,
                     dynamicContext.getContextNode());
+            // Set the other variables
+            if (variableBindings != null)
+                for (Iterator it = variableBindings.entrySet().iterator();
+                    it.hasNext(); )
+                {
+                    Map.Entry entry = (Map.Entry) it.next();
+                    if (entry.getValue() instanceof XmlTokenSource)
+                    {
+                        DOMSource domSource;
+                        domSource = new DOMSource(((XmlTokenSource)
+                            entry.getValue()).getDomNode());
+                        dynamicContext.setParameter((String) entry.getKey(),
+                            domSource);
+                    }
+                    else if (entry.getValue() instanceof String)
+                    dynamicContext.setParameter((String) entry.getKey(),
+                        entry.getValue());
+                }
+
             return _xquery.evaluate(dynamicContext);
         }
         catch (TransformerException e) {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: commits-help@xmlbeans.apache.org