From: <al...@us...> - 2007-07-31 16:59:39
|
Revision: 6317 http://exist.svn.sourceforge.net/exist/?rev=6317&view=rev Author: allad Date: 2007-07-31 09:59:34 -0700 (Tue, 31 Jul 2007) Log Message: ----------- Prepared expressions fixes Modified Paths: -------------- branches/allad/.classpath branches/allad/src/org/exist/xqj/EXistXQRemoteExpression.java branches/allad/src/org/exist/xqj/EXistXQRemoteResultSequence.java branches/allad/src/org/exist/xqj/XQLocalConnection.java branches/allad/test/src/org/exist/xqj/XqjRemoteConnectionTest.java Added Paths: ----------- branches/allad/src/org/exist/xqj/EXistXQExpressionImpl.java branches/allad/src/org/exist/xqj/EXistXQRemoteExpressionImpl.java branches/allad/src/org/exist/xqj/EXistXQRemotePreparedExpression.java Modified: branches/allad/.classpath =================================================================== --- branches/allad/.classpath 2007-07-31 15:48:56 UTC (rev 6316) +++ branches/allad/.classpath 2007-07-31 16:59:34 UTC (rev 6317) @@ -1,90 +1,90 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry path="samples" kind="src"/> - <classpathentry path="extensions/fluent/src" kind="src"/> - <classpathentry path="tools/ircbot/src" kind="src"/> - <classpathentry path="tools/requestlog/src" kind="src"/> - <classpathentry path="src" kind="src"/> - <classpathentry path="test/src" kind="src"/> - <classpathentry path="tools/wrapper/src" kind="src"/> - <classpathentry path="extensions/modules/src" kind="src"/> - <classpathentry path="extensions/indexes/ngram/src" kind="src"/> - <classpathentry path="extensions/indexes/ngram/test/src" kind="src"/> - <classpathentry sourcepath="/jEdit-syntax" path="lib/core/jEdit-syntax.jar" kind="lib"/> - <classpathentry path="extensions/indexes/spatial/lib/hsqldb-1.8.0.7.jar" kind="lib"/> - <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/> - <classpathentry path="lib/cocoon/avalon-framework-impl-4.1.5.jar" kind="lib"/> - <classpathentry path="lib/cocoon/cocoon-2.1.7-deprecated.jar" kind="lib"/> - <classpathentry path="lib/cocoon/cocoon-2.1.7.jar" kind="lib"/> - <classpathentry path="lib/cocoon/cocoon-databases-block.jar" kind="lib"/> - <classpathentry path="lib/cocoon/cocoon-xmldb-block.jar" kind="lib"/> - <classpathentry path="lib/cocoon/cocoon-xsp-block.jar" kind="lib"/> - <classpathentry path="lib/cocoon/commons-jexl-1.0.jar" kind="lib"/> - <classpathentry path="lib/cocoon/commons-jxpath-1.2.jar" kind="lib"/> - <classpathentry path="lib/cocoon/commons-lang-2.0-20041007T2305.jar" kind="lib"/> - <classpathentry path="lib/cocoon/ehcache-1.1.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-component-1.2.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-datasource-1.1.1.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-i18n-1.1.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-instrument-1.0.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-instrument-manager-1.0.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-instrument-manager-interfaces-1.0.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-io-1.1.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-logger-1.1.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-naming-1.0.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-pool-1.2.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-sourceresolve-1.1.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-store-1.0.jar" kind="lib"/> - <classpathentry path="lib/cocoon/excalibur-xmlutil-1.0.jar" kind="lib"/> - <classpathentry path="lib/cocoon/javacApi-0.9.jar" kind="lib"/> - <classpathentry path="lib/cocoon/javacImpl-0.9.jar" kind="lib"/> - <classpathentry path="lib/cocoon/logkit-1.2.2.jar" kind="lib"/> - <classpathentry path="lib/cocoon/util.concurrent-1.3.4.jar" kind="lib"/> - <classpathentry path="lib/core/antlr-2.7.6.jar" kind="lib"/> - <classpathentry path="lib/core/commons-pool-1.2.jar" kind="lib"/> - <classpathentry path="lib/core/excalibur-cli-1.0.jar" kind="lib"/> - <classpathentry path="lib/core/javax.servlet-1.4.jar" kind="lib"/> - <classpathentry path="lib/core/jgroups-all.jar" kind="lib"/> - <classpathentry path="lib/core/jline-0_9_5.jar" kind="lib"/> - <classpathentry path="lib/core/log4j-1.2.14.jar" kind="lib"/> - <classpathentry path="lib/core/sunxacml.jar" kind="lib"/> - <classpathentry path="lib/core/xmldb.jar" kind="lib"/> - <classpathentry path="lib/core/xmlrpc-1.2-patched.jar" kind="lib"/> - <classpathentry path="lib/endorsed/xalan-2.7.0.jar" kind="lib"/> - <classpathentry path="lib/endorsed/xml-apis.jar" kind="lib"/> - <classpathentry path="lib/optional/axis-ant.jar" kind="lib"/> - <classpathentry path="lib/optional/axis-schema.jar" kind="lib"/> - <classpathentry path="lib/optional/axis.jar" kind="lib"/> - <classpathentry path="lib/optional/commons-fileupload-1.1.1.jar" kind="lib"/> - <classpathentry path="lib/optional/commons-httpclient-3.0.1.jar" kind="lib"/> - <classpathentry path="lib/optional/commons-io-1.3.jar" kind="lib"/> - <classpathentry path="lib/optional/jaxrpc.jar" kind="lib"/> - <classpathentry path="lib/optional/saaj.jar" kind="lib"/> - <classpathentry path="lib/optional/wsdl4j-1.5.1.jar" kind="lib"/> - <classpathentry path="thirdparty/tomcat5/bin/jmx.jar" kind="lib"/> - <classpathentry path="thirdparty/tomcat5/server/lib/catalina-5.0.28.jar" kind="lib"/> - <classpathentry path="tools/ant/lib/ant.jar" kind="lib"/> - <classpathentry path="tools/ant/lib/junit-4.3.1.jar" kind="lib"/> - <classpathentry path="tools/ant/lib/xmlunit-1.1.jar" kind="lib"/> - <classpathentry path="tools/ircbot/lib/pircbot.jar" kind="lib"/> - <classpathentry path="tools/jetty/lib/org.mortbay.jetty.jar" kind="lib"/> - <classpathentry path="tools/wrapper/lib/wrapper.jar" kind="lib"/> - <classpathentry path="lib/cocoon/avalon-framework-api-4.1.5.jar" kind="lib"/> - <classpathentry path="lib/core/jta.jar" kind="lib"/> - <classpathentry path="lib/core/quartz-1.6.0.jar" kind="lib"/> - <classpathentry path="lib/core/commons-logging-1.0.4.jar" kind="lib"/> - <classpathentry path="lib/core/commons-collections-3.1.jar" kind="lib"/> - <classpathentry path="lib/endorsed/serializer-2.9.0.jar" kind="lib"/> - <classpathentry path="lib/endorsed/xercesImpl-2.9.0.jar" kind="lib"/> - <classpathentry path="lib/endorsed/resolver-1.2.jar" kind="lib"/> - <classpathentry path="lib/optional/commons-discovery-0.4.jar" kind="lib"/> - <classpathentry path="lib/core/stax-api-1.0.1.jar" kind="lib"/> - <classpathentry path="extensions/fluent/lib/cglib-nodep-2.1_3.jar" kind="lib"/> - <classpathentry path="extensions/fluent/lib/jmock-1.0.1.jar" kind="lib"/> - <classpathentry path="extensions/fluent/lib/jmock-cglib-1.0.1.jar" kind="lib"/> - <classpathentry path="C:/Develop/eXist-allad/lib/core/commons-codec-1.3.jar" kind="lib"/> - <classpathentry path="lib/core/wstx-lgpl-3.1.2.jar" kind="lib"/> - <classpathentry path="lib/user/nekohtml-0.9.5.jar" kind="lib"/> - <classpathentry path="tools/jetty/lib/jasper-compiler.jar" kind="lib"/> - <classpathentry path="test/classes" kind="output"/> + <classpathentry kind="src" path="samples"/> + <classpathentry kind="src" path="extensions/fluent/src"/> + <classpathentry kind="src" path="tools/ircbot/src"/> + <classpathentry kind="src" path="tools/requestlog/src"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="test/src"/> + <classpathentry kind="src" path="tools/wrapper/src"/> + <classpathentry kind="src" path="extensions/modules/src"/> + <classpathentry kind="src" path="extensions/indexes/ngram/src"/> + <classpathentry kind="src" path="extensions/indexes/ngram/test/src"/> + <classpathentry sourcepath="/jEdit-syntax" kind="lib" path="lib/core/jEdit-syntax.jar"/> + <classpathentry kind="lib" path="extensions/indexes/spatial/lib/hsqldb-1.8.0.7.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="lib" path="lib/cocoon/avalon-framework-impl-4.1.5.jar"/> + <classpathentry kind="lib" path="lib/cocoon/cocoon-2.1.7-deprecated.jar"/> + <classpathentry kind="lib" path="lib/cocoon/cocoon-2.1.7.jar"/> + <classpathentry kind="lib" path="lib/cocoon/cocoon-databases-block.jar"/> + <classpathentry kind="lib" path="lib/cocoon/cocoon-xmldb-block.jar"/> + <classpathentry kind="lib" path="lib/cocoon/cocoon-xsp-block.jar"/> + <classpathentry kind="lib" path="lib/cocoon/commons-jexl-1.0.jar"/> + <classpathentry kind="lib" path="lib/cocoon/commons-jxpath-1.2.jar"/> + <classpathentry kind="lib" path="lib/cocoon/commons-lang-2.0-20041007T2305.jar"/> + <classpathentry kind="lib" path="lib/cocoon/ehcache-1.1.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-component-1.2.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-datasource-1.1.1.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-i18n-1.1.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-instrument-1.0.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-instrument-manager-1.0.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-instrument-manager-interfaces-1.0.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-io-1.1.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-logger-1.1.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-naming-1.0.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-pool-1.2.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-sourceresolve-1.1.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-store-1.0.jar"/> + <classpathentry kind="lib" path="lib/cocoon/excalibur-xmlutil-1.0.jar"/> + <classpathentry kind="lib" path="lib/cocoon/javacApi-0.9.jar"/> + <classpathentry kind="lib" path="lib/cocoon/javacImpl-0.9.jar"/> + <classpathentry kind="lib" path="lib/cocoon/logkit-1.2.2.jar"/> + <classpathentry kind="lib" path="lib/cocoon/util.concurrent-1.3.4.jar"/> + <classpathentry kind="lib" path="lib/core/antlr-2.7.6.jar"/> + <classpathentry kind="lib" path="lib/core/commons-pool-1.2.jar"/> + <classpathentry kind="lib" path="lib/core/excalibur-cli-1.0.jar"/> + <classpathentry kind="lib" path="lib/core/javax.servlet-1.4.jar"/> + <classpathentry kind="lib" path="lib/core/jgroups-all.jar"/> + <classpathentry kind="lib" path="lib/core/jline-0_9_5.jar"/> + <classpathentry kind="lib" path="lib/core/log4j-1.2.14.jar"/> + <classpathentry kind="lib" path="lib/core/sunxacml.jar"/> + <classpathentry kind="lib" path="lib/core/xmldb.jar"/> + <classpathentry kind="lib" path="lib/core/xmlrpc-1.2-patched.jar"/> + <classpathentry kind="lib" path="lib/endorsed/xalan-2.7.0.jar"/> + <classpathentry kind="lib" path="lib/endorsed/xml-apis.jar"/> + <classpathentry kind="lib" path="lib/optional/axis-ant.jar"/> + <classpathentry kind="lib" path="lib/optional/axis-schema.jar"/> + <classpathentry kind="lib" path="lib/optional/axis.jar"/> + <classpathentry kind="lib" path="lib/optional/commons-fileupload-1.1.1.jar"/> + <classpathentry kind="lib" path="lib/optional/commons-httpclient-3.0.1.jar"/> + <classpathentry kind="lib" path="lib/optional/commons-io-1.3.jar"/> + <classpathentry kind="lib" path="lib/optional/jaxrpc.jar"/> + <classpathentry kind="lib" path="lib/optional/saaj.jar"/> + <classpathentry kind="lib" path="lib/optional/wsdl4j-1.5.1.jar"/> + <classpathentry kind="lib" path="thirdparty/tomcat5/bin/jmx.jar"/> + <classpathentry kind="lib" path="thirdparty/tomcat5/server/lib/catalina-5.0.28.jar"/> + <classpathentry kind="lib" path="tools/ant/lib/ant.jar"/> + <classpathentry kind="lib" path="tools/ant/lib/junit-4.3.1.jar"/> + <classpathentry kind="lib" path="tools/ant/lib/xmlunit-1.1.jar"/> + <classpathentry kind="lib" path="tools/ircbot/lib/pircbot.jar"/> + <classpathentry kind="lib" path="tools/jetty/lib/org.mortbay.jetty.jar"/> + <classpathentry kind="lib" path="tools/wrapper/lib/wrapper.jar"/> + <classpathentry kind="lib" path="lib/cocoon/avalon-framework-api-4.1.5.jar"/> + <classpathentry kind="lib" path="lib/core/jta.jar"/> + <classpathentry kind="lib" path="lib/core/quartz-1.6.0.jar"/> + <classpathentry kind="lib" path="lib/core/commons-logging-1.0.4.jar"/> + <classpathentry kind="lib" path="lib/core/commons-collections-3.1.jar"/> + <classpathentry kind="lib" path="lib/endorsed/serializer-2.9.0.jar"/> + <classpathentry kind="lib" path="lib/endorsed/xercesImpl-2.9.0.jar"/> + <classpathentry kind="lib" path="lib/endorsed/resolver-1.2.jar"/> + <classpathentry kind="lib" path="lib/optional/commons-discovery-0.4.jar"/> + <classpathentry kind="lib" path="lib/core/stax-api-1.0.1.jar"/> + <classpathentry kind="lib" path="extensions/fluent/lib/cglib-nodep-2.1_3.jar"/> + <classpathentry kind="lib" path="extensions/fluent/lib/jmock-1.0.1.jar"/> + <classpathentry kind="lib" path="extensions/fluent/lib/jmock-cglib-1.0.1.jar"/> + <classpathentry kind="lib" path="lib/core/wstx-lgpl-3.1.2.jar"/> + <classpathentry kind="lib" path="lib/user/nekohtml-0.9.5.jar"/> + <classpathentry kind="lib" path="tools/jetty/lib/jasper-compiler.jar"/> + <classpathentry kind="lib" path="lib/core/commons-codec-1.3.jar"/> + <classpathentry kind="output" path="test/classes"/> </classpath> Added: branches/allad/src/org/exist/xqj/EXistXQExpressionImpl.java =================================================================== --- branches/allad/src/org/exist/xqj/EXistXQExpressionImpl.java (rev 0) +++ branches/allad/src/org/exist/xqj/EXistXQExpressionImpl.java 2007-07-31 16:59:34 UTC (rev 6317) @@ -0,0 +1,194 @@ +package org.exist.xqj; + +import java.io.InputStream; +import java.io.Reader; +import java.util.TimeZone; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamReader; +import javax.xml.transform.Source; +import javax.xml.xquery.XQConstants; +import javax.xml.xquery.XQDynamicContext; +import javax.xml.xquery.XQException; +import javax.xml.xquery.XQItem; +import javax.xml.xquery.XQItemType; +import javax.xml.xquery.XQSequence; +import javax.xml.xquery.XQStaticContext; + +import org.apache.log4j.Logger; +import org.exist.storage.BrokerPool; +import org.w3c.dom.Node; +import org.xml.sax.XMLReader; + +public class EXistXQExpressionImpl implements XQDynamicContext { + + protected final static Logger LOG = Logger.getLogger(BrokerPool.class); + + + + protected boolean expressionClosed = false; + protected int queryTimeout = EXistXQDataSource.TIMEOUT; + + protected XQStaticContext staticContext; + + + protected EXistXQDynamicContext dynamicContext = new EXistXQDynamicContext(); + + + protected EXistXQExpressionImpl(XQStaticContext ctxt) throws XQException { + + this.staticContext = ctxt; + } + + public void cancel() throws XQException { + // TODO Auto-generated method stub + + } + + protected void isExpressionClosed() throws XQException + { + if(expressionClosed) + throw new XQException("The expression is no longer valid."); + + } + + public boolean isClosed() { + + return expressionClosed; + } + + + + + + public void bindAtomicValue(QName arg0, String arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindAtomicValue(arg0, arg1, arg2); + + } + + public void bindBoolean(QName arg0, boolean arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindBoolean(arg0, arg1, arg2); + + } + + public void bindByte(QName arg0, byte arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindByte(arg0, arg1, arg2); + + } + + + public void bindDouble(QName arg0, double arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindDouble(arg0, arg1, arg2); + + } + + public void bindFloat(QName arg0, float arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindFloat(arg0, arg1, arg2); + + } + + public void bindInt(QName arg0, int arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindInt(arg0, arg1, arg2); + + } + + public void bindItem(QName arg0, XQItem arg1) throws XQException { + isExpressionClosed(); + dynamicContext.bindItem(arg0, arg1); + + } + + public void bindLong(QName arg0, long arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindLong(arg0, arg1, arg2); + + } + + public void bindNode(QName arg0, Node arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindNode(arg0, arg1, arg2); + + } + + public void bindObject(QName arg0, Object arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindObject(arg0, arg1, arg2); + + } + + public void bindSequence(QName arg0, XQSequence arg1) throws XQException { + isExpressionClosed(); + dynamicContext.bindSequence(arg0, arg1); + + } + + public void bindShort(QName arg0, short arg1, XQItemType arg2) throws XQException { + isExpressionClosed(); + dynamicContext.bindShort(arg0, arg1, arg2); + + } + + public TimeZone getImplicitTimeZone() throws XQException { + isExpressionClosed(); + return dynamicContext.getImplicitTimeZone(); + } + + public void setImplicitTimeZone(TimeZone arg0) throws XQException { + isExpressionClosed(); + dynamicContext.setImplicitTimeZone(arg0); + + } + + public XQStaticContext getStaticContext() throws XQException { + isExpressionClosed(); + return this.staticContext; + } + + public void bindDocument(QName varname, InputStream source, XQItemType type) throws XQException { + isExpressionClosed(); + dynamicContext.bindDocument(varname, source, type); + + } + + public void bindDocument(QName varname, Reader source, XQItemType type) throws XQException { + isExpressionClosed(); + dynamicContext.bindDocument(varname, source, type); + + } + + public void bindDocument(QName varName, Source value, XQItemType type) throws XQException { + isExpressionClosed(); + dynamicContext.bindDocument(varName, value, type); + + } + + public void bindDocument(QName varName, String value, XQItemType type) throws XQException { + isExpressionClosed(); + dynamicContext.bindDocument(varName, value, type); + + } + + public void bindDocument(QName varName, XMLReader value, XQItemType type) throws XQException { + isExpressionClosed(); + dynamicContext.bindDocument(varName, value, type); + + } + + public void bindDocument(QName varName, XMLStreamReader value, XQItemType type) throws XQException { + isExpressionClosed(); + dynamicContext.bindDocument(varName, value, type); + + } + + public void bindString(QName varName, String value, XQItemType type) throws XQException { + isExpressionClosed(); + dynamicContext.bindString(varName, value, type); + + } +} Modified: branches/allad/src/org/exist/xqj/EXistXQRemoteExpression.java =================================================================== --- branches/allad/src/org/exist/xqj/EXistXQRemoteExpression.java 2007-07-31 15:48:56 UTC (rev 6316) +++ branches/allad/src/org/exist/xqj/EXistXQRemoteExpression.java 2007-07-31 16:59:34 UTC (rev 6317) @@ -31,58 +31,27 @@ import org.xml.sax.InputSource; import org.xml.sax.XMLReader; -public class EXistXQRemoteExpression implements XQExpression { +public class EXistXQRemoteExpression extends EXistXQRemoteExpressionImpl implements XQExpression { - private final static Logger LOG = Logger.getLogger(BrokerPool.class); - private EXistXQRemoteConnection conn; - private boolean expressionClosed = false; - private int queryTimeout = EXistXQDataSource.TIMEOUT; - - //default values recommended by the XQJ specs - private int scrollability = XQConstants.SCROLLTYPE_FORWARD_ONLY; - private int updatability = XQConstants.RESULTTYPE_READ_ONLY; - private int holdability = XQConstants.HOLDTYPE_CLOSE_CURSORS_AT_COMMIT; - //sequences generated //stored so that they can be implicitly closed ArrayList results = new ArrayList(); - XQStaticContext staticContext; - - EXistXQDynamicContext dynamicContext = new EXistXQDynamicContext(); - - public EXistXQRemoteExpression() { + public EXistXQRemoteExpression() throws XQException { + super(null,null); } public EXistXQRemoteExpression(EXistXQRemoteConnection conn,XQStaticContext ctxt) throws XQException { - this.conn = conn; - this.staticContext = ctxt; + super(conn,ctxt); } - public void cancel() throws XQException { - // TODO Auto-generated method stub - - } - private void isExpressionClosed() throws XQException - { - if(conn == null) - throw new XQException("The expression is no longer valid."); - if(expressionClosed) - throw new XQException("The expression is no longer valid."); - else if(conn.isClosed()){ - expressionClosed = true; - throw new XQException("The expression is no longer valid."); - } - - - } @@ -137,171 +106,20 @@ public XQResultSequence executeQuery(String query) throws XQException { isExpressionClosed(); - EXistXQRemoteResultSequence seq = new EXistXQRemoteResultSequence(this,query,dynamicContext,scrollability,updatability,holdability); + EXistXQRemoteResultSequence seq = new EXistXQRemoteResultSequence(this,query,dynamicContext,staticContext.getScrollability(),staticContext.getHoldability()); //cache results.add(seq); return seq; } - public int getQueryLanguageTypeAndVersion() throws XQException { - - return XQConstants.LANGTYPE_XQUERY; - } + - public int getQueryTimeout() throws XQException { - - return queryTimeout; - } - - public boolean isClosed() { - - return expressionClosed; - } - - public void setQueryTimeout(int timeout) throws XQException { - if(timeout >0) - queryTimeout = timeout; - - } - public EXistXQRemoteConnection getRemoteConnection() { - return conn; - } + - public void bindAtomicValue(QName arg0, String arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindAtomicValue(arg0, arg1, arg2); - - } - - public void bindBoolean(QName arg0, boolean arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindBoolean(arg0, arg1, arg2); - - } - - public void bindByte(QName arg0, byte arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindByte(arg0, arg1, arg2); - - } - - - public void bindDouble(QName arg0, double arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindDouble(arg0, arg1, arg2); - - } - - public void bindFloat(QName arg0, float arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindFloat(arg0, arg1, arg2); - - } - - public void bindInt(QName arg0, int arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindInt(arg0, arg1, arg2); - - } - - public void bindItem(QName arg0, XQItem arg1) throws XQException { - isExpressionClosed(); - dynamicContext.bindItem(arg0, arg1); - - } - - public void bindLong(QName arg0, long arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindLong(arg0, arg1, arg2); - - } - - public void bindNode(QName arg0, Node arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindNode(arg0, arg1, arg2); - - } - - public void bindObject(QName arg0, Object arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindObject(arg0, arg1, arg2); - - } - - public void bindSequence(QName arg0, XQSequence arg1) throws XQException { - isExpressionClosed(); - dynamicContext.bindSequence(arg0, arg1); - - } - - public void bindShort(QName arg0, short arg1, XQItemType arg2) throws XQException { - isExpressionClosed(); - dynamicContext.bindShort(arg0, arg1, arg2); - - } - - public TimeZone getImplicitTimeZone() throws XQException { - isExpressionClosed(); - return dynamicContext.getImplicitTimeZone(); - } - - public void setImplicitTimeZone(TimeZone arg0) throws XQException { - isExpressionClosed(); - dynamicContext.setImplicitTimeZone(arg0); - - } - - public XQStaticContext getStaticContext() throws XQException { - isExpressionClosed(); - return this.staticContext; - } - - public void bindDocument(QName varname, InputStream source, XQItemType type) throws XQException { - isExpressionClosed(); - dynamicContext.bindDocument(varname, source, type); - - } - - public void bindDocument(QName varname, Reader source, XQItemType type) throws XQException { - isExpressionClosed(); - dynamicContext.bindDocument(varname, source, type); - - } - - public void bindDocument(QName varName, Source value, XQItemType type) throws XQException { - isExpressionClosed(); - dynamicContext.bindDocument(varName, value, type); - - } - - public void bindDocument(QName varName, String value, XQItemType type) throws XQException { - isExpressionClosed(); - dynamicContext.bindDocument(varName, value, type); - - } - - public void bindDocument(QName varName, XMLReader value, XQItemType type) throws XQException { - isExpressionClosed(); - dynamicContext.bindDocument(varName, value, type); - - } - - public void bindDocument(QName varName, XMLStreamReader value, XQItemType type) throws XQException { - isExpressionClosed(); - dynamicContext.bindDocument(varName, value, type); - - } - - public void bindString(QName varName, String value, XQItemType type) throws XQException { - isExpressionClosed(); - dynamicContext.bindString(varName, value, type); - - } - } Added: branches/allad/src/org/exist/xqj/EXistXQRemoteExpressionImpl.java =================================================================== --- branches/allad/src/org/exist/xqj/EXistXQRemoteExpressionImpl.java (rev 0) +++ branches/allad/src/org/exist/xqj/EXistXQRemoteExpressionImpl.java 2007-07-31 16:59:34 UTC (rev 6317) @@ -0,0 +1,32 @@ +package org.exist.xqj; + +import javax.xml.xquery.XQException; +import javax.xml.xquery.XQStaticContext; + +public class EXistXQRemoteExpressionImpl extends EXistXQExpressionImpl { + + protected EXistXQRemoteConnection conn; + + protected EXistXQRemoteExpressionImpl(EXistXQRemoteConnection conn,XQStaticContext ctxt) throws XQException { + + super(ctxt); + this.conn = conn; + } + + protected void isExpressionClosed() throws XQException + { + if(conn == null) + throw new XQException("The expression is no longer valid."); + if(expressionClosed) + throw new XQException("The expression is no longer valid."); + else if(conn.isClosed()){ + expressionClosed = true; + throw new XQException("The expression is no longer valid."); + } + + } + + public EXistXQRemoteConnection getRemoteConnection() { + return conn; + } +} Added: branches/allad/src/org/exist/xqj/EXistXQRemotePreparedExpression.java =================================================================== --- branches/allad/src/org/exist/xqj/EXistXQRemotePreparedExpression.java (rev 0) +++ branches/allad/src/org/exist/xqj/EXistXQRemotePreparedExpression.java 2007-07-31 16:59:34 UTC (rev 6317) @@ -0,0 +1,113 @@ +package org.exist.xqj; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.TimeZone; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamReader; +import javax.xml.transform.Source; +import javax.xml.xquery.XQConstants; +import javax.xml.xquery.XQException; +import javax.xml.xquery.XQItem; +import javax.xml.xquery.XQItemType; +import javax.xml.xquery.XQPreparedExpression; +import javax.xml.xquery.XQResultSequence; +import javax.xml.xquery.XQSequence; +import javax.xml.xquery.XQSequenceType; +import javax.xml.xquery.XQStaticContext; + +import org.apache.log4j.Logger; +import org.exist.storage.BrokerPool; +import org.w3c.dom.Node; +import org.xml.sax.XMLReader; + +public class EXistXQRemotePreparedExpression extends EXistXQRemoteExpressionImpl implements XQPreparedExpression { + + + + + + //sequence generated + //stored so that they can be implicitly closed + EXistXQRemoteResultSequence results = null; + + + + + String query; + + public EXistXQRemotePreparedExpression() throws XQException{ + super(null,null); + + } + + public EXistXQRemotePreparedExpression(String query,EXistXQRemoteConnection conn,XQStaticContext ctxt) throws XQException + { + super(conn,ctxt); + this.query = query; + + + } + + + + public void close() { + // TODO Auto-generated method stub + if(expressionClosed) + return; + expressionClosed = true; + if(results != null) { + try{ + results.close(); + }catch(XQException xe) { + LOG.error(xe); + } + } + } + + + + + public XQResultSequence executeQuery() throws XQException { + isExpressionClosed(); + if(results != null) { + try { + results.close(); + }catch(XQException x){ + + } + } + EXistXQRemoteResultSequence seq = new EXistXQRemoteResultSequence(this,query,dynamicContext,staticContext.getScrollability(),staticContext.getHoldability()); + //cache + results = seq; + return seq; + } + + public QName[] getAllExternalVariables() throws XQException { + // TODO Auto-generated method stub + return null; + } + + public QName[] getAllUnboundExternalVariables() throws XQException { + // TODO Auto-generated method stub + return null; + } + + public XQSequenceType getStaticResultType() throws XQException { + // TODO Auto-generated method stub + return null; + } + + public XQSequenceType getStaticVariableType(QName name) throws XQException { + // TODO Auto-generated method stub + return null; + } + + + +} Modified: branches/allad/src/org/exist/xqj/EXistXQRemoteResultSequence.java =================================================================== --- branches/allad/src/org/exist/xqj/EXistXQRemoteResultSequence.java 2007-07-31 15:48:56 UTC (rev 6316) +++ branches/allad/src/org/exist/xqj/EXistXQRemoteResultSequence.java 2007-07-31 16:59:34 UTC (rev 6317) @@ -75,11 +75,11 @@ public static String REST_NS = "http://exist-db.org/rest"; public static String EXIST_NS = "http://exist.sourceforge.net/NS/exist"; - EXistXQRemoteExpression expression; + EXistXQRemoteExpressionImpl expression; String query; private int scrollability = XQConstants.SCROLLTYPE_FORWARD_ONLY; - private int updatability = XQConstants.RESULTTYPE_READ_ONLY; + //private int updatability = XQConstants.RESULTTYPE_READ_ONLY; private int holdability = XQConstants.HOLDTYPE_CLOSE_CURSORS_AT_COMMIT; private boolean sequenceClosed = false; @@ -103,13 +103,12 @@ EXistXQDynamicContext dynamicContext; - public EXistXQRemoteResultSequence(EXistXQRemoteExpression expr,String query,EXistXQDynamicContext context,int scrollable,int updatable,int holdable) throws XQException + public EXistXQRemoteResultSequence(EXistXQRemoteExpressionImpl expr,String query,EXistXQDynamicContext context,int scrollable,int holdable) throws XQException { this.expression = expr; this.query = query; this.scrollability = scrollable; - this.updatability = updatable; this.holdability = holdable; this.sequence = Sequence.EMPTY_SEQUENCE; Modified: branches/allad/src/org/exist/xqj/XQLocalConnection.java =================================================================== --- branches/allad/src/org/exist/xqj/XQLocalConnection.java 2007-07-31 15:48:56 UTC (rev 6316) +++ branches/allad/src/org/exist/xqj/XQLocalConnection.java 2007-07-31 16:59:34 UTC (rev 6317) @@ -216,6 +216,7 @@ public XQPreparedExpression prepareExpression(String xquery, XQItemType contextItemType) throws XQException { // TODO Auto-generated method stub + return null; } Modified: branches/allad/test/src/org/exist/xqj/XqjRemoteConnectionTest.java =================================================================== --- branches/allad/test/src/org/exist/xqj/XqjRemoteConnectionTest.java 2007-07-31 15:48:56 UTC (rev 6316) +++ branches/allad/test/src/org/exist/xqj/XqjRemoteConnectionTest.java 2007-07-31 16:59:34 UTC (rev 6317) @@ -22,6 +22,7 @@ assertEquals(8080,conn.getServerPort()); assertEquals("/db/shakespeare/plays/hamlet.xml",conn.getCollectionPath()); System.out.println(conn.getRemoteURL()); + }catch(URISyntaxException e) { System.out.println(e); fail(e.toString()); @@ -154,11 +155,8 @@ //System.out.println(it.getItemType().toString()); - } + } - assertEquals(210,i); - - }catch(URISyntaxException e) { System.out.println(e); fail(e.toString()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |