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