Skip to content

Commit d13455b

Browse files
committed
refs #94 - changed from using finalize to the AutoClosable interface because it integrates with other JVM languages better
1 parent 1ada87b commit d13455b

File tree

4 files changed

+42
-42
lines changed

4 files changed

+42
-42
lines changed

src/integration/java/gov/loc/repository/bagit/ReaderWriterVerifierIntegrationTest.java

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,19 @@ public class ReaderWriterVerifierIntegrationTest {
2020

2121
@Test
2222
public void testReaderWriterVersion93() throws Exception{
23-
BagVerifier verifier = new BagVerifier();
24-
BagReader reader = new BagReader();
25-
Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_93/bag").toURI());
26-
Path outputDir = Paths.get(folder.newFolder().toURI());
27-
28-
Bag bag = reader.read(rootDir);
29-
verifier.isValid(bag, true);
30-
31-
BagWriter.write(bag, outputDir);
32-
testBagsEqual(rootDir, outputDir);
33-
34-
verifier.isValid(reader.read(outputDir), true);
23+
try(BagVerifier verifier = new BagVerifier()){
24+
BagReader reader = new BagReader();
25+
Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_93/bag").toURI());
26+
Path outputDir = Paths.get(folder.newFolder().toURI());
27+
28+
Bag bag = reader.read(rootDir);
29+
verifier.isValid(bag, true);
30+
31+
BagWriter.write(bag, outputDir);
32+
testBagsEqual(rootDir, outputDir);
33+
34+
verifier.isValid(reader.read(outputDir), true);
35+
}
3536
}
3637

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

4647
testBagsEqual(rootDir, outputDir);
47-
BagVerifier verifier = new BagVerifier();
48-
verifier.isValid(reader.read(outputDir), true);
48+
try(BagVerifier verifier = new BagVerifier()){
49+
verifier.isValid(reader.read(outputDir), true);
50+
}
4951
}
5052

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

6062
testBagsEqual(rootDir, outputDir);
61-
BagVerifier verifier = new BagVerifier();
62-
verifier.isValid(reader.read(outputDir), true);
63+
try(BagVerifier verifier = new BagVerifier()){
64+
verifier.isValid(reader.read(outputDir), true);
65+
}
6366
}
6467

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

7477
testBagsEqual(rootDir, outputDir);
75-
BagVerifier verifier = new BagVerifier();
76-
verifier.isValid(reader.read(outputDir), true);
78+
try(BagVerifier verifier = new BagVerifier()){
79+
verifier.isValid(reader.read(outputDir), true);
80+
}
7781
}
7882

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

8892
testBagsEqual(rootDir, outputDir);
89-
BagVerifier verifier = new BagVerifier();
90-
verifier.isValid(reader.read(outputDir), true);
93+
try(BagVerifier verifier = new BagVerifier()){
94+
verifier.isValid(reader.read(outputDir), true);
95+
}
9196
}
9297

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

102107
testBagsEqual(rootDir, outputDir);
103-
BagVerifier verifier = new BagVerifier();
104-
verifier.isValid(reader.read(outputDir), true);
108+
109+
try(BagVerifier verifier = new BagVerifier()){
110+
verifier.isValid(reader.read(outputDir), true);
111+
}
105112
}
106113

107114
private void testBagsEqual(Path originalBag, Path newBag) throws IOException{

src/main/java/gov/loc/repository/bagit/verify/BagVerifier.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
/**
3333
* Responsible for verifying if a bag is valid, complete
3434
*/
35-
public final class BagVerifier {
35+
public final class BagVerifier implements AutoCloseable{
3636
private static final Logger logger = LoggerFactory.getLogger(BagVerifier.class);
3737
private static final ResourceBundle messages = ResourceBundle.getBundle("MessageBundle");
3838

@@ -73,18 +73,15 @@ public BagVerifier(final ExecutorService executor){
7373
* @param executor the thread pool to use when doing work
7474
*/
7575
public BagVerifier(final ExecutorService executor, final BagitAlgorithmNameToSupportedAlgorithmMapping nameMapping){
76-
manifestVerifier = new PayloadVerifier(nameMapping);
76+
manifestVerifier = new PayloadVerifier(nameMapping, executor);
7777
this.executor = executor;
7878
}
7979

80-
//right before this object is garbage collected, shutdown the thread pool so the resource isn't leaked
8180
@Override
82-
protected void finalize() throws Throwable {
83-
try {
84-
executor.shutdown();
85-
} finally {
86-
super.finalize();
87-
}
81+
public void close() throws SecurityException{
82+
//shutdown the thread pool so the resource isn't leaked
83+
executor.shutdown();
84+
manifestVerifier.close();
8885
}
8986

9087
/**

src/main/java/gov/loc/repository/bagit/verify/PayloadVerifier.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
/**
3232
* Responsible for all things related to the manifest during verification.
3333
*/
34-
public class PayloadVerifier {
34+
public class PayloadVerifier implements AutoCloseable{
3535
private static final Logger logger = LoggerFactory.getLogger(PayloadVerifier.class);
3636
private static final ResourceBundle messages = ResourceBundle.getBundle("MessageBundle");
3737

@@ -76,14 +76,10 @@ public PayloadVerifier(final BagitAlgorithmNameToSupportedAlgorithmMapping nameM
7676
this.executor = executor;
7777
}
7878

79-
//right before this object is garbage collected, shutdown the thread pool so the resource isn't leaked
8079
@Override
81-
protected void finalize() throws Throwable {
82-
try {
83-
executor.shutdown();
84-
} finally {
85-
super.finalize();
86-
}
80+
public void close() throws SecurityException{
81+
//shutdown the thread pool so the resource isn't leaked
82+
executor.shutdown();
8783
}
8884

8985
/**

src/test/java/gov/loc/repository/bagit/verify/BagVerifierTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,9 @@ public void testAddSHA3SupportViaExtension() throws Exception{
119119
MySupportedNameToAlgorithmMapping mapping = new MySupportedNameToAlgorithmMapping();
120120
BagReader extendedReader = new BagReader(mapping);
121121
Bag bag = extendedReader.read(sha3BagDir);
122-
BagVerifier extendedSut = new BagVerifier(mapping);
123-
extendedSut.isValid(bag, true);
122+
try(BagVerifier extendedSut = new BagVerifier(mapping)){
123+
extendedSut.isValid(bag, true);
124+
}
124125
}
125126

126127
/*
@@ -153,5 +154,4 @@ public void testQuickVerify() throws Exception{
153154

154155
BagVerifier.quicklyVerify(bag);
155156
}
156-
157157
}

0 commit comments

Comments
 (0)