You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ta...@apache.org on 2016/11/04 15:21:51 UTC

svn commit: r1768054 - in /poi: site/src/documentation/content/xdocs/status.xml trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java

Author: tallison
Date: Fri Nov  4 15:21:51 2016
New Revision: 1768054

URL: http://svn.apache.org/viewvc?rev=1768054&view=rev
Log:
POI-60342: handle missing sdtcontentcell in an sdtcell

Modified:
    poi/site/src/documentation/content/xdocs/status.xml
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java

Modified: poi/site/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1768054&r1=1768053&r2=1768054&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Fri Nov  4 15:21:51 2016
@@ -63,6 +63,7 @@
         <summary-item>Improve support for reading VBA macros</summary-item>
       </summary>
       <actions>
+        <action dev="PD" type="fix" fixes-bug="60342" module="XWPF">Handle an SdtCell that has no SdtContentCell</action>
         <action dev="PD" type="fix" fixes-bug="60341" module="XWPF">Handle an SdtBody that has no SdtPr</action>
         <action dev="PD" type="add" module="SS Common">CellStyle support for "Quote Prefix" aka "123 Prefix"</action>
         <action dev="PD" type="fix" fixes-bug="60320" module="POIFS">Issue opening password protected xlsx</action>

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java?rev=1768054&r1=1768053&r2=1768054&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java Fri Nov  4 15:21:51 2016
@@ -1,23 +1,23 @@
-/* ====================================================================
-   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.
-==================================================================== */
-package org.apache.poi.xwpf.usermodel;
-
-
-import javax.xml.namespace.QName;
+/* ====================================================================
+   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.
+==================================================================== */
+package org.apache.poi.xwpf.usermodel;
+
+
+import javax.xml.namespace.QName;
 
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlCursor.TokenType;
@@ -32,12 +32,12 @@ import org.openxmlformats.schemas.wordpr
  */
 public class XWPFSDTContentCell implements ISDTContent {
 
-    //A full implementation would grab the icells
-    //that a content cell can contain.  This would require
-    //significant changes, including changing the notion that the
-    //parent of a cell can be not just a row, but an sdt.
-    //For now we are just grabbing the text out of the text tokentypes.
-
+    //A full implementation would grab the icells
+    //that a content cell can contain.  This would require
+    //significant changes, including changing the notion that the
+    //parent of a cell can be not just a row, but an sdt.
+    //For now we are just grabbing the text out of the text tokentypes.
+
     //private List<ICell> cells = new ArrayList<ICell>().
 
     private String text = "";
@@ -45,9 +45,13 @@ public class XWPFSDTContentCell implemen
     public XWPFSDTContentCell(CTSdtContentCell sdtContentCell,
                               XWPFTableRow xwpfTableRow, IBody part) {
         super();
+        //sdtContentCell is allowed to be null:  minOccurs="0" maxOccurs="1"
+        if (sdtContentCell == null) {
+            return;
+        }
         StringBuilder sb = new StringBuilder();
         XmlCursor cursor = sdtContentCell.newCursor();
-
+
         //keep track of the following,
         //and add "\n" only before the start of a body
         //element if it is not the first body element.
@@ -55,8 +59,8 @@ public class XWPFSDTContentCell implemen
         //index of cell in row
         int tcCnt = 0;
         //count of body objects
-        int iBodyCnt = 0;
-        int depth = 1;
+        int iBodyCnt = 0;
+        int depth = 1;
 
         while (cursor.hasNextToken() && depth > 0) {
             TokenType t = cursor.toNextToken();
@@ -64,17 +68,17 @@ public class XWPFSDTContentCell implemen
                 sb.append(cursor.getTextValue());
             } else if (isStartToken(cursor, "tr")) {
                 tcCnt = 0;
-                iBodyCnt = 0;
-            } else if (isStartToken(cursor, "tc")) {
-                if (tcCnt++ > 0) {
-                    sb.append("\t");
-                }
-                iBodyCnt = 0;
-            } else if (isStartToken(cursor, "p") ||
-                    isStartToken(cursor, "tbl") ||
-                    isStartToken(cursor, "sdt")) {
-                if (iBodyCnt > 0) {
-                    sb.append("\n");
+                iBodyCnt = 0;
+            } else if (isStartToken(cursor, "tc")) {
+                if (tcCnt++ > 0) {
+                    sb.append("\t");
+                }
+                iBodyCnt = 0;
+            } else if (isStartToken(cursor, "p") ||
+                    isStartToken(cursor, "tbl") ||
+                    isStartToken(cursor, "sdt")) {
+                if (iBodyCnt > 0) {
+                    sb.append("\n");
                 }
                 iBodyCnt++;
             }
@@ -84,7 +88,7 @@ public class XWPFSDTContentCell implemen
                 depth--;
             }
         }
-        text = sb.toString();
+        text = sb.toString();
         cursor.dispose();
     }
 
@@ -94,11 +98,11 @@ public class XWPFSDTContentCell implemen
             return false;
         }
         QName qName = cursor.getName();
-        if (qName != null && qName.getLocalPart() != null &&
-                qName.getLocalPart().equals(string)) {
-            return true;
-        }
-        return false;
+        if (qName != null && qName.getLocalPart() != null &&
+                qName.getLocalPart().equals(string)) {
+            return true;
+        }
+        return false;
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org