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