@Override public String serialize(Blob blob) { if (blob instanceof BlobStoreBlob) { BlobStoreBlob bsb = (BlobStoreBlob) blob; BlobStore bsbBlobStore = bsb.getBlobStore(); //see if the blob has been created from another store if (bsbBlobStore != null && bsbBlobStore.equals(blobStore)) { return bsb.getBlobId(); } } String id; String reference = blob.getReference(); if(reference != null){ id = blobStore.getBlobId(reference); if(id != null){ return id; } } try { id = createBlob(blob.getNewStream()).getBlobId(); } catch (IOException e) { throw new IllegalStateException(e); } return id; } };
@Override public String serialize(Blob blob) { if (blob instanceof BlobStoreBlob) { BlobStoreBlob bsb = (BlobStoreBlob) blob; BlobStore bsbBlobStore = bsb.getBlobStore(); //see if the blob has been created from another store if (bsbBlobStore != null && bsbBlobStore.equals(blobStore)) { return bsb.getBlobId(); } } String id; String reference = blob.getReference(); if(reference != null){ id = blobStore.getBlobId(reference); if(id != null){ return id; } } try { id = createBlob(blob.getNewStream()).getBlobId(); } catch (IOException e) { throw new IllegalStateException(e); } return id; } };
@Override public void collectReferences(ReferenceCollector collector) { int referencesFound = 0; Iterator<ReferencedBlob> blobIterator = null; try { blobIterator = nodeStore.getReferencedBlobsIterator(); while (blobIterator.hasNext()) { ReferencedBlob refBlob = blobIterator.next(); Blob blob = refBlob.getBlob(); referencesFound++; // TODO this mode would also add in memory blobId // Would that be an issue if (blob instanceof BlobStoreBlob) { collector.addReference(((BlobStoreBlob) blob).getBlobId(), refBlob.getId()); } else { // TODO Should not rely on toString. Instead obtain // secure reference and convert that to blobId using // blobStore collector.addReference(blob.toString(), refBlob.getId()); } } } finally { Utils.closeIfCloseable(blobIterator); } log.debug("Total blob references found (including chunk resolution) [{}]", referencesFound); } }
@Override public void collectReferences(ReferenceCollector collector) { int referencesFound = 0; Iterator<ReferencedBlob> blobIterator = null; try { blobIterator = nodeStore.getReferencedBlobsIterator(); while (blobIterator.hasNext()) { ReferencedBlob refBlob = blobIterator.next(); Blob blob = refBlob.getBlob(); referencesFound++; // TODO this mode would also add in memory blobId // Would that be an issue if (blob instanceof BlobStoreBlob) { collector.addReference(((BlobStoreBlob) blob).getBlobId(), refBlob.getId()); } else { // TODO Should not rely on toString. Instead obtain // secure reference and convert that to blobId using // blobStore collector.addReference(blob.toString(), refBlob.getId()); } } } finally { Utils.closeIfCloseable(blobIterator); } log.debug("Total blob references found (including chunk resolution) [{}]", referencesFound); } }