XWPFTableCell does not process bodyElements when handle paragraph

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1875746 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Alain Béarez 2020-03-27 03:13:37 +00:00
parent 6e6a638ca0
commit 4342180475
2 changed files with 55 additions and 0 deletions

View File

@ -160,6 +160,7 @@ public class XWPFTableCell implements IBody, ICell {
*/ */
public void addParagraph(XWPFParagraph p) { public void addParagraph(XWPFParagraph p) {
paragraphs.add(p); paragraphs.add(p);
bodyElements.add(p);
} }
/** /**
@ -168,8 +169,10 @@ public class XWPFTableCell implements IBody, ICell {
* @param pos The position in the list of paragraphs, 0-based * @param pos The position in the list of paragraphs, 0-based
*/ */
public void removeParagraph(int pos) { public void removeParagraph(int pos) {
XWPFParagraph removedParagraph = paragraphs.get(pos);
paragraphs.remove(pos); paragraphs.remove(pos);
ctTc.removeP(pos); ctTc.removeP(pos);
bodyElements.remove(removedParagraph);
} }
/** /**

View File

@ -150,6 +150,58 @@ public class TestXWPFTableCell {
doc.close(); doc.close();
} }
@Test
public void testAddParagraph() throws Exception {
XWPFDocument doc = new XWPFDocument();
XWPFTable table = doc.createTable();
XWPFTableRow tr = table.createRow();
XWPFTableCell cell = tr.addNewTableCell();
// cell have at least one paragraph by default
assertEquals(1, cell.getParagraphs().size());
assertEquals(1, cell.getBodyElements().size());
assertEquals(cell.getParagraphArray(0), cell.getBodyElements().get(0));
XWPFParagraph p = cell.addParagraph();
assertEquals(2, cell.getParagraphs().size());
assertEquals(2, cell.getBodyElements().size());
assertEquals(p, cell.getParagraphArray(1));
assertEquals(cell.getParagraphArray(1), cell.getBodyElements().get(1));
doc.close();
}
@Test
public void testRemoveParagraph() throws Exception {
XWPFDocument doc = new XWPFDocument();
XWPFTable table = doc.createTable();
XWPFTableRow tr = table.createRow();
XWPFTableCell cell = tr.addNewTableCell();
// cell have at least one paragraph by default
XWPFParagraph p0 = cell.getParagraphArray(0);
XWPFParagraph p1 = cell.addParagraph();
cell.addParagraph();
// remove 3rd
cell.removeParagraph(2);
assertEquals(2, cell.getParagraphs().size());
assertEquals(2, cell.getBodyElements().size());
assertEquals(p0, cell.getParagraphArray(0));
assertEquals(p1, cell.getParagraphArray(1));
assertEquals(p0, cell.getBodyElements().get(0));
assertEquals(p1, cell.getBodyElements().get(1));
// remove 2nd
cell.removeParagraph(1);
assertEquals(1, cell.getParagraphs().size());
assertEquals(1, cell.getBodyElements().size());
assertEquals(p0, cell.getParagraphArray(0));
assertEquals(p0, cell.getBodyElements().get(0));
doc.close();
}
@Test @Test
public void testBug63624() throws Exception { public void testBug63624() throws Exception {
XWPFDocument doc = new XWPFDocument(); XWPFDocument doc = new XWPFDocument();