*/
public POIOLE2TextExtractor(POIDocument document) {
this.document = document;
+
+ // Ensure any underlying resources, such as open files,
+ // will get cleaned up if the user calls #close()
+ setFilesystem(document);
}
/**
package org.apache.poi.hpsf.extractor;
-import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
* textual form.
*/
public class HPSFPropertiesExtractor extends POIOLE2TextExtractor {
- private Closeable toClose;
-
public HPSFPropertiesExtractor(POIOLE2TextExtractor mainExtractor) {
super(mainExtractor);
}
}
public HPSFPropertiesExtractor(NPOIFSFileSystem fs) {
super(new HPSFPropertiesOnlyDocument(fs));
- this.toClose = fs;
}
public String getDocumentSummaryInformationText() {
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 {
public HelperPropertySet() {
super(null);
public EventBasedExcelExtractor(POIFSFileSystem fs) {
this(fs.getRoot());
+ super.setFilesystem(fs);
}
/**
// @Ignore("TODO Work out why the Fri 22nd vs Monday 25th problem is occurring and fix")
public void testReadMessageDateSucceedsWithOutlookTextExtractor() throws Exception {
OutlookTextExtactor ext = new OutlookTextExtactor(mapiMessageSucceeds);
+ ext.setFilesystem(null); // Don't close re-used test resources here
+
String text = ext.getText();
assertContains(text, "Date: Fri, 22 Jun 2012 18:32:54 +0000\n");
ext.close();
// @Ignore("TODO Work out why the Thu 21st vs Monday 25th problem is occurring and fix")
public void testReadMessageDateFailsWithOutlookTextExtractor() throws Exception {
OutlookTextExtactor ext = new OutlookTextExtactor(mapiMessageFails);
+ ext.setFilesystem(null); // Don't close re-used test resources here
+
String text = ext.getText();
assertContains(text, "Date: Thu, 21 Jun 2012 14:14:04 +0000\n");
ext.close();
import junit.framework.TestCase;
/**
- * Test different problems reported in Apache Bugzilla
- *
- * @author Nick Burch (nick at torchbox dot com)
- * @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
+ * Test different problems reported in the Apache Bugzilla
+ * against HWPF
*/
public class TestBugs extends TestCase
{
*/
public void test45473() throws IOException
{
+ // Fetch the current text
HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug45473.doc");
WordExtractor wordExtractor = new WordExtractor(doc1);
final String text1;
wordExtractor.close();
}
+ // Re-load, then re-save and re-check
+ doc1 = HWPFTestDataSamples.openSampleFile("Bug45473.doc");
HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack(doc1);
WordExtractor wordExtractor2 = new WordExtractor(doc2);
final String text2;
@SuppressWarnings("deprecation")
public void test47286() throws IOException
{
+ // Fetch the current text
HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug47286.doc");
WordExtractor wordExtractor = new WordExtractor(doc1);
final String text1;
wordExtractor.close();
}
+ // Re-load, then re-save and re-check
+ doc1 = HWPFTestDataSamples.openSampleFile("Bug47286.doc");
HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack(doc1);
WordExtractor wordExtractor2 = new WordExtractor(doc2);
final String text2;
final String fsText;
HPSFPropertiesExtractor fsExt = new HPSFPropertiesExtractor(fs);
+ fsExt.setFilesystem(null); // Don't close re-used test resources!
try {
fsText = fsExt.getText();
} finally {
final String hwText;
HPSFPropertiesExtractor hwExt = new HPSFPropertiesExtractor(wb);
+ hwExt.setFilesystem(null); // Don't close re-used test resources!
try {
hwText = hwExt.getText();
} finally {
final String eeText;
HPSFPropertiesExtractor eeExt = new HPSFPropertiesExtractor(excelExt);
+ eeExt.setFilesystem(null); // Don't close re-used test resources!
try {
eeText = eeExt.getText();
} finally {
assertTrue(fsText.indexOf("AUTHOR = marshall") > -1);
assertTrue(fsText.indexOf("TITLE = Titel: \u00c4h") > -1);
+
+ // Finally tidy
+ wb.close();
}
public void test42726() throws IOException {