@Override public synchronized void setReadOnly() { currentBucket.setReadOnly(); }
@Override public void setReadOnly() { bucket.setReadOnly(); }
@Override public void setReadOnly() { underlying.setReadOnly(); }
public static RandomAccessBucket makeImmutableBucket(BucketFactory bucketFactory, byte[] data, int offset, int length) throws IOException { RandomAccessBucket bucket = bucketFactory.makeBucket(length); OutputStream os = bucket.getOutputStreamUnbuffered(); try { os.write(data, offset, length); } finally { os.close(); } bucket.setReadOnly(); return bucket; }
@Override public LockableRandomAccessBuffer toRandomAccessBuffer() throws IOException { synchronized(this) { if(outputStreamOpen) throw new IOException("Must close first"); readOnly = true; } underlying.setReadOnly(); LockableRandomAccessBuffer u = underlying.toRandomAccessBuffer(); return new PaddedRandomAccessBuffer(u, size); }
@Override public LockableRandomAccessBuffer toRandomAccessBuffer() throws IOException { if(underlying.size() < type.headerLen) throw new IOException("Converting empty bucket"); underlying.setReadOnly(); LockableRandomAccessBuffer r = underlying.toRandomAccessBuffer(); try { return new EncryptedRandomAccessBuffer(type, r, masterKey, false); } catch (GeneralSecurityException e) { Logger.error(this, "Unable to convert encrypted bucket: "+e, e); throw new IOException(e); } }
public RandomAccessBucket toBucket(BucketFactory bf) throws MetadataUnresolvedException, IOException { RandomAccessBucket b = bf.makeBucket(-1); DataOutputStream dos = null; boolean success = false; try { dos = new DataOutputStream(b.getOutputStream()); writeTo(dos); dos.close(); dos = null; b.setReadOnly(); // Must be after dos.close() success = true; return b; } finally { Closer.close(dos); if(!success) b.free(); } }
tempFB.setReadOnly();