You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2016/02/12 10:44:47 UTC
svn commit: r1729964 - in /poi/trunk/src/ooxml:
java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
Author: centic
Date: Fri Feb 12 09:44:47 2016
New Revision: 1729964
URL: http://svn.apache.org/viewvc?rev=1729964&view=rev
Log:
bug 58996: Don't try to unset fill color if it is not set to avoid invalid access inside the Xml structures
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java?rev=1729964&r1=1729963&r2=1729964&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java Fri Feb 12 09:44:47 2016
@@ -1075,7 +1075,7 @@ public void setBorderTop(short border) {
CTFill ct = getCTFill();
CTPatternFill ptrn = ct.getPatternFill();
if(color == null) {
- if(ptrn != null) ptrn.unsetBgColor();
+ if(ptrn != null && ptrn.isSetBgColor()) ptrn.unsetBgColor();
} else {
if(ptrn == null) ptrn = ct.addNewPatternFill();
ptrn.setBgColor(color.getCTColor());
@@ -1129,7 +1129,7 @@ public void setBorderTop(short border) {
CTPatternFill ptrn = ct.getPatternFill();
if(color == null) {
- if(ptrn != null) ptrn.unsetFgColor();
+ if(ptrn != null && ptrn.isSetFgColor()) ptrn.unsetFgColor();
} else {
if(ptrn == null) ptrn = ct.addNewPatternFill();
ptrn.setFgColor(color.getCTColor());
@@ -1211,8 +1211,8 @@ public void setBorderTop(short border) {
* @see #setFillForegroundColor(short)
* @param fp fill pattern (set to {@link org.apache.poi.ss.usermodel.CellStyle#SOLID_FOREGROUND} to fill w/foreground color)
*/
- @Override
-public void setFillPattern(short fp) {
+ @Override
+ public void setFillPattern(short fp) {
CTFill ct = getCTFill();
CTPatternFill ptrn = ct.isSetPatternFill() ? ct.getPatternFill() : ct.addNewPatternFill();
if(fp == NO_FILL && ptrn.isSetPatternType()) ptrn.unsetPatternType();
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java?rev=1729964&r1=1729963&r2=1729964&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java Fri Feb 12 09:44:47 2016
@@ -29,15 +29,7 @@ import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.DataFormat;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.IndexedColors;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.VerticalAlignment;
-import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
@@ -1086,4 +1078,31 @@ public class TestXSSFCellStyle {
cellStyle.setRotation((short)-90);
assertEquals(180, cellStyle.getRotation());
}
+
+ @Test
+ public void bug58996_UsedToWorkIn3_11_ButNotIn3_13() throws IOException {
+ XSSFWorkbook workbook = new XSSFWorkbook();
+
+ XSSFCellStyle cellStyle = workbook.createCellStyle();
+ cellStyle.setFillForegroundColor(null);
+ assertNull(cellStyle.getFillForegroundColorColor());
+
+ cellStyle.setFillBackgroundColor(null);
+ assertNull(cellStyle.getFillBackgroundColorColor());
+
+ cellStyle.setFillPattern(FillPatternType.NO_FILL);
+ assertEquals(FillPatternType.NO_FILL, cellStyle.getFillPatternEnum());
+
+ cellStyle.setBottomBorderColor(null);
+ assertNull(cellStyle.getBottomBorderXSSFColor());
+
+ cellStyle.setTopBorderColor(null);
+ assertNull(cellStyle.getTopBorderXSSFColor());
+
+ cellStyle.setLeftBorderColor(null);
+ assertNull(cellStyle.getLeftBorderXSSFColor());
+
+ cellStyle.setRightBorderColor(null);
+ assertNull(cellStyle.getRightBorderXSSFColor());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org