[bug-62929] add null check for blip fill. Thanks to Mate Borcsok

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1847004 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2018-11-20 14:15:14 +00:00
parent 0377b57a54
commit 96308eb512
3 changed files with 35 additions and 12 deletions

View File

@ -170,16 +170,25 @@ public class XSLFPictureShape extends XSLFSimpleShape
@SuppressWarnings("WeakerAccess")
protected String getBlipLink(){
String link = getBlip().getLink();
if (link.isEmpty()) return null;
return link;
CTBlip blip = getBlip();
if (blip != null) {
String link = blip.getLink();
if (link.isEmpty()) return null;
return link;} else {
return null;
}
}
@SuppressWarnings("WeakerAccess")
protected String getBlipId(){
String id = getBlip().getEmbed();
if (id.isEmpty()) return null;
return id;
CTBlip blip = getBlip();
if (blip != null) {
String id = getBlip().getEmbed();
if (id.isEmpty()) return null;
return id;
} else {
return null;
}
}
@Override

View File

@ -17,12 +17,7 @@
package org.apache.poi.xslf;
import static org.apache.poi.POITestCase.assertContains;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assert.*;
import java.awt.Color;
import java.awt.Dimension;
@ -93,6 +88,25 @@ import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
public class TestXSLFBugs {
private static final POIDataSamples slTests = POIDataSamples.getSlideShowInstance();
@Test
public void bug62929() throws Exception {
try(XMLSlideShow ss1 = XSLFTestDataSamples.openSampleDocument("missing-blip-fill.pptx")) {
assertEquals(1, ss1.getSlides().size());
XSLFSlide slide = ss1.getSlides().get(0);
assertEquals(slide.getShapes().size(), 1);
XSLFPictureShape picture = (XSLFPictureShape)slide.getShapes().get(0);
assertEquals(picture.getShapeId(), 662);
assertFalse(picture.isExternalLinkedPicture());
assertNull(picture.getPictureData());
assertNull(picture.getPictureLink());
assertNull(picture.getClipping());
}
}
@Test
public void bug62736() throws Exception {
XMLSlideShow ss1 = XSLFTestDataSamples.openSampleDocument("bug62736.pptx");

Binary file not shown.