Skip to content

Commit

Permalink
refs #94 - changed from using finalize to the AutoClosable interface …
Browse files Browse the repository at this point in the history
…because it integrates with other JVM languages better
  • Loading branch information
johnscancella committed Jul 28, 2017
1 parent 1ada87b commit d13455b
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,19 @@ public class ReaderWriterVerifierIntegrationTest {

@Test
public void testReaderWriterVersion93() throws Exception{
BagVerifier verifier = new BagVerifier();
BagReader reader = new BagReader();
Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_93/bag").toURI());
Path outputDir = Paths.get(folder.newFolder().toURI());

Bag bag = reader.read(rootDir);
verifier.isValid(bag, true);

BagWriter.write(bag, outputDir);
testBagsEqual(rootDir, outputDir);

verifier.isValid(reader.read(outputDir), true);
try(BagVerifier verifier = new BagVerifier()){
BagReader reader = new BagReader();
Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_93/bag").toURI());
Path outputDir = Paths.get(folder.newFolder().toURI());

Bag bag = reader.read(rootDir);
verifier.isValid(bag, true);

BagWriter.write(bag, outputDir);
testBagsEqual(rootDir, outputDir);

verifier.isValid(reader.read(outputDir), true);
}
}

@Test
Expand All @@ -44,8 +45,9 @@ public void testReaderWriterVersion94() throws Exception{
BagWriter.write(bag, outputDir);

testBagsEqual(rootDir, outputDir);
BagVerifier verifier = new BagVerifier();
verifier.isValid(reader.read(outputDir), true);
try(BagVerifier verifier = new BagVerifier()){
verifier.isValid(reader.read(outputDir), true);
}
}

@Test
Expand All @@ -58,8 +60,9 @@ public void testReaderWriterVersion95() throws Exception{
BagWriter.write(bag, outputDir);

testBagsEqual(rootDir, outputDir);
BagVerifier verifier = new BagVerifier();
verifier.isValid(reader.read(outputDir), true);
try(BagVerifier verifier = new BagVerifier()){
verifier.isValid(reader.read(outputDir), true);
}
}

@Test
Expand All @@ -72,8 +75,9 @@ public void testReaderWriterVersion96() throws Exception{
BagWriter.write(bag, outputDir);

testBagsEqual(rootDir, outputDir);
BagVerifier verifier = new BagVerifier();
verifier.isValid(reader.read(outputDir), true);
try(BagVerifier verifier = new BagVerifier()){
verifier.isValid(reader.read(outputDir), true);
}
}

@Test
Expand All @@ -86,8 +90,9 @@ public void testReaderWriterVersion97() throws Exception{
BagWriter.write(bag, outputDir);

testBagsEqual(rootDir, outputDir);
BagVerifier verifier = new BagVerifier();
verifier.isValid(reader.read(outputDir), true);
try(BagVerifier verifier = new BagVerifier()){
verifier.isValid(reader.read(outputDir), true);
}
}

@Test
Expand All @@ -100,8 +105,10 @@ public void testReaderWriterVersion2_0() throws Exception{
BagWriter.write(bag, outputDir);

testBagsEqual(rootDir, outputDir);
BagVerifier verifier = new BagVerifier();
verifier.isValid(reader.read(outputDir), true);

try(BagVerifier verifier = new BagVerifier()){
verifier.isValid(reader.read(outputDir), true);
}
}

private void testBagsEqual(Path originalBag, Path newBag) throws IOException{
Expand Down
15 changes: 6 additions & 9 deletions src/main/java/gov/loc/repository/bagit/verify/BagVerifier.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
/**
* Responsible for verifying if a bag is valid, complete
*/
public final class BagVerifier {
public final class BagVerifier implements AutoCloseable{
private static final Logger logger = LoggerFactory.getLogger(BagVerifier.class);
private static final ResourceBundle messages = ResourceBundle.getBundle("MessageBundle");

Expand Down Expand Up @@ -73,18 +73,15 @@ public BagVerifier(final ExecutorService executor){
* @param executor the thread pool to use when doing work
*/
public BagVerifier(final ExecutorService executor, final BagitAlgorithmNameToSupportedAlgorithmMapping nameMapping){
manifestVerifier = new PayloadVerifier(nameMapping);
manifestVerifier = new PayloadVerifier(nameMapping, executor);
this.executor = executor;
}

//right before this object is garbage collected, shutdown the thread pool so the resource isn't leaked
@Override
protected void finalize() throws Throwable {
try {
executor.shutdown();
} finally {
super.finalize();
}
public void close() throws SecurityException{
//shutdown the thread pool so the resource isn't leaked
executor.shutdown();
manifestVerifier.close();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
/**
* Responsible for all things related to the manifest during verification.
*/
public class PayloadVerifier {
public class PayloadVerifier implements AutoCloseable{
private static final Logger logger = LoggerFactory.getLogger(PayloadVerifier.class);
private static final ResourceBundle messages = ResourceBundle.getBundle("MessageBundle");

Expand Down Expand Up @@ -76,14 +76,10 @@ public PayloadVerifier(final BagitAlgorithmNameToSupportedAlgorithmMapping nameM
this.executor = executor;
}

//right before this object is garbage collected, shutdown the thread pool so the resource isn't leaked
@Override
protected void finalize() throws Throwable {
try {
executor.shutdown();
} finally {
super.finalize();
}
public void close() throws SecurityException{
//shutdown the thread pool so the resource isn't leaked
executor.shutdown();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,9 @@ public void testAddSHA3SupportViaExtension() throws Exception{
MySupportedNameToAlgorithmMapping mapping = new MySupportedNameToAlgorithmMapping();
BagReader extendedReader = new BagReader(mapping);
Bag bag = extendedReader.read(sha3BagDir);
BagVerifier extendedSut = new BagVerifier(mapping);
extendedSut.isValid(bag, true);
try(BagVerifier extendedSut = new BagVerifier(mapping)){
extendedSut.isValid(bag, true);
}
}

/*
Expand Down Expand Up @@ -153,5 +154,4 @@ public void testQuickVerify() throws Exception{

BagVerifier.quicklyVerify(bag);
}

}

0 comments on commit d13455b

Please sign in to comment.