poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r633118 - in /poi/trunk/src: documentation/content/xdocs/ java/org/apache/poi/ java/org/apache/poi/hssf/usermodel/ testcases/org/apache/poi/ testcases/org/apache/poi/hssf/usermodel/
Date Mon, 03 Mar 2008 15:10:47 GMT
Author: nick
Date: Mon Mar  3 07:10:46 2008
New Revision: 633118

URL: http://svn.apache.org/viewvc?rev=633118&view=rev
Log:
Fix from Yegor from bug #44491 - don't have the new style handy POIDocument property stuff
break old style hpsf+hssf use

Added:
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java   (with
props)
Modified:
    poi/trunk/src/documentation/content/xdocs/changes.xml
    poi/trunk/src/documentation/content/xdocs/status.xml
    poi/trunk/src/java/org/apache/poi/POIDocument.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
    poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java

Modified: poi/trunk/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/changes.xml?rev=633118&r1=633117&r2=633118&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/changes.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/changes.xml Mon Mar  3 07:10:46 2008
@@ -36,6 +36,7 @@
 
 		<!-- Don't forget to update status.xml too! -->
         <release version="3.1-beta1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">44491 - Don't have the new-style
"HPSF properties are always available" affect the old-style use of HPSF alongside HSSF</action>
            <action dev="POI-DEVELOPERS" type="fix">44471 - Crystal Reports generates
files with short StyleRecords, which isn't allowed in the spec. Work around this</action>
            <action dev="POI-DEVELOPERS" type="add">44450 - Support for Lookup, HLookup
and VLookup functions</action>
            <action dev="POI-DEVELOPERS" type="fix">44449 - Avoid getting confused when
two sheets have shared formulas for the same areas, and when the shared formula is set incorrectly</action>

Modified: poi/trunk/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/status.xml?rev=633118&r1=633117&r2=633118&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Mon Mar  3 07:10:46 2008
@@ -33,6 +33,7 @@
 	<!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.1-beta1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">44491 - Don't have the new-style
"HPSF properties are always available" affect the old-style use of HPSF alongside HSSF</action>
            <action dev="POI-DEVELOPERS" type="fix">44471 - Crystal Reports generates
files with short StyleRecords, which isn't allowed in the spec. Work around this</action>
            <action dev="POI-DEVELOPERS" type="add">44450 - Support for Lookup, HLookup
and VLookup functions</action>
            <action dev="POI-DEVELOPERS" type="fix">44449 - Avoid getting confused when
two sheets have shared formulas for the same areas, and when the shared formula is set incorrectly</action>

Modified: poi/trunk/src/java/org/apache/poi/POIDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/POIDocument.java?rev=633118&r1=633117&r2=633118&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/POIDocument.java (original)
+++ poi/trunk/src/java/org/apache/poi/POIDocument.java Mon Mar  3 07:10:46 2008
@@ -54,16 +54,24 @@
 	/** For our own logging use */
 	protected POILogger logger = POILogFactory.getLogger(this.getClass());
 
-	
-	/** 
+    /* Have the property streams been read yet? (Only done on-demand) */
+    protected boolean initialized = false;
+
+	/**
 	 * Fetch the Document Summary Information of the document
 	 */
-	public DocumentSummaryInformation getDocumentSummaryInformation() { return dsInf; }
+	public DocumentSummaryInformation getDocumentSummaryInformation() {
+        if(!initialized) readProperties();
+        return dsInf;
+    }
 
 	/** 
 	 * Fetch the Summary Information of the document
 	 */
-	public SummaryInformation getSummaryInformation() { return sInf; }
+	public SummaryInformation getSummaryInformation() {
+        if(!initialized) readProperties();
+        return sInf;
+    }
 
 	/**
 	 * Find, and create objects for, the standard
@@ -89,6 +97,9 @@
 		} else if(ps != null) {
 			logger.log(POILogger.WARN, "SummaryInformation property set came back with wrong class
- ", ps.getClass());
 		}
+
+		// Mark the fact that we've now loaded up the properties
+        initialized = true;
 	}
 
 	/** 
@@ -133,7 +144,7 @@
 	 * @param writtenEntries a list of POIFS entries to add the property names too
 	 */
 	protected void writeProperties(POIFSFileSystem outFS, List writtenEntries) throws IOException
{
-		if(sInf != null) {
+        if(sInf != null) {
 			writePropertySet(SummaryInformation.DEFAULT_STREAM_NAME,sInf,outFS);
 			if(writtenEntries != null) {
 				writtenEntries.add(SummaryInformation.DEFAULT_STREAM_NAME);

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=633118&r1=633117&r2=633118&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java Mon Mar  3 07:10:46
2008
@@ -165,10 +165,7 @@
             throws IOException
     {
         this.preserveNodes = preserveNodes;
-
-        // Read in the HPSF properties
         this.filesystem = fs;
-        readProperties();
         
         // If we're not preserving nodes, don't track the
         //  POIFS any more

Modified: poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java?rev=633118&r1=633117&r2=633118&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java Mon Mar  3 07:10:46 2008
@@ -85,7 +85,8 @@
     public void testWriteProperties() throws Exception {
     	// Just check we can write them back out into a filesystem
     	POIFSFileSystem outFS = new POIFSFileSystem();
-    	doc.writeProperties(outFS);
+    	doc.readProperties();
+        doc.writeProperties(outFS);
     	
     	// Should now hold them
     	assertNotNull(
@@ -101,7 +102,8 @@
 		
     	// Write them out
     	POIFSFileSystem outFS = new POIFSFileSystem();
-    	doc.writeProperties(outFS);
+    	doc.readProperties();
+        doc.writeProperties(outFS);
     	outFS.writeFilesystem(baos);
     	
     	// Create a new version

Added: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java?rev=633118&view=auto
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java (added)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java Mon Mar
 3 07:10:46 2008
@@ -0,0 +1,98 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.hssf.usermodel;
+
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.hpsf.SummaryInformation;
+import org.apache.poi.hpsf.PropertySetFactory;
+
+import java.io.FileInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+
+import junit.framework.TestCase;
+
+/**
+ * Old-style setting of POIFS properties doesn't work with POI 3.0.2
+ *
+ * @author Yegor Kozlov
+ */
+public class TestPOIFSProperties extends TestCase{
+    protected String cwd = System.getProperty("HSSF.testdata.path");
+
+    protected String title = "Testing POIFS properties";
+
+    public void testFail() throws Exception {
+        FileInputStream is = new FileInputStream(new File(cwd, "Simple.xls"));
+        POIFSFileSystem fs = new POIFSFileSystem(is);
+        is.close();
+
+        HSSFWorkbook wb = new HSSFWorkbook(fs);
+
+        //set POIFS properties after constructing HSSFWorkbook
+        //(a piece of code that used to work up to POI 3.0.2)
+        SummaryInformation summary1 = (SummaryInformation)PropertySetFactory.create(fs.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME));
+        summary1.setTitle(title);
+        //write the modified property back to POIFS
+        fs.getRoot().getEntry(SummaryInformation.DEFAULT_STREAM_NAME).delete();
+        fs.createDocument(summary1.toInputStream(), SummaryInformation.DEFAULT_STREAM_NAME);
+
+        //save the workbook and read the property
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        wb.write(out);
+        out.close();
+
+        POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray()));
+        SummaryInformation summary2 = (SummaryInformation)PropertySetFactory.create(fs2.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME));
+
+        try {
+            //failing assertion
+            assertEquals(title, summary2.getTitle());
+
+        } catch (AssertionError e){
+            assertTrue(true);
+        }
+    }
+
+    public void testOK() throws Exception {
+        FileInputStream is = new FileInputStream(new File(cwd, "Simple.xls"));
+        POIFSFileSystem fs = new POIFSFileSystem(is);
+        is.close();
+
+        //set POIFS properties before constructing HSSFWorkbook
+        SummaryInformation summary1 = (SummaryInformation)PropertySetFactory.create(fs.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME));
+        summary1.setTitle(title);
+
+        fs.getRoot().getEntry(SummaryInformation.DEFAULT_STREAM_NAME).delete();
+        fs.createDocument(summary1.toInputStream(), SummaryInformation.DEFAULT_STREAM_NAME);
+
+        HSSFWorkbook wb = new HSSFWorkbook(fs);
+
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        wb.write(out);
+        out.close();
+
+        //read the property
+        POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray()));
+        SummaryInformation summary2 = (SummaryInformation)PropertySetFactory.create(fs2.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME));
+        assertEquals(title, summary2.getTitle());
+
+    }
+}

Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message