@Override public synchronized void rollback() throws SailException { trx = null; metadata.clear(); revised.clear(); modified.clear(); arch.clear(); super.rollback(); }
private void addMetadata(Resource subj, URI pred, Value obj, Resource context) throws SailException { if (trx == null) { synchronized (metadata) { metadata.add(vf.createStatement(subj, pred, obj, context)); } } else { storeStatement(subj, pred, obj, context); } }
private URI getTrx() throws SailException { if (trx == null) { trx = sail.nextTransaction(); synchronized (metadata) { for (Statement st : metadata) { storeStatement(st.getSubject(), st.getPredicate(), st.getObject(), st.getContext()); } metadata.clear(); } } return trx; }
@Override public synchronized void commit() throws SailException { flushArchive(); if (trx != null) { for (Statement st : arch) { Resource ctx = st.getContext(); if (ctx instanceof URI) { modified.add(ctx); } } for (Resource ctx : modified) { if (isObsolete(ctx)) { super.addStatement(ctx, RDF.TYPE, Audit.OBSOLETE, trx); } } GregorianCalendar cal = new GregorianCalendar(); XMLGregorianCalendar xgc = factory.newXMLGregorianCalendar(cal); Literal now = vf.createLiteral(xgc); super.addStatement(trx, RDF.TYPE, TRANSACTION, trx); super.addStatement(trx, COMMITTED_ON, now, trx); for (Resource predecessor : predecessors) { super.addStatement(trx, PREDECESSOR, predecessor, trx); } sail.recent(trx, getWrappedConnection()); } super.commit(); metadata.clear(); revised.clear(); modified.clear(); arch.clear(); if (trx != null) { sail.committed(trx, predecessors); predecessors = Collections.singleton(trx); trx = null; } }