assertTrue(fCheckpointCollection.isCreatedFromScratch());
}
+ /**
+ * Test version change
+ *
+ * @throws IOException
+ * can throw this
+ */
+ @Test
+ public void testDeleteWhenInvalidBug479675() throws IOException {
+ insertAlot();
+ try (RandomAccessFile f = new RandomAccessFile(fFile, "rw");) {
+ f.writeInt(-1);
+ }
+
+ fCheckpointCollection = createCollection();
+ if (isPersistableCollection()) {
+ ICheckpointCollection old = fCheckpointCollection;
+ try {
+ fCheckpointCollection = createCollection();
+ assertEquals(0, fCheckpointCollection.size());
+ } finally {
+ old.dispose();
+ }
+ }
+ assertTrue(fCheckpointCollection.isCreatedFromScratch());
+ }
+
/**
* Test a single insertion
*/
if (!isCreatedFromScratch()) {
header = tryRestore();
if (header == null) {
- fFile.delete();
- dispose();
+ delete();
}
}
*/
@Override
public void delete() {
- dispose();
+ dispose(true);
if (fFile.exists()) {
fFile.delete();
}
*/
@Override
public void dispose() {
+ dispose(false);
+ }
+
+ private void dispose(boolean deleting) {
try {
if (fRandomAccessFile != null) {
- if (fHeader != null) {
- fHeader.serialize(fRandomAccessFile);
- }
+ if (!deleting) {
+ if (fHeader != null) {
+ fHeader.serialize(fRandomAccessFile);
+ }
- fRandomAccessFile.seek(0);
- fRandomAccessFile.writeInt(getVersion());
+ fRandomAccessFile.seek(0);
+ fRandomAccessFile.writeInt(getVersion());
+ }
fRandomAccessFile.close();
}