|
From: <et...@us...> - 2011-05-09 13:52:42
|
Revision: 4327
http://mxquery.svn.sourceforge.net/mxquery/?rev=4327&view=rev
Author: etterth
Date: 2011-05-09 13:52:36 +0000 (Mon, 09 May 2011)
Log Message:
-----------
- fn:currenttime is now set in invokeModule
- added b:js-eval($script as xs:string)
Modified Paths:
--------------
trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/Environment.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FG.xml
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FunctionGallery.java
Added Paths:
-----------
trunk/MXQuery/xqib_samples/js-eval.html
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java
Added: trunk/MXQuery/xqib_samples/js-eval.html
===================================================================
--- trunk/MXQuery/xqib_samples/js-eval.html (rev 0)
+++ trunk/MXQuery/xqib_samples/js-eval.html 2011-05-09 13:52:36 UTC (rev 4327)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>XQIB: Sample page</title>
+ <meta charset="UTF-8"/>
+ <link href="style.css" rel="stylesheet" type="text/css">
+ <script type="text/javascript" src="mxqueryjs/mxqueryjs.nocache.js"></script>
+ <script type="application/xquery">
+
+
+ b:js-eval('window.alert("eval!")')
+
+ </script>
+ </head>
+ <body>
+ <h1>timer</h1>
+
+ </body>
+</html>
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/Environment.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/Environment.java 2011-05-09 02:20:28 UTC (rev 4326)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxqjs/client/Environment.java 2011-05-09 13:52:36 UTC (rev 4327)
@@ -186,6 +186,8 @@
}
int arity = subiterators.length;
Function function = functionname.context.getFunction(functionname.qname, arity);
+ //set currenttime
+ functionname.context.setCurrentTime(null);
XDMIterator func = function.getFunctionImplementation(new Context(functionname.context));
func.setSubIters(subiterators);
// func.setContext(getContext(), true);
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FG.xml
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FG.xml 2011-05-09 02:20:28 UTC (rev 4326)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FG.xml 2011-05-09 13:52:36 UTC (rev 4327)
@@ -2,6 +2,21 @@
<functionGallery basePackage="ch.ethz.mxquery.functions.">
<functionGroup prefix="b" namespace="http://xqib.org">
<functionDescription>
+ <functionName>js-eval</functionName>
+ <parameters>
+ <paramType>xs:string</paramType>
+ </parameters>
+ <className>JsEval</className>
+ </functionDescription>
+ <functionDescription>
+ <functionName>timer</functionName>
+ <parameters>
+ <paramType>xs:integer</paramType>
+ <paramType>QName</paramType>
+ </parameters>
+ <className>Timer</className>
+ </functionDescription>
+ <functionDescription>
<functionName>getCookieNames</functionName>
<className>GetCookieNames</className>
</functionDescription>
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FunctionGallery.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FunctionGallery.java 2011-05-09 02:20:28 UTC (rev 4326)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/FunctionGallery.java 2011-05-09 13:52:36 UTC (rev 4327)
@@ -453,6 +453,57 @@
qn = new QName(
"http://xqib.org",
"b",
+ "js-eval");
+ paramTypes = new TypeInfo[1];
+
+ paramTypes[0] = new TypeInfo(getType(
+ "xs:string",ctx),getOccur("xs:string"),null);
+
+ signature = new FunctionSignature(qn, paramTypes, FunctionSignature.SYSTEM_FUNCTION, XDMIterator.EXPR_CATEGORY_SIMPLE, false, false);
+
+
+ {
+ ch.ethz.mxquery.functions.b.JsEval iter = new ch.ethz.mxquery.functions.b.JsEval();
+ iter.setContext(context, false);
+
+ type = -1;
+
+ function = new Function(
+ null,signature,
+ iter, null, type );
+ fg.add(function);
+ }
+
+ qn = new QName(
+ "http://xqib.org",
+ "b",
+ "timer");
+ paramTypes = new TypeInfo[2];
+
+ paramTypes[0] = new TypeInfo(getType(
+ "xs:integer",ctx),getOccur("xs:integer"),null);
+
+ paramTypes[1] = new TypeInfo(getType(
+ "QName",ctx),getOccur("QName"),null);
+
+ signature = new FunctionSignature(qn, paramTypes, FunctionSignature.SYSTEM_FUNCTION, XDMIterator.EXPR_CATEGORY_SIMPLE, false, false);
+
+
+ {
+ ch.ethz.mxquery.functions.b.Timer iter = new ch.ethz.mxquery.functions.b.Timer();
+ iter.setContext(context, false);
+
+ type = -1;
+
+ function = new Function(
+ null,signature,
+ iter, null, type );
+ fg.add(function);
+ }
+
+ qn = new QName(
+ "http://xqib.org",
+ "b",
"getCookieNames");
paramTypes = new TypeInfo[0];
Added: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java (rev 0)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java 2011-05-09 13:52:36 UTC (rev 4327)
@@ -0,0 +1,40 @@
+package ch.ethz.mxquery.functions.b;
+
+import java.util.Vector;
+
+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.TypeException;
+import ch.ethz.mxquery.model.TokenBasedIterator;
+import ch.ethz.mxquery.model.XDMIterator;
+
+public class JsEval extends TokenBasedIterator {
+
+ @Override
+ 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;
+ }
+
+ @Override
+ protected XDMIterator copy(Context context, XDMIterator[] subIters,
+ Vector nestedPredCtxStack) throws MXQueryException {
+ JsEval copy = new JsEval();
+ copy.setSubIters(subIters);
+ copy.setContext(context, true);
+ return copy;
+ }
+
+ protected native void eval(String script)/*-{
+ eval(script);
+ }-*/;
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|