public void close() throws IOException {
if (myIsClosed) {
return;
}
myIsClosed = true;
try {
ByteArrayInputStream target = new ByteArrayInputStream(myTextBuffer.array(), 0, myTextBuffer.position());
myDeltaGenerator.sendDelta(null, mySourceStream, mySourceOffset, target, this, false);
FSRepresentation rep = new FSRepresentation();
rep.setOffset(myRepOffset);
long offset = myTargetFile.getPosition();
rep.setSize(offset - myDeltaStart);
rep.setExpandedSize(myRepSize);
rep.setTxnId(myRevNode.getId().getTxnID());
rep.setRevision(FSRepository.SVN_INVALID_REVNUM);
rep.setHexDigest(SVNFileUtil.toHexDigest(myDigest));
myTargetFile.write("ENDREP\n".getBytes("UTF-8"));
myRevNode.setTextRepresentation(rep);
myTxnRoot.getOwner().putTxnRevisionNode(myRevNode.getId(), myRevNode);
} catch (SVNException svne) {
throw new IOException(svne.getMessage());
} finally {
closeStreams();
}
}