use of org.brackit.xquery.atomic.Int64 in project sirix by sirixdb.
the class Commit method execute.
@Override
public Sequence execute(StaticContext sctx, QueryContext ctx, Sequence[] args) throws QueryException {
final DBNode doc = ((DBNode) args[0]);
if (doc.getTrx() instanceof XdmNodeWriteTrx) {
final XdmNodeWriteTrx wtx = (XdmNodeWriteTrx) doc.getTrx();
final long revision = wtx.getRevisionNumber();
wtx.commit();
return new Int64(revision);
} else {
final ResourceManager manager = doc.getTrx().getResourceManager();
final XdmNodeWriteTrx wtx;
if (manager.getAvailableNodeWriteTrx() == 0) {
wtx = manager.getXdmNodeWriteTrx().get();
} else {
wtx = manager.beginNodeWriteTrx();
}
final int revision = doc.getTrx().getRevisionNumber();
if (revision < manager.getMostRecentRevisionNumber()) {
wtx.revertTo(doc.getTrx().getRevisionNumber());
}
wtx.commit();
return new Int64(revision);
}
}
use of org.brackit.xquery.atomic.Int64 in project sirix by sirixdb.
the class Rollback method execute.
@Override
public Sequence execute(StaticContext sctx, QueryContext ctx, Sequence[] args) throws QueryException {
final DBNode doc = ((DBNode) args[0]);
if (doc.getTrx() instanceof XdmNodeWriteTrx) {
final XdmNodeWriteTrx wtx = (XdmNodeWriteTrx) doc.getTrx();
final long revision = wtx.getRevisionNumber();
wtx.rollback();
return new Int64(revision);
} else {
throw new QueryException(new QNm("The transaction is not a write transaction!"));
}
}
Aggregations