From 3403bef5a8daa5837276c6b7d95614550699d814 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 9 Jan 2015 16:52:23 +0000 Subject: [PATCH] Fix Eclipse warnings, provide better error message and adjust javadoc slightly git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1650598 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/openxml4j/opc/PackagePart.java | 2 +- .../apache/poi/xssf/streaming/SXSSFSheet.java | 2 + .../poi/ss/formula/TestWorkbookEvaluator.java | 52 +++++++++++-------- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java index 1420fd441..8b72770a7 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java @@ -168,7 +168,7 @@ public abstract class PackagePart implements RelationshipSource { public PackageRelationship addExternalRelationship(String target, String relationshipType, String id) { if (target == null) { - throw new IllegalArgumentException("target"); + throw new IllegalArgumentException("target is null for type " + relationshipType); } if (relationshipType == null) { throw new IllegalArgumentException("relationshipType"); diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java index 49817e5ea..904560673 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java @@ -98,6 +98,8 @@ public class SXSSFSheet implements Sheet, Cloneable * * @param rownum row number * @return high level Row object representing a row in the sheet + * @throws IllegalArgumentException If the max. number of rows is exceeded or + * a rownum is provided where the row is already flushed to disk. * @see #removeRow(Row) */ public Row createRow(int rownum) diff --git a/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java b/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java index 712335f85..b98984345 100644 --- a/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java +++ b/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java @@ -17,6 +17,8 @@ package org.apache.poi.ss.formula; +import java.io.IOException; + import junit.framework.AssertionFailedError; import junit.framework.TestCase; @@ -213,37 +215,43 @@ public class TestWorkbookEvaluator extends TestCase { /** * Functions like IF, INDIRECT, INDEX, OFFSET etc can return AreaEvals which * should be dereferenced by the evaluator + * @throws IOException */ - public void testResultOutsideRange() { + public void testResultOutsideRange() throws IOException { Workbook wb = new HSSFWorkbook(); - Cell cell = wb.createSheet("Sheet1").createRow(0).createCell(0); - cell.setCellFormula("D2:D5"); // IF(TRUE,D2:D5,D2) or OFFSET(D2:D5,0,0) would work too - FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator(); - CellValue cv; try { - cv = fe.evaluate(cell); - } catch (IllegalArgumentException e) { - if ("Specified row index (0) is outside the allowed range (1..4)".equals(e.getMessage())) { - throw new AssertionFailedError("Identified bug in result dereferencing"); - } - throw new RuntimeException(e); + Cell cell = wb.createSheet("Sheet1").createRow(0).createCell(0); + cell.setCellFormula("D2:D5"); // IF(TRUE,D2:D5,D2) or OFFSET(D2:D5,0,0) would work too + FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator(); + CellValue cv; + try { + cv = fe.evaluate(cell); + } catch (IllegalArgumentException e) { + if ("Specified row index (0) is outside the allowed range (1..4)".equals(e.getMessage())) { + throw new AssertionFailedError("Identified bug in result dereferencing"); + } + throw new RuntimeException(e); + } + assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType()); + assertEquals(ErrorConstants.ERROR_VALUE, cv.getErrorValue()); + + // verify circular refs are still detected properly + fe.clearAllCachedResultValues(); + cell.setCellFormula("OFFSET(A1,0,0)"); + cv = fe.evaluate(cell); + assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType()); + assertEquals(ErrorEval.CIRCULAR_REF_ERROR.getErrorCode(), cv.getErrorValue()); + } finally { + wb.close(); } - assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType()); - assertEquals(ErrorConstants.ERROR_VALUE, cv.getErrorValue()); - - // verify circular refs are still detected properly - fe.clearAllCachedResultValues(); - cell.setCellFormula("OFFSET(A1,0,0)"); - cv = fe.evaluate(cell); - assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType()); - assertEquals(ErrorEval.CIRCULAR_REF_ERROR.getErrorCode(), cv.getErrorValue()); } /** * formulas with defined names. + * @throws IOException */ - public void testNamesInFormulas() { + public void testNamesInFormulas() throws IOException { Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("Sheet1"); @@ -279,6 +287,8 @@ public class TestWorkbookEvaluator extends TestCase { assertEquals(10.0, fe.evaluate(row1.getCell(2)).getNumberValue()); assertEquals(15.0, fe.evaluate(row2.getCell(2)).getNumberValue()); assertEquals(28.14, fe.evaluate(row3.getCell(2)).getNumberValue()); + + wb.close(); } }