package org.basex.api.xqj; import java.io.InputStream; import java.io.Reader; import javax.xml.namespace.QName; import javax.xml.xquery.XQException; import javax.xml.xquery.XQExpression; import javax.xml.xquery.XQItemType; import javax.xml.xquery.XQResultSequence; import javax.xml.xquery.XQStaticContext; import org.basex.core.BaseXException; import org.basex.core.Command; import org.basex.core.CommandParser; import org.basex.core.Context; import org.basex.query.QueryException; import org.basex.util.Token; import org.xml.sax.XMLReader; /** * Java XQuery API - Expression. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ final class BXQExpression extends BXQDynamicContext implements XQExpression { /** * Constructor. * @param s static context * @param c closer */ BXQExpression(final BXQStaticContext s, final BXQConnection c) { super(null, s, c); } @Override public void cancel() throws XQException { opened(); qp.ctx.stop(); } @Override public void executeCommand(final String cmd) throws XQException { opened(); try { final Context ctx = BXQDataSource.context(); for(final Command c : new CommandParser(cmd, ctx).parse()) { // process output is suppressed, errors are returned as exception try { c.execute(ctx); } catch(final BaseXException ex) { throw new BXQException(ex.getMessage()); } } } catch(final QueryException ex) { throw new BXQException(ex); } } @Override public void executeCommand(final Reader cmd) throws XQException { executeCommand(Token.string(content(cmd))); } @Override public XQResultSequence executeQuery(final String input) throws XQException { qp.query(input); return execute(); } @Override public XQResultSequence executeQuery(final Reader qu) throws XQException { return executeQuery(Token.string(content(qu))); } @Override public XQResultSequence executeQuery(final InputStream qu) throws XQException { return executeQuery(Token.string(content(qu))); } @Override public XQStaticContext getStaticContext() throws XQException { opened(); return sc; } @Override public void bindDocument(QName arg0, XMLReader arg1, XQItemType arg2) throws XQException { // TODO Auto-generated method stub } }