POI 59030 fix NPE in XWPFTableCell's getVerticalAlignment via Prasad Babu

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1731257 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Tim Allison 2016-02-19 15:46:26 +00:00
parent 2cab09db04
commit bc716a2796
3 changed files with 36 additions and 14 deletions

View File

@ -224,20 +224,23 @@ public class XWPFTableCell implements IBody, ICell {
ctshd.setFill(rgbStr); ctshd.setFill(rgbStr);
} }
/** /**
* Get the vertical alignment of the cell. * Get the vertical alignment of the cell.
* *
* @return the cell alignment enum value * @return the cell alignment enum value or <code>null</code>
*/ * if no vertical alignment is set.
public XWPFVertAlign getVerticalAlignment() { */
XWPFVertAlign vAlign = null; public XWPFVertAlign getVerticalAlignment() {
CTTcPr tcpr = ctTc.getTcPr(); XWPFVertAlign vAlign = null;
if (tcpr != null) { CTTcPr tcpr = ctTc.getTcPr();
CTVerticalJc va = tcpr.getVAlign(); if (tcpr != null) {
vAlign = stVertAlignTypeMap.get(va.getVal().intValue()); CTVerticalJc va = tcpr.getVAlign();
} if (va != null && va.getVal() != null) {
return vAlign; vAlign = stVertAlignTypeMap.get(va.getVal().intValue());
} }
}
return vAlign;
}
/** /**
* Set the vertical alignment of the cell. * Set the vertical alignment of the cell.

View File

@ -19,8 +19,11 @@
package org.apache.poi.xwpf.usermodel; package org.apache.poi.xwpf.usermodel;
import java.util.List;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.xwpf.XWPFTestDataSamples;
import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign; import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
@ -103,4 +106,20 @@ public class TestXWPFTableCell extends TestCase {
CTTcBorders tblBorders = tcPr.addNewTcBorders(); CTTcBorders tblBorders = tcPr.addNewTcBorders();
CTVMerge vMerge = tcPr.addNewVMerge(); CTVMerge vMerge = tcPr.addNewVMerge();
} }
public void testCellVerticalAlign() throws Exception{
XWPFDocument docx = XWPFTestDataSamples.openSampleDocument("59030.docx");
List<XWPFTable> tables = docx.getTables();
assertEquals(1, tables.size());
XWPFTable table = tables.get(0);
List<XWPFTableRow> tableRows = table.getRows();
assertEquals(2, tableRows.size());
assertNull(tableRows.get(0).getCell(0).getVerticalAlignment());
assertEquals(XWPFVertAlign.BOTTOM, tableRows.get(0).getCell(1).getVerticalAlignment());
assertEquals(XWPFVertAlign.CENTER, tableRows.get(1).getCell(0).getVerticalAlignment());
assertNull(tableRows.get(1).getCell(1).getVerticalAlignment());
}
} }

Binary file not shown.