|
From: <et...@us...> - 2011-06-20 02:34:43
|
Revision: 4410
http://mxquery.svn.sourceforge.net/mxquery/?rev=4410&view=rev
Author: etterth
Date: 2011-06-20 02:34:37 +0000 (Mon, 20 Jun 2011)
Log Message:
-----------
- First version of testing API for JS
Modified Paths:
--------------
trunk/MXQuery/xqib_src/ch/ethz/mxqjs/MXQueryJS.gwt.xml
trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/JsApi.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/EndElementNodeToken.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/NodeToken.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Document.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Node.java
Added Paths:
-----------
trunk/MXQuery/xqib_src/ch/ethz/mxqjs/test/
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxqjs/MXQueryJS.gwt.xml
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxqjs/MXQueryJS.gwt.xml 2011-06-19 15:01:20 UTC (rev 4409)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxqjs/MXQueryJS.gwt.xml 2011-06-20 02:34:37 UTC (rev 4410)
@@ -25,6 +25,7 @@
<!-- Specify the paths for translatable code -->
<source path='client'/>
+ <source path='test'/>
</module>
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/JsApi.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/JsApi.java 2011-06-19 15:01:20 UTC (rev 4409)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/JsApi.java 2011-06-20 02:34:37 UTC (rev 4410)
@@ -27,8 +27,9 @@
if ($wnd.xqib == undefined){
$wnd.xqib = {};
}
- $wnd.xqib.__executeWithArray = @ch.ethz.mxqjs.client.JsApi::n_ExecuteFunction(Lcom/google/gwt/core/client/JsArray;);
+ $wnd.xqib.__executeWithArray = @ch.ethz.mxqjs.client.JsApi::call(Lcom/google/gwt/core/client/JsArray;);
$wnd.eval ('xqib.call = function () {return xqib.__executeWithArray(arguments);}');
+ $wnd.xqib.generatetest = @ch.ethz.mxqjs.test.JsXQueryTestCase::create(Ljava/lang/String;);
}-*/;
public static JsArray<JavaScriptObject> call(JsArray<JavaScriptObject> args){
@@ -100,10 +101,6 @@
}
- private static native JsArray<JavaScriptObject> n_ExecuteFunction(JsArray<JavaScriptObject> arguments)/*-{
-
- return @ch.ethz.mxqjs.client.JsApi::call(Lcom/google/gwt/core/client/JsArray;)(arguments);
- }-*/;
private static native String asString(JsArray<JavaScriptObject> arr, int i)/*-{
return arr[i];
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java 2011-06-19 15:01:20 UTC (rev 4409)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java 2011-06-20 02:34:37 UTC (rev 4410)
@@ -2,29 +2,48 @@
import java.util.Vector;
+import com.google.gwt.core.client.JavaScriptObject;
+
import ch.ethz.mxquery.contextConfig.Context;
import ch.ethz.mxquery.datamodel.xdm.Token;
import ch.ethz.mxquery.datamodel.xdm.TokenInterface;
import ch.ethz.mxquery.exceptions.ErrorCodes;
import ch.ethz.mxquery.exceptions.MXQueryException;
+import ch.ethz.mxquery.exceptions.QueryLocation;
import ch.ethz.mxquery.exceptions.TypeException;
+import ch.ethz.mxquery.model.Iterator;
import ch.ethz.mxquery.model.TokenBasedIterator;
import ch.ethz.mxquery.model.XDMIterator;
+import ch.ethz.mxquery.util.browser.JsToMxQuery;
-public class JsEval extends TokenBasedIterator {
+public class JsEval extends Iterator {
- @Override
+ public JsEval() {
+ super(null, null);
+ }
+
+ private XDMIterator iter;
+
+
protected void init() throws MXQueryException {
TokenInterface tok = subIters[0].next();
String script = tok.getValueAsString();
if (script == null){
throw new TypeException(ErrorCodes.E0004_TYPE_INAPPROPRIATE_TYPE,"Invalid argument type", loc);
}
- eval(script);
- currentToken = Token.END_SEQUENCE_TOKEN;
+ JavaScriptObject ret =eval(script);
+ this.iter = JsToMxQuery.getIterator(ret);
}
@Override
+ public TokenInterface next() throws MXQueryException {
+ if (iter == null) {
+ init();
+ }
+ return iter.next();
+ }
+
+ @Override
protected XDMIterator copy(Context context, XDMIterator[] subIters,
Vector nestedPredCtxStack) throws MXQueryException {
JsEval copy = new JsEval();
@@ -33,8 +52,8 @@
return copy;
}
- protected native void eval(String script)/*-{
- eval(script);
+ protected native JavaScriptObject eval(String script)/*-{
+ return eval(script);
}-*/;
}
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/EndElementNodeToken.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/EndElementNodeToken.java 2011-06-19 15:01:20 UTC (rev 4409)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/EndElementNodeToken.java 2011-06-20 02:34:37 UTC (rev 4410)
@@ -7,7 +7,7 @@
import ch.ethz.mxquery.exceptions.MXQueryException;
import ch.ethz.mxquery.util.browser.dom.Node;
-public class EndElementNodeToken extends NodeToken {
+public class EndElementNodeToken extends ElementNodeToken{
protected EndElementNodeToken(Node node) {
super(node);
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/NodeToken.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/NodeToken.java 2011-06-19 15:01:20 UTC (rev 4409)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/update/store/domImpl/NodeToken.java 2011-06-20 02:34:37 UTC (rev 4410)
@@ -15,18 +15,21 @@
import ch.ethz.mxquery.datamodel.MXQueryNumber;
import ch.ethz.mxquery.datamodel.MXQueryTime;
import ch.ethz.mxquery.datamodel.MXQueryYearMonthDuration;
+import ch.ethz.mxquery.datamodel.Namespace;
import ch.ethz.mxquery.datamodel.QName;
import ch.ethz.mxquery.datamodel.StructuralIdentifier;
import ch.ethz.mxquery.datamodel.xdm.TokenInterface;
import ch.ethz.mxquery.datamodel.xdm.XDMScope;
import ch.ethz.mxquery.exceptions.MXQueryException;
import ch.ethz.mxquery.util.browser.dom.Document;
+import ch.ethz.mxquery.util.browser.dom.Element;
import ch.ethz.mxquery.util.browser.dom.Node;
public abstract class NodeToken implements StructuralIdentifier, TokenInterface{
protected Node node;
+ private XDMScope dynamicScope;
public static NodeToken createToken(Node node){
if (node == null)
@@ -271,14 +274,29 @@
@Override
public void setDynamicScope(XDMScope ns) {
- // TODO Auto-generated method stub
+ dynamicScope = ns;
}
@Override
public XDMScope getDynamicScope() {
- XDMScope scope = new XDMScope();
- return scope;
+ if (dynamicScope == null) {
+ dynamicScope = new XDMScope(new XDMScope());
+ final Element parentElement = node.getParentElement();
+ if (parentElement != null ) {
+ //TODO: parent handling
+ }
+ final String uri = node.getNameSpaceURI();
+ if(uri!= null) {
+ try {
+ dynamicScope.addNamespace(new Namespace(node.lookupPrefix(uri),uri));
+ } catch (MXQueryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ return dynamicScope;
}
@Override
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Document.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Document.java 2011-06-19 15:01:20 UTC (rev 4409)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Document.java 2011-06-20 02:34:37 UTC (rev 4410)
@@ -34,4 +34,8 @@
public final native void write(String str)/*-{
this.write(str);
}-*/;
+
+ public final Element getDocumentElement() {
+ return Element.createFromGwtNode(((com.google.gwt.dom.client.Document)(JavaScriptObject)this).getDocumentElement());
+ }
}
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Node.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Node.java 2011-06-19 15:01:20 UTC (rev 4409)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/util/browser/dom/Node.java 2011-06-20 02:34:37 UTC (rev 4410)
@@ -325,6 +325,14 @@
// return ((com.google.gwt.dom.client.Node)(Object)this).isOrHasChild(child);
// return DOMImpl.impl.isOrHasChild(this, child);
}
+
+ public final native String lookupPrefix(String uri)/*-{
+ return this.lookupPrefix(uri);
+ }-*/;
+
+ public final native String lookupNamespaceURI(String prefix)/*-{
+ return this.lookupNamespaceURI(prefix);
+ }-*/;
/**
* Removes the child node indicated by oldChild from the list of children,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|