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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to