mirror of https://github.com/apache/poi.git
Fix bug #50795 - Avoid NPE from xmlbeans when moving XSSF Comments from one cell to another
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1072022 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b585dd59a6
commit
51653729ce
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.8-beta1" date="2010-??-??">
|
<release version="3.8-beta1" date="2010-??-??">
|
||||||
|
<action dev="poi-developers" type="fix">50795 - Avoid NPE from xmlbeans when moving XSSF Comments from one cell to another</action>
|
||||||
<action dev="poi-developers" type="fix">46664 - When creating HSSF Print Areas, ensure the named range is reference based not value based</action>
|
<action dev="poi-developers" type="fix">46664 - When creating HSSF Print Areas, ensure the named range is reference based not value based</action>
|
||||||
<action dev="poi-developers" type="fix">50756 - When formatting numbers based on their Cell Style, treat GENERAL the same as the more typical General</action>
|
<action dev="poi-developers" type="fix">50756 - When formatting numbers based on their Cell Style, treat GENERAL the same as the more typical General</action>
|
||||||
<action dev="poi-developers" type="fix">fixed HSSFWorkbook.createCellStyle to throw exception if the maximum number of cell styles was exceeded</action>
|
<action dev="poi-developers" type="fix">fixed HSSFWorkbook.createCellStyle to throw exception if the maximum number of cell styles was exceeded</action>
|
||||||
|
|
|
@ -116,7 +116,16 @@ public class XSSFComment implements Comment {
|
||||||
_comment.setRef(ref.formatAsString());
|
_comment.setRef(ref.formatAsString());
|
||||||
_comments.referenceUpdated(oldRef, _comment);
|
_comments.referenceUpdated(oldRef, _comment);
|
||||||
|
|
||||||
if(_vmlShape != null) _vmlShape.getClientDataArray(0).setColumnArray(0, new BigInteger(String.valueOf(col)));
|
if(_vmlShape != null) {
|
||||||
|
_vmlShape.getClientDataArray(0).setColumnArray(
|
||||||
|
new BigInteger[] { new BigInteger(String.valueOf(col)) }
|
||||||
|
);
|
||||||
|
|
||||||
|
// There is a very odd xmlbeans bug when changing the column
|
||||||
|
// arrays which can lead to corrupt pointer
|
||||||
|
// This call seems to fix them again... See bug #50795
|
||||||
|
_vmlShape.getClientDataList().toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -620,4 +620,56 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
|
||||||
assertEquals("SUM(\n1,2\n)", c.getCellFormula());
|
assertEquals("SUM(\n1,2\n)", c.getCellFormula());
|
||||||
assertEquals(3.0, c.getNumericCellValue());
|
assertEquals(3.0, c.getNumericCellValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moving a cell comment from one cell to another
|
||||||
|
*/
|
||||||
|
public void test50795() throws Exception {
|
||||||
|
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50795.xlsx");
|
||||||
|
XSSFSheet sheet = wb.getSheetAt(0);
|
||||||
|
XSSFRow row = sheet.getRow(0);
|
||||||
|
|
||||||
|
XSSFCell cellWith = row.getCell(0);
|
||||||
|
XSSFCell cellWithoutComment = row.getCell(1);
|
||||||
|
|
||||||
|
assertNotNull(cellWith.getCellComment());
|
||||||
|
assertNull(cellWithoutComment.getCellComment());
|
||||||
|
|
||||||
|
String exp = "\u0410\u0432\u0442\u043e\u0440:\ncomment";
|
||||||
|
XSSFComment comment = cellWith.getCellComment();
|
||||||
|
assertEquals(exp, comment.getString().getString());
|
||||||
|
|
||||||
|
|
||||||
|
// Check we can write it out and read it back as-is
|
||||||
|
wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||||
|
sheet = wb.getSheetAt(0);
|
||||||
|
row = sheet.getRow(0);
|
||||||
|
cellWith = row.getCell(0);
|
||||||
|
cellWithoutComment = row.getCell(1);
|
||||||
|
|
||||||
|
// Double check things are as expected
|
||||||
|
assertNotNull(cellWith.getCellComment());
|
||||||
|
assertNull(cellWithoutComment.getCellComment());
|
||||||
|
comment = cellWith.getCellComment();
|
||||||
|
assertEquals(exp, comment.getString().getString());
|
||||||
|
|
||||||
|
|
||||||
|
// Move the comment
|
||||||
|
cellWithoutComment.setCellComment(comment);
|
||||||
|
|
||||||
|
|
||||||
|
// Write out and re-check
|
||||||
|
wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||||
|
sheet = wb.getSheetAt(0);
|
||||||
|
row = sheet.getRow(0);
|
||||||
|
|
||||||
|
// Ensure it swapped over
|
||||||
|
cellWith = row.getCell(0);
|
||||||
|
cellWithoutComment = row.getCell(1);
|
||||||
|
assertNull(cellWith.getCellComment());
|
||||||
|
assertNotNull(cellWithoutComment.getCellComment());
|
||||||
|
|
||||||
|
comment = cellWithoutComment.getCellComment();
|
||||||
|
assertEquals(exp, comment.getString().getString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue