git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1903442 13f79535-47bb-0310-9956-ffa450edef68tags/REL_5_2_3
@@ -48,7 +48,7 @@ public class XSSFPivotCacheDefinition extends POIXMLDocumentPart{ | |||
private CTPivotCacheDefinition ctPivotCacheDefinition; | |||
@Beta | |||
public XSSFPivotCacheDefinition(){ | |||
public XSSFPivotCacheDefinition() { | |||
super(); | |||
ctPivotCacheDefinition = CTPivotCacheDefinition.Factory.newInstance(); | |||
createDefaultValues(); |
@@ -87,11 +87,20 @@ public class XSSFPivotTable extends POIXMLDocumentPart { | |||
//Removing root element | |||
options.setLoadReplaceDocumentElement(null); | |||
pivotTableDefinition = CTPivotTableDefinition.Factory.parse(is, options); | |||
pivotCacheDefinition = null; | |||
} catch (XmlException e) { | |||
throw new IOException(e.getLocalizedMessage()); | |||
} | |||
} | |||
private void lazyInitXSSFPivotCacheDefinition() { | |||
for (POIXMLDocumentPart documentPart : getRelations()) { | |||
if (documentPart instanceof XSSFPivotCacheDefinition) { | |||
pivotCacheDefinition = (XSSFPivotCacheDefinition) documentPart; | |||
} | |||
} | |||
} | |||
@Beta | |||
public void setPivotCache(XSSFPivotCache pivotCache) { | |||
this.pivotCache = pivotCache; | |||
@@ -126,6 +135,9 @@ public class XSSFPivotTable extends POIXMLDocumentPart { | |||
@Beta | |||
public XSSFPivotCacheDefinition getPivotCacheDefinition() { | |||
if (pivotCacheDefinition == null) { | |||
lazyInitXSSFPivotCacheDefinition(); | |||
} | |||
return pivotCacheDefinition; | |||
} | |||
@@ -3705,4 +3705,23 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { | |||
assertEquals(ErrorEval.VALUE_INVALID.getErrorCode(), cv1.getErrorValue()); | |||
} | |||
} | |||
@Test | |||
void testBug66216() throws IOException { | |||
File file = XSSFTestDataSamples.getSampleFile("ExcelPivotTableSample.xlsx"); | |||
try ( | |||
FileInputStream fis = new FileInputStream(file); | |||
XSSFWorkbook workbook = new XSSFWorkbook(fis) | |||
) { | |||
for (XSSFPivotTable pivotTable : workbook.getPivotTables()) { | |||
assertNotNull(pivotTable.getCTPivotTableDefinition()); | |||
assertNotNull(pivotTable.getPivotCacheDefinition()); | |||
assertEquals(1, pivotTable.getRelations().size()); | |||
assertInstanceOf(XSSFPivotCacheDefinition.class, pivotTable.getRelations().get(0)); | |||
assertEquals("rId1", pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().getId()); | |||
assertEquals(3, | |||
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().getRecordCount()); | |||
} | |||
} | |||
} | |||
} |