diff options
author | Yegor Kozlov <yegor@apache.org> | 2009-07-12 08:21:09 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2009-07-12 08:21:09 +0000 |
commit | 27832ad35675cab8492cb702b952e2636560ea31 (patch) | |
tree | 1e3b2fb7cf0c06f353d71db6700b581185ce1e62 | |
parent | 35c4438666b32e4a6579c2e525df66e24818fb81 (diff) | |
download | poi-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
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()); + + + } } |