Browse Source

[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
tags/REL_4_0_1^2
PJ Fanning 5 years ago
parent
commit
96308eb512

+ 15
- 6
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java 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

+ 20
- 6
src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java 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");

BIN
test-data/slideshow/missing-blip-fill.pptx View File


Loading…
Cancel
Save