#59724 Take advantage of all POIDocument classes being Closeable to tidy the OLE2 text extractor closing
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1749214 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b7b990f56f
commit
7da9b2cd67
@ -44,6 +44,10 @@ public abstract class POIOLE2TextExtractor extends POITextExtractor {
|
|||||||
*/
|
*/
|
||||||
public POIOLE2TextExtractor(POIDocument document) {
|
public POIOLE2TextExtractor(POIDocument document) {
|
||||||
this.document = document;
|
this.document = document;
|
||||||
|
|
||||||
|
// Ensure any underlying resources, such as open files,
|
||||||
|
// will get cleaned up if the user calls #close()
|
||||||
|
setFilesystem(document);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
package org.apache.poi.hpsf.extractor;
|
package org.apache.poi.hpsf.extractor;
|
||||||
|
|
||||||
import java.io.Closeable;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -41,8 +40,6 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
|||||||
* textual form.
|
* textual form.
|
||||||
*/
|
*/
|
||||||
public class HPSFPropertiesExtractor extends POIOLE2TextExtractor {
|
public class HPSFPropertiesExtractor extends POIOLE2TextExtractor {
|
||||||
private Closeable toClose;
|
|
||||||
|
|
||||||
public HPSFPropertiesExtractor(POIOLE2TextExtractor mainExtractor) {
|
public HPSFPropertiesExtractor(POIOLE2TextExtractor mainExtractor) {
|
||||||
super(mainExtractor);
|
super(mainExtractor);
|
||||||
}
|
}
|
||||||
@ -54,7 +51,6 @@ public class HPSFPropertiesExtractor extends POIOLE2TextExtractor {
|
|||||||
}
|
}
|
||||||
public HPSFPropertiesExtractor(NPOIFSFileSystem fs) {
|
public HPSFPropertiesExtractor(NPOIFSFileSystem fs) {
|
||||||
super(new HPSFPropertiesOnlyDocument(fs));
|
super(new HPSFPropertiesOnlyDocument(fs));
|
||||||
this.toClose = fs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDocumentSummaryInformationText() {
|
public String getDocumentSummaryInformationText() {
|
||||||
@ -132,19 +128,6 @@ public class HPSFPropertiesExtractor extends POIOLE2TextExtractor {
|
|||||||
throw new IllegalStateException("You already have the Metadata Text Extractor, not recursing!");
|
throw new IllegalStateException("You already have the Metadata Text Extractor, not recursing!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void close() throws IOException {
|
|
||||||
super.close();
|
|
||||||
|
|
||||||
if(toClose != null) {
|
|
||||||
toClose.close();
|
|
||||||
toClose = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static abstract class HelperPropertySet extends SpecialPropertySet {
|
private static abstract class HelperPropertySet extends SpecialPropertySet {
|
||||||
public HelperPropertySet() {
|
public HelperPropertySet() {
|
||||||
super(null);
|
super(null);
|
||||||
|
@ -73,6 +73,7 @@ public class EventBasedExcelExtractor extends POIOLE2TextExtractor implements or
|
|||||||
|
|
||||||
public EventBasedExcelExtractor(POIFSFileSystem fs) {
|
public EventBasedExcelExtractor(POIFSFileSystem fs) {
|
||||||
this(fs.getRoot());
|
this(fs.getRoot());
|
||||||
|
super.setFilesystem(fs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -144,6 +144,8 @@ public final class TestFixedSizedProperties {
|
|||||||
// @Ignore("TODO Work out why the Fri 22nd vs Monday 25th problem is occurring and fix")
|
// @Ignore("TODO Work out why the Fri 22nd vs Monday 25th problem is occurring and fix")
|
||||||
public void testReadMessageDateSucceedsWithOutlookTextExtractor() throws Exception {
|
public void testReadMessageDateSucceedsWithOutlookTextExtractor() throws Exception {
|
||||||
OutlookTextExtactor ext = new OutlookTextExtactor(mapiMessageSucceeds);
|
OutlookTextExtactor ext = new OutlookTextExtactor(mapiMessageSucceeds);
|
||||||
|
ext.setFilesystem(null); // Don't close re-used test resources here
|
||||||
|
|
||||||
String text = ext.getText();
|
String text = ext.getText();
|
||||||
assertContains(text, "Date: Fri, 22 Jun 2012 18:32:54 +0000\n");
|
assertContains(text, "Date: Fri, 22 Jun 2012 18:32:54 +0000\n");
|
||||||
ext.close();
|
ext.close();
|
||||||
@ -156,6 +158,8 @@ public final class TestFixedSizedProperties {
|
|||||||
// @Ignore("TODO Work out why the Thu 21st vs Monday 25th problem is occurring and fix")
|
// @Ignore("TODO Work out why the Thu 21st vs Monday 25th problem is occurring and fix")
|
||||||
public void testReadMessageDateFailsWithOutlookTextExtractor() throws Exception {
|
public void testReadMessageDateFailsWithOutlookTextExtractor() throws Exception {
|
||||||
OutlookTextExtactor ext = new OutlookTextExtactor(mapiMessageFails);
|
OutlookTextExtactor ext = new OutlookTextExtactor(mapiMessageFails);
|
||||||
|
ext.setFilesystem(null); // Don't close re-used test resources here
|
||||||
|
|
||||||
String text = ext.getText();
|
String text = ext.getText();
|
||||||
assertContains(text, "Date: Thu, 21 Jun 2012 14:14:04 +0000\n");
|
assertContains(text, "Date: Thu, 21 Jun 2012 14:14:04 +0000\n");
|
||||||
ext.close();
|
ext.close();
|
||||||
|
@ -49,10 +49,8 @@ import org.apache.poi.util.POILogger;
|
|||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test different problems reported in Apache Bugzilla
|
* Test different problems reported in the Apache Bugzilla
|
||||||
*
|
* against HWPF
|
||||||
* @author Nick Burch (nick at torchbox dot com)
|
|
||||||
* @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
|
|
||||||
*/
|
*/
|
||||||
public class TestBugs extends TestCase
|
public class TestBugs extends TestCase
|
||||||
{
|
{
|
||||||
@ -245,6 +243,7 @@ public class TestBugs extends TestCase
|
|||||||
*/
|
*/
|
||||||
public void test45473() throws IOException
|
public void test45473() throws IOException
|
||||||
{
|
{
|
||||||
|
// Fetch the current text
|
||||||
HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug45473.doc");
|
HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug45473.doc");
|
||||||
WordExtractor wordExtractor = new WordExtractor(doc1);
|
WordExtractor wordExtractor = new WordExtractor(doc1);
|
||||||
final String text1;
|
final String text1;
|
||||||
@ -254,6 +253,8 @@ public class TestBugs extends TestCase
|
|||||||
wordExtractor.close();
|
wordExtractor.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-load, then re-save and re-check
|
||||||
|
doc1 = HWPFTestDataSamples.openSampleFile("Bug45473.doc");
|
||||||
HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack(doc1);
|
HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack(doc1);
|
||||||
WordExtractor wordExtractor2 = new WordExtractor(doc2);
|
WordExtractor wordExtractor2 = new WordExtractor(doc2);
|
||||||
final String text2;
|
final String text2;
|
||||||
@ -313,6 +314,7 @@ public class TestBugs extends TestCase
|
|||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public void test47286() throws IOException
|
public void test47286() throws IOException
|
||||||
{
|
{
|
||||||
|
// Fetch the current text
|
||||||
HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug47286.doc");
|
HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug47286.doc");
|
||||||
WordExtractor wordExtractor = new WordExtractor(doc1);
|
WordExtractor wordExtractor = new WordExtractor(doc1);
|
||||||
final String text1;
|
final String text1;
|
||||||
@ -322,6 +324,8 @@ public class TestBugs extends TestCase
|
|||||||
wordExtractor.close();
|
wordExtractor.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-load, then re-save and re-check
|
||||||
|
doc1 = HWPFTestDataSamples.openSampleFile("Bug47286.doc");
|
||||||
HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack(doc1);
|
HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack(doc1);
|
||||||
WordExtractor wordExtractor2 = new WordExtractor(doc2);
|
WordExtractor wordExtractor2 = new WordExtractor(doc2);
|
||||||
final String text2;
|
final String text2;
|
||||||
|
@ -115,6 +115,7 @@ public final class TestHPSFPropertiesExtractor extends TestCase {
|
|||||||
|
|
||||||
final String fsText;
|
final String fsText;
|
||||||
HPSFPropertiesExtractor fsExt = new HPSFPropertiesExtractor(fs);
|
HPSFPropertiesExtractor fsExt = new HPSFPropertiesExtractor(fs);
|
||||||
|
fsExt.setFilesystem(null); // Don't close re-used test resources!
|
||||||
try {
|
try {
|
||||||
fsText = fsExt.getText();
|
fsText = fsExt.getText();
|
||||||
} finally {
|
} finally {
|
||||||
@ -123,6 +124,7 @@ public final class TestHPSFPropertiesExtractor extends TestCase {
|
|||||||
|
|
||||||
final String hwText;
|
final String hwText;
|
||||||
HPSFPropertiesExtractor hwExt = new HPSFPropertiesExtractor(wb);
|
HPSFPropertiesExtractor hwExt = new HPSFPropertiesExtractor(wb);
|
||||||
|
hwExt.setFilesystem(null); // Don't close re-used test resources!
|
||||||
try {
|
try {
|
||||||
hwText = hwExt.getText();
|
hwText = hwExt.getText();
|
||||||
} finally {
|
} finally {
|
||||||
@ -131,6 +133,7 @@ public final class TestHPSFPropertiesExtractor extends TestCase {
|
|||||||
|
|
||||||
final String eeText;
|
final String eeText;
|
||||||
HPSFPropertiesExtractor eeExt = new HPSFPropertiesExtractor(excelExt);
|
HPSFPropertiesExtractor eeExt = new HPSFPropertiesExtractor(excelExt);
|
||||||
|
eeExt.setFilesystem(null); // Don't close re-used test resources!
|
||||||
try {
|
try {
|
||||||
eeText = eeExt.getText();
|
eeText = eeExt.getText();
|
||||||
} finally {
|
} finally {
|
||||||
@ -142,6 +145,9 @@ public final class TestHPSFPropertiesExtractor extends TestCase {
|
|||||||
|
|
||||||
assertTrue(fsText.indexOf("AUTHOR = marshall") > -1);
|
assertTrue(fsText.indexOf("AUTHOR = marshall") > -1);
|
||||||
assertTrue(fsText.indexOf("TITLE = Titel: \u00c4h") > -1);
|
assertTrue(fsText.indexOf("TITLE = Titel: \u00c4h") > -1);
|
||||||
|
|
||||||
|
// Finally tidy
|
||||||
|
wb.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void test42726() throws IOException {
|
public void test42726() throws IOException {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user