From b72e9510e5271ecc5a43ad02be6149031def92e6 Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Mon, 22 Aug 2016 17:57:45 +0000 Subject: [PATCH] bug 59791: improve Cell.CELL_TYPE_* backwards compatibility git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1757235 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/ss/usermodel/Cell.java | 12 ++++---- .../TestHSSFConditionalFormatting.java | 18 +++++------ .../apache/poi/ss/usermodel/BaseTestCell.java | 30 +++++++++++++++++++ 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/src/java/org/apache/poi/ss/usermodel/Cell.java b/src/java/org/apache/poi/ss/usermodel/Cell.java index 95840a6c01..e333f8528f 100644 --- a/src/java/org/apache/poi/ss/usermodel/Cell.java +++ b/src/java/org/apache/poi/ss/usermodel/Cell.java @@ -46,7 +46,7 @@ public interface Cell { * @see #getCellType() * @deprecated POI 3.15 beta 3. Use {@link CellType#NUMERIC} instead. */ - CellType CELL_TYPE_NUMERIC = CellType.NUMERIC; + int CELL_TYPE_NUMERIC = 0; //CellType.NUMERIC.getCode(); /** * String Cell type (1) @@ -54,7 +54,7 @@ public interface Cell { * @see #getCellType() * @deprecated POI 3.15 beta 3. Use {@link CellType#STRING} instead. */ - CellType CELL_TYPE_STRING = CellType.STRING; + int CELL_TYPE_STRING = 1; //CellType.STRING.getCode(); /** * Formula Cell type (2) @@ -62,7 +62,7 @@ public interface Cell { * @see #getCellType() * @deprecated POI 3.15 beta 3. Use {@link CellType#FORMULA} instead. */ - CellType CELL_TYPE_FORMULA = CellType.FORMULA; + int CELL_TYPE_FORMULA = 2; //CellType.FORMULA.getCode(); /** * Blank Cell type (3) @@ -70,7 +70,7 @@ public interface Cell { * @see #getCellType() * @deprecated POI 3.15 beta 3. Use {@link CellType#BLANK} instead. */ - CellType CELL_TYPE_BLANK = CellType.BLANK; + int CELL_TYPE_BLANK = 3; //CellType.BLANK.getCode(); /** * Boolean Cell type (4) @@ -78,7 +78,7 @@ public interface Cell { * @see #getCellType() * @deprecated POI 3.15 beta 3. Use {@link CellType#BOOLEAN} instead. */ - CellType CELL_TYPE_BOOLEAN = CellType.BOOLEAN; + int CELL_TYPE_BOOLEAN = 4; //CellType.BOOLEAN.getCode(); /** * Error Cell type (5) @@ -86,7 +86,7 @@ public interface Cell { * @see #getCellType() * @deprecated POI 3.15 beta 3. Use {@link CellType#ERROR} instead. */ - CellType CELL_TYPE_ERROR = CellType.ERROR; + int CELL_TYPE_ERROR = 5; //CellType.ERROR.getCode(); /** * Returns column index of this cell diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java index ede6a6df1e..e594fdec96 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java @@ -136,45 +136,45 @@ public final class TestHSSFConditionalFormatting extends BaseTestConditionalForm Row row = sheet.createRow(0); Cell cell0 = row.createCell(0); - cell0.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell0.setCellType(CellType.NUMERIC); cell0.setCellValue(100); Cell cell1 = row.createCell(1); - cell1.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell1.setCellType(CellType.NUMERIC); cell1.setCellValue(120); Cell cell2 = row.createCell(2); - cell2.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell2.setCellType(CellType.NUMERIC); cell2.setCellValue(130); // row 1 row = sheet.createRow(1); cell0 = row.createCell(0); - cell0.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell0.setCellType(CellType.NUMERIC); cell0.setCellValue(200); cell1 = row.createCell(1); - cell1.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell1.setCellType(CellType.NUMERIC); cell1.setCellValue(220); cell2 = row.createCell(2); - cell2.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell2.setCellType(CellType.NUMERIC); cell2.setCellValue(230); // row 2 row = sheet.createRow(2); cell0 = row.createCell(0); - cell0.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell0.setCellType(CellType.NUMERIC); cell0.setCellValue(300); cell1 = row.createCell(1); - cell1.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell1.setCellType(CellType.NUMERIC); cell1.setCellValue(320); cell2 = row.createCell(2); - cell2.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC); + cell2.setCellType(CellType.NUMERIC); cell2.setCellValue(330); // Create conditional formatting, CELL1 should be yellow if CELL0 is not blank. diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java index b2ae06cb9a..db46687c12 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java @@ -1015,4 +1015,34 @@ public abstract class BaseTestCell { wb.close(); } + + @Test + public void primitiveToEnumReplacementDoesNotBreakBackwardsCompatibility() { + // bug 59836 + // until we have changes POI from working on primitives (int) to enums, + // we should make sure we minimize backwards compatibility breakages. + // This method tests the old way of working with cell types, alignment, etc. + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + Row row = sheet.createRow(0); + Cell cell = row.createCell(0); + + // Cell.CELL_TYPE_* -> CellType.* + cell.setCellValue(5.0); + assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType()); + assertEquals(CellType.NUMERIC, cell.getCellTypeEnum()); // make sure old way and new way are compatible + + // make sure switch(int|Enum) still works. Cases must be statically resolvable in Java 6 ("constant expression required") + switch(cell.getCellType()) { + case Cell.CELL_TYPE_NUMERIC: + // expected + break; + case Cell.CELL_TYPE_STRING: + case Cell.CELL_TYPE_ERROR: + case Cell.CELL_TYPE_FORMULA: + case Cell.CELL_TYPE_BLANK: + default: + fail("unexpected cell type: " + cell.getCellType()); + } + } } -- 2.39.5