Author: centic
Date: Thu Nov 23 18:54:11 2017
New Revision: 1816185
URL: http://svn.apache.org/viewvc?rev=1816185&view=rev
Log:
Change order of handling shape-types in copy() as FreeFormShape derives from
AutoShape and thus would have not been copied correctly currently
Fix some Javadoc, some warnings and code duplications
Modified:
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
poi/trunk/src/ooxml/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java
poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowColShifter.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java Thu Nov 23
18:54:11 2017
@@ -146,7 +146,8 @@ public final class HSSFSheet implements
}
HSSFSheet cloneSheet(HSSFWorkbook workbook) {
- this.getDrawingPatriarch();/**Aggregate drawing records**/
+ // Aggregate drawing records
+ this.getDrawingPatriarch();
HSSFSheet sheet = new HSSFSheet(workbook, _sheet.cloneSheet());
int pos = sheet._sheet.findFirstRecordLocBySid(DrawingRecord.sid);
DrawingRecord dr = (DrawingRecord)
sheet._sheet.findFirstRecordBySid(DrawingRecord.sid);
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java
Thu Nov 23 18:54:11 2017
@@ -167,13 +167,10 @@ public class EmbeddedExtractor implement
protected EmbeddedData extract(DirectoryNode dn) throws IOException {
assert(canExtract(dn));
ByteArrayOutputStream bos = new ByteArrayOutputStream(20000);
- POIFSFileSystem dest = new POIFSFileSystem();
- try {
+ try (POIFSFileSystem dest = new POIFSFileSystem()) {
copyNodes(dn, dest.getRoot());
// start with a reasonable big size
dest.writeFilesystem(bos);
- } finally {
- dest.close();
}
return new EmbeddedData(dn.getName(), bos.toByteArray(),
CONTENT_TYPE_BYTES);
@@ -369,11 +366,8 @@ public class EmbeddedExtractor implement
destDir.setStorageClsid(srcDir.getStorageClsid());
copyNodes(srcDir, destDir);
} else {
- InputStream is = src.createDocumentInputStream(e);
- try {
+ try (InputStream is = src.createDocumentInputStream(e)) {
dest.createDocument(e.getName(), is);
- } finally {
- is.close();
}
}
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java Thu Nov 23
18:54:11 2017
@@ -66,19 +66,16 @@ public final class SAXHelper {
saxFactory = SAXParserFactory.newInstance();
saxFactory.setValidating(false);
saxFactory.setNamespaceAware(true);
- } catch (RuntimeException re) {
+ } catch (RuntimeException | Error re) {
+ // this also catches NoClassDefFoundError, which may be due to a
local class path issue
+ // This may occur if the code is run inside a web container
+ // or a restricted JVM
+ // See bug 61170:
https://bz.apache.org/bugzilla/show_bug.cgi?id=61170
logger.log(POILogger.WARN, "Failed to create SAXParserFactory",
re);
throw re;
} catch (Exception e) {
logger.log(POILogger.WARN, "Failed to create SAXParserFactory", e);
throw new RuntimeException("Failed to create SAXParserFactory", e);
- } catch (Error e) {
- // catches NoClassDefFoundError, which may be due to a local class
path issue
- // This may occur if the code is run inside a web container
- // or a restricted JVM
- // See bug 61170:
https://bz.apache.org/bugzilla/show_bug.cgi?id=61170
- logger.log(POILogger.WARN, "Failed to create SAXParserFactory", e);
- throw e;
}
}
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=1816185&r1=1816184&r2=1816185&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
Thu Nov 23 18:54:11 2017
@@ -481,7 +481,6 @@ implements SlideShow<XSLFShape,XSLFTextP
@Override
public XSLFPictureData addPicture(byte[] pictureData, PictureType format) {
XSLFPictureData img = findPictureData(pictureData);
-
if (img != null) {
return img;
}
@@ -491,13 +490,13 @@ implements SlideShow<XSLFShape,XSLFTextP
if (relType == null) {
throw new IllegalArgumentException("Picture type "+format+" is not
supported.");
}
+
img = createRelationship(relType, XSLFFactory.getInstance(),
imageNumber + 1, true).getDocumentPart();
img.setIndex(imageNumber);
_pictures.add(img);
- try {
- OutputStream out = img.getPackagePart().getOutputStream();
+
+ try (OutputStream out = img.getPackagePart().getOutputStream()) {
out.write(pictureData);
- out.close();
} catch (IOException e) {
throw new POIXMLException(e);
}
@@ -536,11 +535,8 @@ implements SlideShow<XSLFShape,XSLFTextP
{
int length = (int) pict.length();
byte[] data = IOUtils.safelyAllocate(length, MAX_RECORD_LENGTH);
- FileInputStream is = new FileInputStream(pict);
- try {
+ try (InputStream is = new FileInputStream(pict)) {
IOUtils.readFully(is, data);
- } finally {
- is.close();
}
return addPicture(data, format);
}
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
Thu Nov 23 18:54:11 2017
@@ -360,12 +360,12 @@ implements XSLFShapeContainer, GroupShap
XSLFShape newShape;
if (shape instanceof XSLFTextBox) {
newShape = createTextBox();
+ } else if (shape instanceof XSLFFreeformShape) {
+ newShape = createFreeform();
} else if (shape instanceof XSLFAutoShape) {
newShape = createAutoShape();
} else if (shape instanceof XSLFConnectorShape) {
newShape = createConnector();
- } else if (shape instanceof XSLFFreeformShape) {
- newShape = createFreeform();
} else if (shape instanceof XSLFPictureShape) {
XSLFPictureShape p = (XSLFPictureShape)shape;
XSLFPictureData pd = p.getPictureData();
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java Thu Nov 23
18:54:11 2017
@@ -116,8 +116,7 @@ public class PPTX2PNG {
if (!quiet) {
System.out.println("Processing " + file);
}
- SlideShow<?,?> ss = SlideShowFactory.create(file, null, true);
- try {
+ try (SlideShow<?, ?> ss = SlideShowFactory.create(file, null, true)) {
List<? extends Slide<?, ?>> slides = ss.getSlides();
Set<Integer> slidenum = slideIndexes(slides.size(), slidenumStr);
@@ -160,12 +159,10 @@ public class PPTX2PNG {
File outfile = new File(outdir, outname);
ImageIO.write(img, format, outfile);
}
-
+
graphics.dispose();
img.flush();
}
- } finally {
- ss.close();
}
if (!quiet) {
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
Thu Nov 23 18:54:11 2017
@@ -1114,7 +1114,7 @@ public class XSSFWorkbook extends POIXML
/**
* Get the XSSFSheet object at the given index.
*
- * @param index of the sheet number (0-based physical & logical)
+ * @param index of the sheet number (0-based physical & logical)
* @return XSSFSheet at the provided index
* @throws IllegalArgumentException if the index is out of range (index
* < 0 || index >= getNumberOfSheets()).
@@ -1129,7 +1129,7 @@ public class XSSFWorkbook extends POIXML
* Returns the index of the sheet by his name (case insensitive match)
*
* @param name the sheet name
- * @return index of the sheet (0 based) or <tt>-1</tt if not found
+ * @return index of the sheet (0 based) or <tt>-1</tt> if not found
*/
@Override
public int getSheetIndex(String name) {
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowColShifter.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowColShifter.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowColShifter.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowColShifter.java
Thu Nov 23 18:54:11 2017
@@ -96,7 +96,7 @@ import java.util.List;
* @param formulaShifter the formula shifting policy
*/
/*package*/ static void updateRowFormulas(XSSFRow row, FormulaShifter
formulaShifter) {
- XSSFSheet sheet = (XSSFSheet) row.getSheet();
+ XSSFSheet sheet = row.getSheet();
for (Cell c : row) {
XSSFCell cell = (XSSFCell) c;
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=1816185&r1=1816184&r2=1816185&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 Thu Nov
23 18:54:11 2017
@@ -101,8 +101,8 @@ public class TestXSLFBugs {
assertTrue(shapeToDelete1.isPresent());
slide1.removeShape(shapeToDelete1.get());
- slide1.getRelationParts().stream()
- .allMatch(rp -> "rId1,rId3".contains(rp.getRelationship().getId())
);
+ assertTrue(slide1.getRelationParts().stream()
+ .allMatch(rp -> "rId1,rId3".contains(rp.getRelationship().getId())
));
assertNotNull(ppt1.getPackage().getPart(ppn));
ppt1.close();
@@ -114,8 +114,8 @@ public class TestXSLFBugs {
slide2.getShapes().stream().filter(s -> s instanceof
XSLFPictureShape).skip(1).findFirst();
assertTrue(shapeToDelete2.isPresent());
slide2.removeShape(shapeToDelete2.get());
- slide2.getRelationParts().stream()
- .allMatch(rp -> "rId1,rId2".contains(rp.getRelationship().getId())
);
+ assertTrue(slide2.getRelationParts().stream()
+ .allMatch(rp -> "rId1,rId2".contains(rp.getRelationship().getId())
));
assertNotNull(ppt2.getPackage().getPart(ppn));
ppt2.close();
@@ -124,7 +124,7 @@ public class TestXSLFBugs {
slide3.getShapes().stream()
.filter(s -> s instanceof XSLFPictureShape)
.collect(Collectors.toList())
- .forEach(s -> slide3.removeShape(s));
+ .forEach(slide3::removeShape);
assertNull(ppt3.getPackage().getPart(ppn));
ppt3.close();
}
@@ -370,16 +370,8 @@ public class TestXSLFBugs {
}
// Add a few pictures
- for (int i=0; i<10; i++) {
- XSLFPictureData data = ss.addPicture(pics[i], PictureType.JPEG);
- assertEquals(i, data.getIndex());
- assertEquals(i+1, ss.getPictureData().size());
+ addPictures(ss, slide, pics, 0, 10);
- XSLFPictureShape shape = slide.createPicture(data);
- assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[i], shape.getPictureData().getData());
- assertEquals(i+2, slide.getShapes().size());
- }
// Re-fetch the pictures and check
for (int i=0; i<10; i++) {
XSLFPictureShape shape =
(XSLFPictureShape)slide.getShapes().get(i+1);
@@ -388,16 +380,8 @@ public class TestXSLFBugs {
}
// Add past 10
- for (int i=10; i<15; i++) {
- XSLFPictureData data = ss.addPicture(pics[i], PictureType.JPEG);
- assertEquals(i, data.getIndex());
- assertEquals(i+1, ss.getPictureData().size());
+ addPictures(ss, slide, pics, 10, 15);
- XSLFPictureShape shape = slide.createPicture(data);
- assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[i], shape.getPictureData().getData());
- assertEquals(i+2, slide.getShapes().size());
- }
// Check all pictures
for (int i=0; i<15; i++) {
XSLFPictureShape shape =
(XSLFPictureShape)slide.getShapes().get(i+1);
@@ -446,6 +430,19 @@ public class TestXSLFBugs {
ss.close();
}
+ private void addPictures(XMLSlideShow ss, XSLFSlide slide, byte[][] pics,
int start, int end) {
+ for (int i = start; i< end; i++) {
+ XSLFPictureData data = ss.addPicture(pics[i], PictureType.JPEG);
+ assertEquals(i, data.getIndex());
+ assertEquals(i+1, ss.getPictureData().size());
+
+ XSLFPictureShape shape = slide.createPicture(data);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
+ assertEquals(i+2, slide.getShapes().size());
+ }
+ }
+
private void validateSlides(XMLSlideShow ss, boolean saveAndReload,
String... slideTexts) throws IOException {
if (saveAndReload) {
XMLSlideShow ss2 = XSLFTestDataSamples.writeOutAndReadBack(ss);
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java?rev=1816185&r1=1816184&r2=1816185&view=diff
==============================================================================
---
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
(original)
+++
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
Thu Nov 23 18:54:11 2017
@@ -365,11 +365,10 @@ public class TestXSLFTextParagraph {
@Test(expected = IllegalStateException.class)
public void testLineBreak() throws IOException {
- XMLSlideShow ppt = new XMLSlideShow();
- try {
+ try (XMLSlideShow ppt = new XMLSlideShow()) {
XSLFSlide slide = ppt.createSlide();
XSLFTextShape sh = slide.createAutoShape();
-
+
XSLFTextParagraph p = sh.addNewTextParagraph();
XSLFTextRun r1 = p.addNewTextRun();
r1.setText("Hello,");
@@ -382,13 +381,11 @@ public class TestXSLFTextParagraph {
r3.setFontSize(20.0);
XSLFTextRun r4 = p.addLineBreak();
assertEquals(20.0, r4.getFontSize(), 0);
-
- assertEquals("Hello,\nWorld!\n",sh.getText());
+
+ assertEquals("Hello,\nWorld!\n", sh.getText());
// "You cannot change text of a line break, it is always '\\n'"
r2.setText("aaa");
- } finally {
- ppt.close();
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]