From: Nick Burch Date: Wed, 29 Apr 2015 19:21:37 +0000 (+0000) Subject: Patch from Jon Scharff from bug #57826 - If a XSSF shape has a buFont but no bullet... X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b2a1862f197122013f681ef08cfc860d8b6c4e62;p=poi.git Patch from Jon Scharff from bug #57826 - If a XSSF shape has a buFont but no bullet character, mirror Excel and treat as un-bulleted git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676831 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java index c89d0cdb30..6500c1603c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java @@ -709,13 +709,19 @@ public class XSSFTextParagraph implements Iterable{ public boolean isBullet() { ParagraphPropertyFetcher fetcher = new ParagraphPropertyFetcher(getLevel()){ public boolean fetch(CTTextParagraphProperties props){ - if(props.isSetBuNone()) { + if (props.isSetBuNone()) { setValue(false); return true; } - if(props.isSetBuFont() || props.isSetBuChar() || props.isSetBuAutoNum()){ - setValue(true); - return true; + if (props.isSetBuFont()) { + if (props.isSetBuChar() || props.isSetBuAutoNum()) { + setValue(true); + return true; + } else { + // Excel treats text with buFont but no char/autonum + // as not bulleted + // Possibly the font is just used if bullets turned on again? + } } return false; } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 71e008485f..003666958a 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2369,6 +2369,34 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { checkStyle(styleBack); } + /** + * Paragraph with property BuFont but none of the properties + * BuNone, BuChar, and BuAutoNum, used to trigger a NPE + * Excel treats this as not-bulleted, so now do we + */ + @Test + public void testBug57826() { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("57826.xlsx"); + + assertTrue("no sheets in workbook", workbook.getNumberOfSheets() >= 1); + XSSFSheet sheet = workbook.getSheetAt(0); + + XSSFDrawing drawing = sheet.getDrawingPatriarch(); + assertNotNull(drawing); + + List shapes = drawing.getShapes(); + assertEquals(1, shapes.size()); + assertTrue(shapes.get(0) instanceof XSSFSimpleShape); + + XSSFSimpleShape shape = (XSSFSimpleShape)shapes.get(0); + + // Used to throw a NPE + String text = shape.getText(); + + // No bulleting info included + assertEquals("test ok", text); + } + private void checkStyle(XSSFCellStyle cellStyle) { assertNotNull(cellStyle); assertEquals(0, cellStyle.getFillForegroundColor()); diff --git a/test-data/spreadsheet/57826.xlsx b/test-data/spreadsheet/57826.xlsx new file mode 100644 index 0000000000..ccf2dc38fe Binary files /dev/null and b/test-data/spreadsheet/57826.xlsx differ