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