]> source.dussan.org Git - poi.git/commitdiff
POI-60341: handle missing sdtpr in an sdtbody
authorTim Allison <tallison@apache.org>
Fri, 4 Nov 2016 15:06:17 +0000 (15:06 +0000)
committerTim Allison <tallison@apache.org>
Fri, 4 Nov 2016 15:06:17 +0000 (15:06 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1768048 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xwpf/usermodel/AbstractXWPFSDT.java
src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java

index 2cf42f1862bf9a9423b62ec9c178519f3292febb..4db163de2d0e0ebc606e4d072d1ec4c82c60ff94 100644 (file)
@@ -1,18 +1,18 @@
-/* ====================================================================
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
+/* ====================================================================\r
+   Licensed to the Apache Software Foundation (ASF) under one or more\r
+   contributor license agreements.  See the NOTICE file distributed with\r
+   this work for additional information regarding copyright ownership.\r
+   The ASF licenses this file to You under the Apache License, Version 2.0\r
+   (the "License"); you may not use this file except in compliance with\r
+   the License.  You may obtain a copy of the License at\r
+\r
+       http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+   Unless required by applicable law or agreed to in writing, software\r
+   distributed under the License is distributed on an "AS IS" BASIS,\r
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+   See the License for the specific language governing permissions and\r
+   limitations under the License.\r
 ==================================================================== */\r
 package org.apache.poi.xwpf.usermodel;\r
 \r
@@ -33,18 +33,22 @@ public abstract class AbstractXWPFSDT implements ISDTContents {
     private final IBody part;\r
 \r
     public AbstractXWPFSDT(CTSdtPr pr, IBody part) {\r
-\r
-        CTString[] aliases = pr.getAliasArray();\r
-        if (aliases != null && aliases.length > 0) {\r
-            title = aliases[0].getVal();\r
-        } else {\r
+        if (pr == null) {\r
             title = "";\r
-        }\r
-        CTString[] tags = pr.getTagArray();\r
-        if (tags != null && tags.length > 0) {\r
-            tag = tags[0].getVal();\r
-        } else {\r
             tag = "";\r
+        } else {\r
+            CTString[] aliases = pr.getAliasArray();\r
+            if (aliases != null && aliases.length > 0) {\r
+                title = aliases[0].getVal();\r
+            } else {\r
+                title = "";\r
+            }\r
+            CTString[] tags = pr.getTagArray();\r
+            if (tags != null && tags.length > 0) {\r
+                tag = tags[0].getVal();\r
+            } else {\r
+                tag = "";\r
+            }\r
         }\r
         this.part = part;\r
 \r
index b008763ca686a0228ee5d13c8cb834b68fb4b96c..0f625fbd9089bceb602c3d5f5ac3e5868c3de0f7 100644 (file)
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xwpf.usermodel;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -131,6 +132,15 @@ public final class TestXWPFSDT extends TestCase {
         }
     }
 
+    public void test60341() throws IOException {
+        //handle sdtbody without an sdtpr
+        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug60341.docx");
+        List<AbstractXWPFSDT> sdts = extractAllSDTs(doc);
+        assertEquals(1, sdts.size());
+        assertEquals("", sdts.get(0).getTag());
+        assertEquals("", sdts.get(0).getTitle());
+    }
+
     private List<AbstractXWPFSDT> extractAllSDTs(XWPFDocument doc) {
 
         List<AbstractXWPFSDT> sdts = new ArrayList<AbstractXWPFSDT>();