}
@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());
}
/**
==================================================================== */
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;
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
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}