You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2013/06/26 02:18:41 UTC
svn commit: r1496683 - in /poi/trunk/src:
java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java
testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java
Author: nick
Date: Wed Jun 26 00:18:41 2013
New Revision: 1496683
URL: http://svn.apache.org/r1496683
Log:
Add a write method to HPSFPropertiesOnlyDocument, and use this to finish the unit tests for bug #54233
Modified:
poi/trunk/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java
poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java
Modified: poi/trunk/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java?rev=1496683&r1=1496682&r2=1496683&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java (original)
+++ poi/trunk/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java Wed Jun 26 00:18:41 2013
@@ -1,8 +1,12 @@
package org.apache.poi.hpsf;
+import java.io.IOException;
import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.poi.POIDocument;
+import org.apache.poi.poifs.filesystem.EntryUtils;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
@@ -20,7 +24,22 @@ public class HPSFPropertiesOnlyDocument
super(fs);
}
- public void write(OutputStream out) {
- throw new IllegalStateException("Unable to write, only for properties!");
+ /**
+ * Write out, with any properties changes, but nothing else
+ */
+ public void write(OutputStream out) throws IOException {
+ POIFSFileSystem fs = new POIFSFileSystem();
+
+ // For tracking what we've written out, so far
+ List<String> excepts = new ArrayList<String>(1);
+
+ // Write out our HPFS properties, with any changes
+ writeProperties(fs, excepts);
+
+ // Copy over everything else unchanged
+ EntryUtils.copyNodes(directory, fs.getRoot(), excepts);
+
+ // Save the resultant POIFSFileSystem to the output stream
+ fs.writeFilesystem(out);
}
}
\ No newline at end of file
Modified: poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java?rev=1496683&r1=1496682&r2=1496683&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java Wed Jun 26 00:18:41 2013
@@ -24,7 +24,9 @@ import java.util.Date;
import junit.framework.TestCase;
import org.apache.poi.POIDataSamples;
+import org.apache.poi.POIDocument;
import org.apache.poi.hpsf.DocumentSummaryInformation;
+import org.apache.poi.hpsf.HPSFPropertiesOnlyDocument;
import org.apache.poi.hpsf.PropertySetFactory;
import org.apache.poi.hpsf.SummaryInformation;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -124,6 +126,16 @@ public final class TestHPSFBugs extends
// Write out and read back, should still be valid
- // TODO
+ POIDocument doc = new HPSFPropertiesOnlyDocument(fs);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ doc.write(baos);
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ doc = new HPSFPropertiesOnlyDocument(new POIFSFileSystem(bais));
+
+ // Check properties are still there
+ assertEquals("Microsoft Word 10.0", si.getApplicationName());
+ assertEquals("", si.getTitle());
+ assertEquals("", si.getAuthor());
+ assertEquals("Cour de Justice", dsi.getCompany());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org