You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2019/06/12 17:30:53 UTC
svn commit: r1861172 - in /poi/trunk/src/ooxml:
java/org/apache/poi/xslf/usermodel/XSLFShape.java
testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java
Author: fanningpj
Date: Wed Jun 12 17:30:52 2019
New Revision: 1861172
URL: http://svn.apache.org/viewvc?rev=1861172&view=rev
Log:
[bug-63498] NPE when calling getShapeName on XSLFTableCell. Thanks to Mate Borcsok.
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java?rev=1861172&r1=1861171&r2=1861172&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java Wed Jun 12 17:30:52 2019
@@ -98,13 +98,18 @@ public abstract class XSLFShape implemen
}
@Override
- public String getShapeName(){
- return getCNvPr().getName();
+ public String getShapeName() {
+ CTNonVisualDrawingProps nonVisualDrawingProps = getCNvPr();
+ return nonVisualDrawingProps == null ? null : nonVisualDrawingProps.getName();
}
@Override
public int getShapeId() {
- return (int)getCNvPr().getId();
+ CTNonVisualDrawingProps nonVisualDrawingProps = getCNvPr();
+ if (nonVisualDrawingProps == null) {
+ throw new IllegalStateException("no underlying shape exists");
+ }
+ return Math.toIntExact(nonVisualDrawingProps.getId());
}
/**
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java?rev=1861172&r1=1861171&r2=1861172&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java Wed Jun 12 17:30:52 2019
@@ -16,12 +16,7 @@
==================================================================== */
package org.apache.poi.xslf.usermodel;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
import java.io.IOException;
import java.util.List;
@@ -128,4 +123,28 @@ public class TestXSLFTableRow {
assertNotNull(ctrow);
}
+
+ @Test
+ public void getShapeNameOfCells() throws Exception {
+ try(XMLSlideShow ss1 = XSLFTestDataSamples.openSampleDocument("table_test.pptx")) {
+ for (XSLFSlide slide : ss1.getSlides()) {
+ for (XSLFShape shape : slide.getShapes()) {
+ assertEquals("Table 3", shape.getShapeName());
+ if (shape instanceof XSLFTable) {
+ for (XSLFTableRow row : ((XSLFTable) shape).getRows()) {
+ for (XSLFTableCell cell : row.getCells()) {
+ assertNull(cell.getShapeName()); // Do not throw NPE
+ try {
+ cell.getShapeId();
+ fail("expected getShapeId to fail");
+ } catch (IllegalStateException ise) {
+ // expected
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org