From fb9295ffb9e94a49cce754e24d9c04cff2ac97f2 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 19 Dec 2014 14:29:50 +0000 Subject: [PATCH] Bug 57312: Add check for null value of underline w:val git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1646729 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/XWPFRun.java | 5 +-- .../poi/xwpf/usermodel/TestXWPFBugs.java | 31 +++++++++++++++++- test-data/document/57312.docx | Bin 0 -> 21702 bytes 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 test-data/document/57312.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java index 9234d18506..d93e54f274 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java @@ -356,8 +356,9 @@ public class XWPFRun implements ISDTContents, IRunElement{ */ public UnderlinePatterns getUnderline() { CTRPr pr = run.getRPr(); - return (pr != null && pr.isSetU()) ? UnderlinePatterns.valueOf(pr - .getU().getVal().intValue()) : UnderlinePatterns.NONE; + return (pr != null && pr.isSetU() && pr.getU().getVal() != null) + ? UnderlinePatterns.valueOf(pr.getU().getVal().intValue()) + : UnderlinePatterns.NONE; } /** diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java index a40910df60..bded4e48c4 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java @@ -16,8 +16,11 @@ ==================================================================== */ package org.apache.poi.xwpf.usermodel; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; +import java.io.IOException; + +import org.apache.poi.xwpf.XWPFTestDataSamples; import org.apache.poi.xwpf.usermodel.XWPFRun.FontCharRange; import org.junit.Test; @@ -48,4 +51,30 @@ public class TestXWPFBugs { assertEquals(run.getFontFamily(FontCharRange.hAnsi), "Arial"); } + + @Test + public void bug57312_NullPointException() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("57312.docx"); + assertNotNull(doc); + + for( IBodyElement bodyElement : doc.getBodyElements()){ + BodyElementType elementType = bodyElement.getElementType(); + + if(elementType == BodyElementType.PARAGRAPH) { + XWPFParagraph paragraph = (XWPFParagraph) bodyElement; + + for (IRunElement iRunElem : paragraph.getIRuns()){ + + if (iRunElem instanceof XWPFRun){ + XWPFRun runElement = (XWPFRun) iRunElem; + + UnderlinePatterns underline = runElement.getUnderline(); + assertNotNull(underline); + + //System.out.println("Found: " + underline + ": " + runElement.getText(0)); + } + } + } + } + } } diff --git a/test-data/document/57312.docx b/test-data/document/57312.docx new file mode 100644 index 0000000000000000000000000000000000000000..3227597391329c83cf2a691c87d1292c5df9f35f GIT binary patch literal 21702 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