@Override public synchronized void commit() throws RepositoryException { try { try { if (blobVersion != null) { try { blobVersion.prepare(); } catch (IOException exc) { throw new BlobConflictException(exc); } } super.commit(); if (blobVersion != null) { blobVersion.commit(); blobVersion = null; } } finally { if (blobVersion != null) { blobVersion.rollback(); } } } catch (IOException e) { throw new BlobStoreException(e); } }
@Override public synchronized void setAutoCommit(boolean auto) throws RepositoryException { if (!auto && isAutoCommit()) { try { try { if (blobVersion != null) { try { blobVersion.prepare(); } catch (IOException exc) { throw new BlobConflictException(exc); } } super.setAutoCommit(auto); if (blobVersion != null) { blobVersion.commit(); blobVersion = null; } } finally { if (blobVersion != null) { blobVersion.rollback(); blobVersion = null; } } } catch (IOException e) { throw new BlobStoreException(e); } } else { super.setAutoCommit(auto); } }
public synchronized BlobObject getBlobObject(final String uri) throws RepositoryException { if (blobs == null) throw new RepositoryException("No configured blob store"); try { if (blobVersion == null && isAutoCommit()) { return blobs.open(uri); } else if (blobVersion == null) { URI version = getVersionBundle(); if (version == null) { blobVersion = blobs.newVersion(); } else { blobVersion = blobs.newVersion(version.stringValue()); } return blobVersion.open(uri); } else { return blobVersion.open(uri); } } catch (IOException exc) { throw new RepositoryException(exc); } }
@Override public synchronized void rollback() throws RepositoryException { if (blobVersion != null) { try { blobVersion.rollback(); } catch (IOException e) { throw new RepositoryException(e.toString(), e); } } super.rollback(); cachedObjects.clear(); }