diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 4b1b5566d..04202047d 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,6 +37,7 @@ + 46043 - correctly write out HPSF properties with HWPF 45973 - added CreationHelper.createFormulaEvaluator(), implemeted both for HSSF and XSSF 46182 - fixed Slideshow.readPictures() to skip pictures with invalid headers 46137 - Handle odd files with a ContinueRecord after EOFRecord diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 00321db74..429496784 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,9 +34,10 @@ + 46043 - correctly write out HPSF properties with HWPF 45973 - added CreationHelper.createFormulaEvaluator(), implemeted both for HSSF and XSSF 46182 - fixed Slideshow.readPictures() to skip pictures with invalid headers - 46137 - Handle odd files with a ContinueRecord after EOFRecord + 46137 - Handle odd files with a ContinueRecord after EOFRecord Fixed problem with linking shared formulas when ranges overlap 45784 - More fixes to SeriesTextRecord 46033 - fixed TableCell to correctly set text type diff --git a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java index f1898c082..9bc8354a7 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java @@ -552,7 +552,8 @@ public class HWPFDocument extends POIDocument pfs.createDocument(new ByteArrayInputStream(mainBuf), "WordDocument"); pfs.createDocument(new ByteArrayInputStream(tableBuf), "1Table"); pfs.createDocument(new ByteArrayInputStream(dataBuf), "Data"); - + writeProperties(pfs); + pfs.writeFilesystem(out); } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestCase.java b/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestCase.java index b831851a1..dcfa99aec 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestCase.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestCase.java @@ -18,6 +18,10 @@ package org.apache.poi.hwpf; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + import junit.framework.TestCase; @@ -30,9 +34,7 @@ public abstract class HWPFTestCase { } - protected void setUp() - throws Exception - { + protected void setUp() throws Exception { super.setUp(); /**@todo verify the constructors*/ _hWPFDocFixture = new HWPFDocFixture(this); @@ -40,13 +42,20 @@ public abstract class HWPFTestCase _hWPFDocFixture.setUp(); } - protected void tearDown() - throws Exception - { - _hWPFDocFixture.tearDown(); + protected void tearDown() throws Exception { + if(_hWPFDocFixture != null) { + _hWPFDocFixture.tearDown(); + } - _hWPFDocFixture = null; - super.tearDown(); + _hWPFDocFixture = null; + super.tearDown(); } + public HWPFDocument writeOutAndRead(HWPFDocument doc) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + doc.write(baos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + HWPFDocument newDoc = new HWPFDocument(bais); + return newDoc; + } } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java index 542e2d792..2cc47474f 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java @@ -19,10 +19,9 @@ package org.apache.poi.hwpf.usermodel; import java.io.File; import java.io.FileInputStream; -import junit.framework.TestCase; - import org.apache.poi.EncryptedDocumentException; import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.HWPFTestCase; import org.apache.poi.hwpf.model.StyleSheet; /** @@ -30,13 +29,10 @@ import org.apache.poi.hwpf.model.StyleSheet; * * @author Nick Burch (nick at torchbox dot com) */ -public class TestProblems extends TestCase { +public class TestProblems extends HWPFTestCase { private String dirname = System.getProperty("HWPF.testdata.path"); - protected void setUp() throws Exception { - } - /** * ListEntry passed no ListTable */ @@ -165,4 +161,14 @@ public class TestProblems extends TestCase { // Good } } + + public void testWriteProperties() throws Exception { + HWPFDocument doc = new HWPFDocument(new FileInputStream( + new File(dirname, "SampleDoc.doc"))); + assertEquals("Nick Burch", doc.getSummaryInformation().getAuthor()); + + // Write and read + HWPFDocument doc2 = writeOutAndRead(doc); + assertEquals("Nick Burch", doc.getSummaryInformation().getAuthor()); + } }