You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2017/03/19 21:43:57 UTC
svn commit: r1787663 - in /poi/trunk:
src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
test-data/slideshow/60810.pptx
Author: centic
Date: Sun Mar 19 21:43:57 2017
New Revision: 1787663
URL: http://svn.apache.org/viewvc?rev=1787663&view=rev
Log:
Bug 60810: Check for duplicate relation-names for notes similar to the fix for slides themselves in bug 55791
Added:
poi/trunk/test-data/slideshow/60810.pptx
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java?rev=1787663&r1=1787662&r2=1787663&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java Sun Mar 19 21:43:57 2017
@@ -300,6 +300,32 @@ implements SlideShow<XSLFShape,XSLFTextP
Integer slideIndex = XSLFRelation.SLIDE.getFileNameIndex(slide);
+ // Bug 55791: We also need to check that the resulting file name is not already taken
+ // this can happen when removing/adding slides
+ while(true) {
+ String slideName = XSLFRelation.NOTES.getFileName(slideIndex);
+ boolean found = false;
+ for (POIXMLDocumentPart relation : getRelations()) {
+ if (relation.getPackagePart() != null &&
+ slideName.equals(relation.getPackagePart().getPartName().getName())) {
+ // name is taken => try next one
+ found = true;
+ break;
+ }
+ }
+
+ if(!found &&
+ getPackage().getPartsByName(Pattern.compile(Pattern.quote(slideName))).size() > 0) {
+ // name is taken => try next one
+ found = true;
+ }
+
+ if (!found) {
+ break;
+ }
+ slideIndex++;
+ }
+
// add notes slide to presentation
XSLFNotes notesSlide = (XSLFNotes) createRelationship
(XSLFRelation.NOTES, XSLFFactory.getInstance(), slideIndex);
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java?rev=1787663&r1=1787662&r2=1787663&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java Sun Mar 19 21:43:57 2017
@@ -16,27 +16,6 @@
==================================================================== */
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.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics2D;
-import java.awt.RenderingHints;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.Collection;
-
-import javax.imageio.ImageIO;
-
import org.apache.poi.POIDataSamples;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.POIXMLDocumentPart.RelationPart;
@@ -50,27 +29,28 @@ import org.apache.poi.sl.usermodel.Pictu
import org.apache.poi.sl.usermodel.ShapeType;
import org.apache.poi.sl.usermodel.VerticalAlignment;
import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
-import org.apache.poi.xslf.usermodel.XMLSlideShow;
-import org.apache.poi.xslf.usermodel.XSLFAutoShape;
-import org.apache.poi.xslf.usermodel.XSLFGroupShape;
-import org.apache.poi.xslf.usermodel.XSLFHyperlink;
-import org.apache.poi.xslf.usermodel.XSLFPictureData;
-import org.apache.poi.xslf.usermodel.XSLFPictureShape;
-import org.apache.poi.xslf.usermodel.XSLFRelation;
-import org.apache.poi.xslf.usermodel.XSLFShape;
-import org.apache.poi.xslf.usermodel.XSLFSlide;
-import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
-import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
-import org.apache.poi.xslf.usermodel.XSLFTable;
-import org.apache.poi.xslf.usermodel.XSLFTableCell;
-import org.apache.poi.xslf.usermodel.XSLFTableRow;
-import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
-import org.apache.poi.xslf.usermodel.XSLFTextRun;
+import org.apache.poi.xslf.usermodel.*;
import org.junit.Ignore;
import org.junit.Test;
import org.openxmlformats.schemas.drawingml.x2006.main.CTOuterShadowEffect;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
+import javax.imageio.ImageIO;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Collection;
+
+import static org.apache.poi.POITestCase.assertContains;
+import static org.junit.Assert.*;
+
public class TestXSLFBugs {
private static final POIDataSamples slTests = POIDataSamples.getSlideShowInstance();
@@ -109,6 +89,7 @@ public class TestXSLFBugs {
private static void assertRelation(XSLFSlide slide, String exp, String rId) {
POIXMLDocumentPart pd = (rId != null) ? slide.getRelationById(rId) : slide;
+ assertNotNull(pd);
assertEquals(exp, pd.getPackagePart().getPartName().getName());
}
@@ -147,8 +128,9 @@ public class TestXSLFBugs {
for(RelationPart p : rels) {
if(p.getRelationship().getRelationshipType().equals(XSLFRelation.HYPERLINK.getRelation())) {
URI target = p.getRelationship().getTargetURI();
-
- if(target.getFragment().equals("_ftn1") ||
+
+ //noinspection StatementWithEmptyBody
+ if(target.getFragment().equals("_ftn1") ||
target.getFragment().equals("_ftnref1")) {
// Good
} else {
@@ -624,4 +606,22 @@ public class TestXSLFBugs {
dst.close();
src.close();
}
+
+ @Test
+ public void test60810() throws IOException {
+ XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("60810.pptx");
+ for(XSLFSlide slide : ppt.getSlides()) {
+ XSLFNotes notesSlide = ppt.getNotesSlide(slide);
+ assertNotNull(notesSlide);
+ }
+
+ /*OutputStream stream = new FileOutputStream("/tmp/test.pptx");
+ try {
+ ppt.write(stream);
+ } finally {
+ stream.close();
+ }*/
+
+ ppt.close();
+ }
}
\ No newline at end of file
Added: poi/trunk/test-data/slideshow/60810.pptx
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/60810.pptx?rev=1787663&view=auto
==============================================================================
Binary files poi/trunk/test-data/slideshow/60810.pptx (added) and poi/trunk/test-data/slideshow/60810.pptx Sun Mar 19 21:43:57 2017 differ
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org