@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; } }