mirror of
https://github.com/google/nomulus.git
synced 2025-06-02 18:48:41 +02:00
Clean up Improved(Input|Output)Stream
Two main changes: - Replaced getClass().getSimpleName() in the logs with a constructor-given name. Right now what we have is a lot of identical classes with slightly different names so that the logs would be different. With this change - we can later get rid of a lot of these classes and replace them with simple wrappers. - Removed the "expected" feature. Only Tar uses it - and it can override onClose to do that (that's what it's there for!) ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=202129563
This commit is contained in:
parent
07aead3ca4
commit
3550045636
8 changed files with 34 additions and 37 deletions
|
@ -30,6 +30,8 @@ import org.joda.time.DateTime;
|
|||
@AutoFactory(allowSubclasses = true)
|
||||
public class RydeTarOutputStream extends ImprovedOutputStream {
|
||||
|
||||
private final long expectedSize;
|
||||
|
||||
/**
|
||||
* Creates a new instance that outputs a tar archive.
|
||||
*
|
||||
|
@ -42,8 +44,9 @@ public class RydeTarOutputStream extends ImprovedOutputStream {
|
|||
*/
|
||||
public RydeTarOutputStream(
|
||||
@WillNotClose OutputStream os, long size, DateTime modified, String filename) {
|
||||
super(os, false, size);
|
||||
super("RydeTarOutputStream", os, false);
|
||||
checkArgument(size >= 0);
|
||||
this.expectedSize = size;
|
||||
checkArgument(filename.endsWith(".xml"),
|
||||
"Ryde expects tar archive to contain a filename with an '.xml' extension.");
|
||||
try {
|
||||
|
@ -61,7 +64,13 @@ public class RydeTarOutputStream extends ImprovedOutputStream {
|
|||
/** Writes the end of archive marker. */
|
||||
@Override
|
||||
public void onClose() throws IOException {
|
||||
if (getBytesWritten() != expectedSize) {
|
||||
throw new IOException(
|
||||
String.format(
|
||||
"RydeTarOutputStream expected %,d bytes, but got %,d bytes",
|
||||
expectedSize, getBytesWritten()));
|
||||
}
|
||||
// Round up to a 512-byte boundary and another 1024-bytes to indicate end of archive.
|
||||
write(new byte[1024 + 512 - (int) (getBytesWritten() % 512L)]);
|
||||
out.write(new byte[1024 + 512 - (int) (getBytesWritten() % 512L)]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue