aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2009-07-12 08:21:09 +0000
committerYegor Kozlov <yegor@apache.org>2009-07-12 08:21:09 +0000
commit27832ad35675cab8492cb702b952e2636560ea31 (patch)
tree1e3b2fb7cf0c06f353d71db6700b581185ce1e62
parent35c4438666b32e4a6579c2e525df66e24818fb81 (diff)
downloadpoi-27832ad35675cab8492cb702b952e2636560ea31.tar.gz
poi-27832ad35675cab8492cb702b952e2636560ea31.zip
Fixed NPE when retrieving core properties from a newly created workbook, see Bugzilla 47460
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@793291 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/documentation/content/xdocs/status.xml1
-rw-r--r--src/ooxml/java/org/apache/poi/POIXMLProperties.java9
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java25
3 files changed, 27 insertions, 8 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index 9955b603cc..79993d965f 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -33,6 +33,7 @@
<changes>
<release version="3.5-beta7" date="2009-??-??">
+ <action dev="POI-DEVELOPERS" type="fix">47460 - Fixed NPE when retrieving core properties from a newly created workbook</action>
<action dev="POI-DEVELOPERS" type="fix">47498 - Fixed HyperlinkRecord to properly handle URL monikers</action>
<action dev="POI-DEVELOPERS" type="fix">47504 - Fixed XSSFWorkbook to read files with hyperlinks to document locations</action>
<action dev="POI-DEVELOPERS" type="fix">47479 - Fix BoolErrRecord to tolerate incorrect format written by OOO</action>
diff --git a/src/ooxml/java/org/apache/poi/POIXMLProperties.java b/src/ooxml/java/org/apache/poi/POIXMLProperties.java
index dcb6a9ce3f..9729309bcd 100644
--- a/src/ooxml/java/org/apache/poi/POIXMLProperties.java
+++ b/src/ooxml/java/org/apache/poi/POIXMLProperties.java
@@ -38,14 +38,7 @@ public class POIXMLProperties {
this.pkg = docPackage;
// Core properties
- PackageRelationshipCollection coreRel =
- pkg.getRelationshipsByType(POIXMLDocument.CORE_PROPERTIES_REL_TYPE);
- if(coreRel.size() == 1) {
- core = new CoreProperties( (PackagePropertiesPart)
- pkg.getPart(coreRel.getRelationship(0)) );
- } else {
- throw new IllegalArgumentException("A document must always have core properties defined!");
- }
+ core = new CoreProperties((PackagePropertiesPart)pkg.getPackageProperties() );
// Extended properties
PackageRelationshipCollection extRel =
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
index 6ab1edbf75..6c48e2fb16 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
@@ -33,7 +33,9 @@ import org.apache.poi.openxml4j.opc.ContentTypes;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
import org.apache.poi.util.TempFile;
+import org.apache.poi.POIXMLProperties;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr;
@@ -250,4 +252,27 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
sheetId = (int)wb.createSheet().sheet.getSheetId();
assertEquals(lastSheetId+1, sheetId);
}
+
+ /**
+ * Test setting of core properties such as Title and Author
+ */
+ public void testWorkbookProperties() throws Exception {
+ XSSFWorkbook workbook = new XSSFWorkbook();
+ POIXMLProperties props = workbook.getProperties();
+ assertNotNull(props);
+
+ PackagePropertiesPart opcProps = props.getCoreProperties().getUnderlyingProperties();
+ assertNotNull(opcProps);
+
+ opcProps.setTitleProperty("Testing Bugzilla #47460");
+ assertEquals("Apache POI", opcProps.getCreatorProperty().getValue());
+ opcProps.setCreatorProperty("poi-dev@poi.apache.org");
+
+ workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
+ opcProps = workbook.getProperties().getCoreProperties().getUnderlyingProperties();
+ assertEquals("Testing Bugzilla #47460", opcProps.getTitleProperty().getValue());
+ assertEquals("poi-dev@poi.apache.org", opcProps.getCreatorProperty().getValue());
+
+
+ }
}