You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2016/09/28 21:01:41 UTC

svn commit: r1762709 [1/2] - in /poi/branches/hssf_cryptoapi: ./ sonar/ sonar/examples/ sonar/excelant/ sonar/main/ sonar/ooxml-schema-encryption/ sonar/ooxml-schema-security/ sonar/ooxml-schema/ sonar/ooxml/ sonar/scratchpad/ src/examples/src/org/apac...

Author: kiwiwings
Date: Wed Sep 28 21:01:40 2016
New Revision: 1762709

URL: http://svn.apache.org/viewvc?rev=1762709&view=rev
Log:
merge trunk to branch

Added:
    poi/branches/hssf_cryptoapi/build.gradle
      - copied unchanged from r1762707, poi/trunk/build.gradle
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/BaseTestXSSFPivotTable.java
      - copied unchanged from r1762707, poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/BaseTestXSSFPivotTable.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTableName.java
      - copied unchanged from r1762707, poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTableName.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTableRef.java
      - copied unchanged from r1762707, poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTableRef.java
    poi/branches/hssf_cryptoapi/test-data/document/57843.doc
      - copied unchanged from r1762707, poi/trunk/test-data/document/57843.doc
    poi/branches/hssf_cryptoapi/test-data/document/60158.docm
      - copied unchanged from r1762707, poi/trunk/test-data/document/60158.docm
    poi/branches/hssf_cryptoapi/test-data/spreadsheet/45565.xls
      - copied unchanged from r1762707, poi/trunk/test-data/spreadsheet/45565.xls
    poi/branches/hssf_cryptoapi/test-data/spreadsheet/59687.xlsx
      - copied unchanged from r1762707, poi/trunk/test-data/spreadsheet/59687.xlsx
    poi/branches/hssf_cryptoapi/test-data/spreadsheet/TestShiftRowSharedFormula.xlsx
      - copied unchanged from r1762707, poi/trunk/test-data/spreadsheet/TestShiftRowSharedFormula.xlsx
Removed:
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTable.java
Modified:
    poi/branches/hssf_cryptoapi/KEYS
    poi/branches/hssf_cryptoapi/build.xml
    poi/branches/hssf_cryptoapi/doap_POI.rdf
    poi/branches/hssf_cryptoapi/sonar/examples/pom.xml
    poi/branches/hssf_cryptoapi/sonar/excelant/pom.xml
    poi/branches/hssf_cryptoapi/sonar/main/pom.xml
    poi/branches/hssf_cryptoapi/sonar/ooxml-schema-encryption/pom.xml
    poi/branches/hssf_cryptoapi/sonar/ooxml-schema-security/pom.xml
    poi/branches/hssf_cryptoapi/sonar/ooxml-schema/pom.xml
    poi/branches/hssf_cryptoapi/sonar/ooxml/pom.xml
    poi/branches/hssf_cryptoapi/sonar/pom.xml
    poi/branches/hssf_cryptoapi/sonar/scratchpad/pom.xml
    poi/branches/hssf_cryptoapi/src/examples/src/org/apache/poi/hssf/usermodel/examples/InCellLists.java
    poi/branches/hssf_cryptoapi/src/integrationtest/org/apache/poi/TestAllFiles.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/formula/functions/Bin2Dec.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellStyle.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellValue.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/Workbook.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/util/SheetUtil.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/CommonsLogger.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/NullLogger.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogFactory.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogger.java
    poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/SystemOutLogger.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/util/OOXMLLite.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPivotCacheDefinition.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java
    poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowShifter.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/ss/formula/functions/TestProper.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
    poi/branches/hssf_cryptoapi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java
    poi/branches/hssf_cryptoapi/src/scratchpad/src/org/apache/poi/hmef/Attachment.java
    poi/branches/hssf_cryptoapi/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToFoUtils.java
    poi/branches/hssf_cryptoapi/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/POITestCase.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/ss/formula/atp/TestIfError.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/util/DummyPOILogger.java
    poi/branches/hssf_cryptoapi/src/testcases/org/apache/poi/util/TestPOILogger.java
    poi/branches/hssf_cryptoapi/test-data/diagram/44501a.vsd   (props changed)
    poi/branches/hssf_cryptoapi/test-data/diagram/44501b.vsd   (props changed)
    poi/branches/hssf_cryptoapi/test-data/diagram/44501d.vsd   (props changed)
    poi/branches/hssf_cryptoapi/test-data/hsmf/logsat.com_signatures_valid.msg   (props changed)
    poi/branches/hssf_cryptoapi/test-data/slideshow/aascu.org_workarea_downloadasset.aspx_id=5864.pptx   (props changed)
    poi/branches/hssf_cryptoapi/test-data/slideshow/br.com.diversas.palestras_Nelson_20-_20Temas_20Diversos_20XXXVI_pmrg_462538ba7a204-programa_alianca_12-04-2007.ppt   (props changed)
    poi/branches/hssf_cryptoapi/test-data/slideshow/br.com.tvcamboriu.www_pps_Pensar_5b1_5d.ppt   (props changed)
    poi/branches/hssf_cryptoapi/test-data/spreadsheet/Themes2.xls   (props changed)
    poi/branches/hssf_cryptoapi/test-data/spreadsheet/at.gv.land-oberoesterreich.www_cps_rde_xbcr_SID-4A1B954F-5C07F98E_ooe_stat_download_bp10.xls   (props changed)
    poi/branches/hssf_cryptoapi/test-data/spreadsheet/craftonhills.edu_programreview_report.aspx_goalpriorityreport_0011d159-1eeb-4b63-8833-867b0926e5f3.xlsx   (props changed)
    poi/branches/hssf_cryptoapi/test-data/spreadsheet/noSharedStringTable.xlsx   (props changed)

Modified: poi/branches/hssf_cryptoapi/KEYS
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/KEYS?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/KEYS (original)
+++ poi/branches/hssf_cryptoapi/KEYS Wed Sep 28 21:01:40 2016
@@ -2386,3 +2386,102 @@ cCRRHYCeAZDU5UMxi0nonfT+060i2rLPSd7o0bst
 YobtRLhWHvHyWS4dKqiteeTwAqG2ZFOq98KCu1LXMKj42HqwOtB3L23HlhqVyA==
 =8e4G
 -----END PGP PUBLIC KEY BLOCK-----
+pub   4096R/8BABDD6C 2015-10-10 [expires: 2017-10-09]
+uid                  Javen O'Neal <ja...@gmail.com>
+uid                  Javen O'Neal <on...@apache.org>
+sub   4096R/309424B4 2015-10-10 [expires: 2017-10-09]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.22 (GNU/Linux)
+
+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
+2Nr+AmDDs6ZOEI5zhwxioePw/Cg=
+=9lKb
+-----END PGP PUBLIC KEY BLOCK-----

Modified: poi/branches/hssf_cryptoapi/build.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/build.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/build.xml (original)
+++ poi/branches/hssf_cryptoapi/build.xml Wed Sep 28 21:01:40 2016
@@ -40,7 +40,7 @@ under the License.
 
     <description>The Apache POI project Ant build.</description>
 
-    <property name="version.id" value="3.16-beta1"/>
+    <property name="version.id" value="3.15-beta4"/>
     <property name="release.rc" value="RC1"/>
 
     <property environment="env"/>
@@ -78,7 +78,7 @@ under the License.
       JVM system properties for running tests,
       user.language and user.country are required as we have locale-sensitive formatters
     -->
-    <property name="testpattern" value="Test*"/>
+    <property name="testpattern" value="Test*"/> <!--note: this excludes BaseTest* -->
     <property name="POI.testdata.path" value="test-data"/>
     <property name="java.awt.headless" value="true"/>
     <property name="additionaljar" value=""/>

Modified: poi/branches/hssf_cryptoapi/doap_POI.rdf
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/doap_POI.rdf?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/doap_POI.rdf (original)
+++ poi/branches/hssf_cryptoapi/doap_POI.rdf Wed Sep 28 21:01:40 2016
@@ -37,6 +37,13 @@
     <category rdf:resource="http://projects.apache.org/category/library" />
     <release>
       <Version>
+        <name>Apache POI 3.15</name>
+        <created>2016-09-21</created>
+        <revision>3.15</revision>
+      </Version>
+    </release>
+    <release>
+      <Version>
         <name>Apache POI 3.14</name>
         <created>2016-03-05</created>
         <revision>3.14</revision>

Modified: poi/branches/hssf_cryptoapi/sonar/examples/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/examples/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/examples/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/examples/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
     </parent>
     <artifactId>poi-examples</artifactId>
     <packaging>jar</packaging>

Modified: poi/branches/hssf_cryptoapi/sonar/excelant/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/excelant/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/excelant/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/excelant/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
     </parent>
     <artifactId>poi-excelant</artifactId>
     <packaging>jar</packaging>

Modified: poi/branches/hssf_cryptoapi/sonar/main/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/main/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/main/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/main/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
     </parent>
     <artifactId>poi-main</artifactId>
     <packaging>jar</packaging>

Modified: poi/branches/hssf_cryptoapi/sonar/ooxml-schema-encryption/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/ooxml-schema-encryption/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/ooxml-schema-encryption/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/ooxml-schema-encryption/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
     <artifactId>poi-ooxml-schema-encryption</artifactId>

Modified: poi/branches/hssf_cryptoapi/sonar/ooxml-schema-security/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/ooxml-schema-security/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/ooxml-schema-security/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/ooxml-schema-security/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
     <artifactId>poi-ooxml-schema-security</artifactId>

Modified: poi/branches/hssf_cryptoapi/sonar/ooxml-schema/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/ooxml-schema/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/ooxml-schema/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/ooxml-schema/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
     <artifactId>poi-ooxml-schema</artifactId>

Modified: poi/branches/hssf_cryptoapi/sonar/ooxml/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/ooxml/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/ooxml/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/ooxml/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
     </parent>
     <artifactId>poi-ooxml</artifactId>
     <packaging>jar</packaging>

Modified: poi/branches/hssf_cryptoapi/sonar/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/pom.xml Wed Sep 28 21:01:40 2016
@@ -3,7 +3,7 @@
 	<groupId>org.apache.poi</groupId>
 	<artifactId>poi-parent</artifactId>
 	<packaging>pom</packaging>
-	<version>3.16-beta1-SNAPSHOT</version>
+	<version>3.15-beta4-SNAPSHOT</version>
 	<name>Apache POI - the Java API for Microsoft Documents</name>
 	<description>Maven build of Apache POI for Sonar checks</description>
 	<url>http://poi.apache.org/</url>

Modified: poi/branches/hssf_cryptoapi/sonar/scratchpad/pom.xml
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/sonar/scratchpad/pom.xml?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/sonar/scratchpad/pom.xml (original)
+++ poi/branches/hssf_cryptoapi/sonar/scratchpad/pom.xml Wed Sep 28 21:01:40 2016
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-parent</artifactId>
-        <version>3.16-beta1-SNAPSHOT</version>
+        <version>3.15-beta4-SNAPSHOT</version>
     </parent>
     <artifactId>poi-scratchpad</artifactId>
     <packaging>jar</packaging>

Modified: poi/branches/hssf_cryptoapi/src/examples/src/org/apache/poi/hssf/usermodel/examples/InCellLists.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/examples/src/org/apache/poi/hssf/usermodel/examples/InCellLists.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/examples/src/org/apache/poi/hssf/usermodel/examples/InCellLists.java (original)
+++ poi/branches/hssf_cryptoapi/src/examples/src/org/apache/poi/hssf/usermodel/examples/InCellLists.java Wed Sep 28 21:01:40 2016
@@ -67,27 +67,21 @@ public class InCellLists {
      *                       the Excel spreadsheet file this code will create.
      */
     public void demonstrateMethodCalls(String outputFilename) throws IOException {
-        HSSFWorkbook workbook = null;
-        HSSFSheet sheet = null;
-        HSSFRow row = null;
-        HSSFCell cell = null;
-        ArrayList<MultiLevelListItem> multiLevelListItems = null;
-        ArrayList<String> listItems = null;
+        HSSFWorkbook workbook = new HSSFWorkbook();
         try {
-            workbook = new HSSFWorkbook();
-            sheet = workbook.createSheet("In Cell Lists");
-            row = sheet.createRow(0);
+            HSSFSheet sheet = workbook.createSheet("In Cell Lists");
+            HSSFRow row = sheet.createRow(0);
 
             // Create a cell at A1 and insert a single, bulleted, item into
             // that cell.
-            cell = row.createCell(0);
+            HSSFCell cell = row.createCell(0);
             this.bulletedItemInCell(workbook, "List Item", cell);
 
             // Create a cell at A2 and insert a plain list - that is one
             // whose items are neither bulleted or numbered - into that cell.
             row = sheet.createRow(1);
             cell = row.createCell(0);
-            listItems = new ArrayList<String>();
+            ArrayList<String> listItems = new ArrayList<String>();
             listItems.add("List Item One.");
             listItems.add("List Item Two.");
             listItems.add("List Item Three.");
@@ -131,7 +125,7 @@ public class InCellLists {
             // to preserve order.
             row = sheet.createRow(4);
             cell = row.createCell(0);
-            multiLevelListItems = new ArrayList<MultiLevelListItem>();
+            ArrayList<MultiLevelListItem> multiLevelListItems = new ArrayList<MultiLevelListItem>();
             listItems = new ArrayList<String>();
             listItems.add("ML List Item One - Sub Item One.");
             listItems.add("ML List Item One - Sub Item Two.");
@@ -189,9 +183,7 @@ public class InCellLists {
             ioEx.printStackTrace(System.out);
         }
         finally {
-            if (workbook != null) {
-                workbook.close();
-            }
+            workbook.close();
         }
     }
 
@@ -236,7 +228,7 @@ public class InCellLists {
      *             will be written.
      */
     public void listInCell(HSSFWorkbook workbook, ArrayList<String> listItems, HSSFCell cell) {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
         HSSFCellStyle wrapStyle = workbook.createCellStyle();
         wrapStyle.setWrapText(true);
         for(String listItem : listItems) {
@@ -269,7 +261,7 @@ public class InCellLists {
                                    HSSFCell cell,
                                    int startingValue,
                                    int increment) {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
         int itemNumber = startingValue;
         // Note that again, an HSSFCellStye object is required and that
         // it's wrap text property should be set to 'true'
@@ -278,7 +270,7 @@ public class InCellLists {
         // Note that the basic method is identical to the listInCell() method
         // with one difference; a number prefixed to the items text.
         for(String listItem : listItems) {
-            buffer.append(String.valueOf(itemNumber) + ". ");
+            buffer.append(itemNumber).append(". ");
             buffer.append(listItem);
             buffer.append("\n");
             itemNumber += increment;
@@ -303,7 +295,7 @@ public class InCellLists {
     public void bulletedListInCell(HSSFWorkbook workbook,
                                    ArrayList<String> listItems,
                                    HSSFCell cell) {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
         // Note that again, an HSSFCellStye object is required and that
         // it's wrap text property should be set to 'true'
         HSSFCellStyle wrapStyle = workbook.createCellStyle();
@@ -339,8 +331,7 @@ public class InCellLists {
     public void multiLevelListInCell(HSSFWorkbook workbook,
                                      ArrayList<MultiLevelListItem> multiLevelListItems,
                                      HSSFCell cell) {
-        StringBuffer buffer = new StringBuffer();
-        ArrayList<String> lowerLevelItems = null;
+        StringBuilder buffer = new StringBuilder();
         // Note that again, an HSSFCellStye object is required and that
         // it's wrap text property should be set to 'true'
         HSSFCellStyle wrapStyle = workbook.createCellStyle();
@@ -353,7 +344,7 @@ public class InCellLists {
             buffer.append("\n");
             // and then an ArrayList whose elements encapsulate the text
             // for the lower level list items.
-            lowerLevelItems = multiLevelListItem.getLowerLevelItems();
+            ArrayList<String> lowerLevelItems = multiLevelListItem.getLowerLevelItems();
             if(!(lowerLevelItems == null) && !(lowerLevelItems.isEmpty())) {
                 for(String item : lowerLevelItems) {
                     buffer.append(InCellLists.TAB);
@@ -401,10 +392,8 @@ public class InCellLists {
                                              int highLevelIncrement,
                                              int lowLevelStartingValue,
                                              int lowLevelIncrement) {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
         int highLevelItemNumber = highLevelStartingValue;
-        int lowLevelItemNumber = 0;
-        ArrayList<String> lowerLevelItems = null;
         // Note that again, an HSSFCellStye object is required and that
         // it's wrap text property should be set to 'true'
         HSSFCellStyle wrapStyle = workbook.createCellStyle();
@@ -413,20 +402,20 @@ public class InCellLists {
         for(MultiLevelListItem multiLevelListItem : multiLevelListItems) {
             // For each element in the ArrayList, get the text for the high
             // level list item......
-            buffer.append(String.valueOf(highLevelItemNumber));
+            buffer.append(highLevelItemNumber);
             buffer.append(". ");
             buffer.append(multiLevelListItem.getItemText());
             buffer.append("\n");
             // and then an ArrayList whose elements encapsulate the text
             // for the lower level list items.
-            lowerLevelItems = multiLevelListItem.getLowerLevelItems();
+            ArrayList<String> lowerLevelItems = multiLevelListItem.getLowerLevelItems();
             if(!(lowerLevelItems == null) && !(lowerLevelItems.isEmpty())) {
-                lowLevelItemNumber = lowLevelStartingValue;
+                int lowLevelItemNumber = lowLevelStartingValue;
                 for(String item : lowerLevelItems) {
                     buffer.append(InCellLists.TAB);
-                    buffer.append(String.valueOf(highLevelItemNumber));
+                    buffer.append(highLevelItemNumber);
                     buffer.append(".");
-                    buffer.append(String.valueOf(lowLevelItemNumber));
+                    buffer.append(lowLevelItemNumber);
                     buffer.append(" ");
                     buffer.append(item);
                     buffer.append("\n");
@@ -459,8 +448,7 @@ public class InCellLists {
     public void multiLevelBulletedListInCell(HSSFWorkbook workbook,
                                              ArrayList<MultiLevelListItem> multiLevelListItems,
                                              HSSFCell cell) {
-        StringBuffer buffer = new StringBuffer();
-        ArrayList<String> lowerLevelItems = null;
+        StringBuilder buffer = new StringBuilder();
         // Note that again, an HSSFCellStye object is required and that
         // it's wrap text property should be set to 'true'
         HSSFCellStyle wrapStyle = workbook.createCellStyle();
@@ -475,7 +463,7 @@ public class InCellLists {
             buffer.append("\n");
             // and then an ArrayList whose elements encapsulate the text
             // for the lower level list items.
-            lowerLevelItems = multiLevelListItem.getLowerLevelItems();
+            ArrayList<String> lowerLevelItems = multiLevelListItem.getLowerLevelItems();
             if(!(lowerLevelItems == null) && !(lowerLevelItems.isEmpty())) {
                 for(String item : lowerLevelItems) {
                     buffer.append(InCellLists.TAB);

Modified: poi/branches/hssf_cryptoapi/src/integrationtest/org/apache/poi/TestAllFiles.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/integrationtest/org/apache/poi/TestAllFiles.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/integrationtest/org/apache/poi/TestAllFiles.java (original)
+++ poi/branches/hssf_cryptoapi/src/integrationtest/org/apache/poi/TestAllFiles.java Wed Sep 28 21:01:40 2016
@@ -232,6 +232,7 @@ public class TestAllFiles {
         EXPECTED_FAILURES.add("spreadsheet/43493.xls");
         EXPECTED_FAILURES.add("spreadsheet/46904.xls");
         EXPECTED_FAILURES.add("document/Bug50955.doc");
+        EXPECTED_FAILURES.add("document/57843.doc");
         EXPECTED_FAILURES.add("slideshow/PPT95.ppt");
         EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DCTermsNamespaceLimitedUseFAIL.docx");
         EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DoNotUseCompatibilityMarkupFAIL.docx");

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java Wed Sep 28 21:01:40 2016
@@ -20,7 +20,6 @@ package org.apache.poi.hssf.usermodel;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 import java.util.Vector;
 
 import org.apache.poi.hssf.model.InternalWorkbook;
@@ -90,7 +89,7 @@ public final class HSSFDataFormat implem
 	public short getFormat(String pFormat) {
 	   // Normalise the format string
 		String format;
-		if (pFormat.toUpperCase(Locale.ROOT).equals("TEXT")) {
+		if (pFormat.equalsIgnoreCase("TEXT")) {
 			format = "@";
 		} else {
 			format = pFormat;

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java Wed Sep 28 21:01:40 2016
@@ -32,7 +32,6 @@ import org.apache.poi.ss.formula.udf.UDF
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellValue;
 import org.apache.poi.ss.usermodel.FormulaEvaluator;
-import org.apache.poi.ss.usermodel.RichTextString;
 import org.apache.poi.ss.usermodel.Workbook;
 
 /**
@@ -80,11 +79,6 @@ public class HSSFFormulaEvaluator extend
     public static HSSFFormulaEvaluator create(HSSFWorkbook workbook, IStabilityClassifier stabilityClassifier, UDFFinder udfFinder) {
         return new HSSFFormulaEvaluator(workbook, stabilityClassifier, udfFinder);
     }
-    
-    @Override
-    protected RichTextString createRichTextString(String str) {
-        return new HSSFRichTextString(str);
-    }
 
 
     /**
@@ -140,10 +134,87 @@ public class HSSFFormulaEvaluator extend
     public void notifySetFormula(Cell cell) {
         _bookEvaluator.notifyUpdateCell(new HSSFEvaluationCell((HSSFCell)cell));
     }
-    
+
+    /**
+     * If cell contains formula, it evaluates the formula, and saves the result of the formula. The
+     * cell remains as a formula cell. If the cell does not contain formula, rather than throwing an
+     * exception, this method returns {@link CellType#_NONE} and leaves the cell unchanged.
+     *
+     * Note that the type of the <em>formula result</em> is returned, so you know what kind of
+     * cached formula result is also stored with  the formula.
+     * <pre>
+     * CellType evaluatedCellType = evaluator.evaluateFormulaCell(cell);
+     * </pre>
+     * Be aware that your cell will hold both the formula, and the result. If you want the cell
+     * replaced with the result of the formula, use {@link #evaluateInCell(org.apache.poi.ss.usermodel.Cell)}
+     * @param cell The cell to evaluate
+     * @return {@link CellType#_NONE} for non-formula cells, or the type of the <em>formula result</em>
+     * @since POI 3.15 beta 3
+     * @deprecated POI 3.15 beta 3. Will be deleted when we make the CellType enum transition. See bug 59791.
+     */
+    @Internal
+    @Override
+    public CellType evaluateFormulaCellEnum(Cell cell) {
+        if (cell == null || cell.getCellTypeEnum() != CellType.FORMULA) {
+            return CellType._NONE;
+        }
+        CellValue cv = evaluateFormulaCellValue(cell);
+        // cell remains a formula cell, but the cached value is changed
+        setCellValue(cell, cv);
+        return cv.getCellType();
+    }
+
+    /**
+     * If cell contains formula, it evaluates the formula, and
+     *  puts the formula result back into the cell, in place
+     *  of the old formula.
+     * Else if cell does not contain formula, this method leaves
+     *  the cell unchanged.
+     * Note that the same instance of HSSFCell is returned to
+     * allow chained calls like:
+     * <pre>
+     * int evaluatedCellType = evaluator.evaluateInCell(cell).getCellType();
+     * </pre>
+     * Be aware that your cell value will be changed to hold the
+     *  result of the formula. If you simply want the formula
+     *  value computed for you, use {@link #evaluateFormulaCellEnum(Cell)}}
+     */
     @Override
     public HSSFCell evaluateInCell(Cell cell) {
-        return (HSSFCell) super.evaluateInCell(cell);
+        if (cell == null) {
+            return null;
+        }
+        HSSFCell result = (HSSFCell) cell;
+        if (cell.getCellTypeEnum() == CellType.FORMULA) {
+            CellValue cv = evaluateFormulaCellValue(cell);
+            setCellValue(cell, cv);
+            setCellType(cell, cv); // cell will no longer be a formula cell
+        }
+        return result;
+    }
+
+    private static void setCellValue(Cell cell, CellValue cv) {
+        CellType cellType = cv.getCellType();
+        switch (cellType) {
+            case BOOLEAN:
+                cell.setCellValue(cv.getBooleanValue());
+                break;
+            case ERROR:
+                cell.setCellErrorValue(cv.getErrorValue());
+                break;
+            case NUMERIC:
+                cell.setCellValue(cv.getNumberValue());
+                break;
+            case STRING:
+                cell.setCellValue(new HSSFRichTextString(cv.getStringValue()));
+                break;
+            case BLANK:
+                // never happens - blanks eventually get translated to zero
+            case FORMULA:
+                // this will never happen, we have already evaluated the formula
+            default:
+                throw new IllegalStateException("Unexpected cell value type (" + cellType + ")");
+        }
     }
 
     /**

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java Wed Sep 28 21:01:40 2016
@@ -963,8 +963,9 @@ public final class HSSFWorkbook extends
      * Get the HSSFSheet object at the given index.
      * @param index of the sheet number (0-based physical & logical)
      * @return HSSFSheet at the provided index
+     * @throws IllegalArgumentException if the index is out of range (index
+     *            &lt; 0 || index &gt;= getNumberOfSheets()).
      */
-
     @Override
     public HSSFSheet getSheetAt(int index)
     {

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java Wed Sep 28 21:01:40 2016
@@ -88,27 +88,26 @@ public class FileBackedDataSource extend
          throw new IndexOutOfBoundsException("Position " + position + " past the end of the file");
       }
       
-      // Do we read or map (for read/write?
+      // Do we read or map (for read/write)?
       ByteBuffer dst;
-      int worked = -1;
       if (writable) {
           dst = channel.map(FileChannel.MapMode.READ_WRITE, position, length);
-          worked = 0;
-          // remember the buffer for cleanup if necessary
-          buffersToClean.add(dst);  
+
+          // remember this buffer for cleanup
+          buffersToClean.add(dst);
       } else {
-          // Read
+          // allocate the buffer on the heap if we cannot map the data in directly
           channel.position(position);
           dst = ByteBuffer.allocate(length);
-          worked = IOUtils.readFully(channel, dst);
-      }
 
-      // Check
-      if(worked == -1) {
-         throw new IndexOutOfBoundsException("Position " + position + " past the end of the file");
+          // Read the contents and check that we could read some data
+          int worked = IOUtils.readFully(channel, dst);
+          if(worked == -1) {
+              throw new IndexOutOfBoundsException("Position " + position + " past the end of the file");
+          }
       }
 
-      // Ready it for reading
+      // make it ready for reading
       dst.position(0);
 
       // All done

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/formula/functions/Bin2Dec.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/formula/functions/Bin2Dec.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/formula/functions/Bin2Dec.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/formula/functions/Bin2Dec.java Wed Sep 28 21:01:40 2016
@@ -84,7 +84,7 @@ public class Bin2Dec extends Fixed1ArgFu
                 //Add 1 to obtained number
                 sum++;
     
-                value = "-" + String.valueOf(sum);
+                value = "-" + sum;
             }
         } catch (NumberFormatException e) {
             return ErrorEval.NUM_ERROR;

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellStyle.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellStyle.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellStyle.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellStyle.java Wed Sep 28 21:01:40 2016
@@ -26,308 +26,308 @@ public interface CellStyle {
      * @deprecated POI 3.15 beta 3. Use {@link HorizontalAlignment#GENERAL} instead.
      */
     @Removal(version="3.17")
-    static final short ALIGN_GENERAL = 0x0; //HorizontalAlignment.GENERAL.getCode();
+    short ALIGN_GENERAL = 0x0; //HorizontalAlignment.GENERAL.getCode();
 
     /**
      * left-justified horizontal alignment
      * @deprecated POI 3.15 beta 3. Use {@link HorizontalAlignment#LEFT} instead.
      */
     @Removal(version="3.17")
-    static final short ALIGN_LEFT = 0x1; //HorizontalAlignment.LEFT.getCode();
+    short ALIGN_LEFT = 0x1; //HorizontalAlignment.LEFT.getCode();
 
     /**
      * center horizontal alignment
      * @deprecated POI 3.15 beta 3. Use {@link HorizontalAlignment#CENTER} instead.
      */
     @Removal(version="3.17")
-    static final short ALIGN_CENTER = 0x2; //HorizontalAlignment.CENTER.getCode();
+    short ALIGN_CENTER = 0x2; //HorizontalAlignment.CENTER.getCode();
 
     /**
      * right-justified horizontal alignment
      * @deprecated POI 3.15 beta 3. Use {@link HorizontalAlignment#RIGHT} instead.
      */
     @Removal(version="3.17")
-    static final short ALIGN_RIGHT = 0x3; //HorizontalAlignment.RIGHT.getCode();
+    short ALIGN_RIGHT = 0x3; //HorizontalAlignment.RIGHT.getCode();
 
     /**
      * fill? horizontal alignment
      * @deprecated POI 3.15 beta 3. Use {@link HorizontalAlignment#FILL} instead.
      */
     @Removal(version="3.17")
-    static final short ALIGN_FILL = 0x4; //HorizontalAlignment.FILL.getCode();
+    short ALIGN_FILL = 0x4; //HorizontalAlignment.FILL.getCode();
 
     /**
      * justified horizontal alignment
      * @deprecated POI 3.15 beta 3. Use {@link HorizontalAlignment#JUSTIFY} instead.
      */
     @Removal(version="3.17")
-    static final short ALIGN_JUSTIFY = 0x5; //HorizontalAlignment.JUSTIFY.getCode();
+    short ALIGN_JUSTIFY = 0x5; //HorizontalAlignment.JUSTIFY.getCode();
 
     /**
      * center-selection? horizontal alignment
      * @deprecated POI 3.15 beta 3. Use {@link HorizontalAlignment#CENTER_SELECTION} instead.
      */
     @Removal(version="3.17")
-    static final short ALIGN_CENTER_SELECTION = 0x6; //HorizontalAlignment.CENTER_SELECTION.getCode();
+    short ALIGN_CENTER_SELECTION = 0x6; //HorizontalAlignment.CENTER_SELECTION.getCode();
 
     /**
      * top-aligned vertical alignment
      * @deprecated POI 3.15 beta 3. Use {@link VerticalAlignment#TOP} instead.
      */
     @Removal(version="3.17")
-    static final short VERTICAL_TOP = 0x0; //VerticalAlignment.TOP.getCode();
+    short VERTICAL_TOP = 0x0; //VerticalAlignment.TOP.getCode();
 
     /**
      * center-aligned vertical alignment
      * @deprecated POI 3.15 beta 3. Use {@link VerticalAlignment#CENTER} instead.
      */
     @Removal(version="3.17")
-    static final short VERTICAL_CENTER = 0x1; //VerticalAlignment.CENTER.getCode();
+    short VERTICAL_CENTER = 0x1; //VerticalAlignment.CENTER.getCode();
 
     /**
      * bottom-aligned vertical alignment
      * @deprecated POI 3.15 beta 3. Use {@link VerticalAlignment#BOTTOM} instead.
      */
     @Removal(version="3.17")
-    static final short VERTICAL_BOTTOM = 0x2; //VerticalAlignment.BOTTOM.getCode();
+    short VERTICAL_BOTTOM = 0x2; //VerticalAlignment.BOTTOM.getCode();
 
     /**
      * vertically justified vertical alignment
      * @deprecated POI 3.15 beta 3. Use {@link VerticalAlignment#JUSTIFY} instead.
      */
     @Removal(version="3.17")
-    static final short VERTICAL_JUSTIFY = 0x3; //VerticalAlignment.JUSTIFY.getCode();
+    short VERTICAL_JUSTIFY = 0x3; //VerticalAlignment.JUSTIFY.getCode();
 
     /**
      * No border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#NONE} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_NONE = 0x0; //BorderStyle.NONE.getCode();
+    short BORDER_NONE = 0x0; //BorderStyle.NONE.getCode();
 
     /**
      * Thin border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#THIN} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_THIN = 0x1; //BorderStyle.THIN.getCode();
+    short BORDER_THIN = 0x1; //BorderStyle.THIN.getCode();
 
     /**
      * Medium border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#MEDIUM} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_MEDIUM = 0x2; //BorderStyle.MEDIUM.getCode();
+    short BORDER_MEDIUM = 0x2; //BorderStyle.MEDIUM.getCode();
 
     /**
      * dash border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#DASHED} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_DASHED = 0x3; //BorderStyle.DASHED.getCode();
+    short BORDER_DASHED = 0x3; //BorderStyle.DASHED.getCode();
 
     /**
      * dot border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#DOTTED} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_DOTTED = 0x4; //BorderStyle.DOTTED.getCode();
+    short BORDER_DOTTED = 0x4; //BorderStyle.DOTTED.getCode();
 
     /**
      * Thick border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#THICK} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_THICK = 0x5; //BorderStyle.THICK.getCode();
+    short BORDER_THICK = 0x5; //BorderStyle.THICK.getCode();
 
     /**
      * double-line border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#DOUBLE} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_DOUBLE = 0x6; //BorderStyle.DOUBLE.getCode();
+    short BORDER_DOUBLE = 0x6; //BorderStyle.DOUBLE.getCode();
 
     /**
      * hair-line border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#HAIR} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_HAIR = 0x7; //BorderStyle.HAIR.getCode();
+    short BORDER_HAIR = 0x7; //BorderStyle.HAIR.getCode();
 
     /**
      * Medium dashed border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#MEDIUM_DASHED} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_MEDIUM_DASHED = 0x8; //BorderStyle.MEDIUM_DASHED.getCode();
+    short BORDER_MEDIUM_DASHED = 0x8; //BorderStyle.MEDIUM_DASHED.getCode();
 
     /**
      * dash-dot border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#DASH_DOT} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_DASH_DOT = 0x9; //BorderStyle.DASH_DOT.getCode();
+    short BORDER_DASH_DOT = 0x9; //BorderStyle.DASH_DOT.getCode();
 
     /**
      * medium dash-dot border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#MEDIUM_DASH_DOT} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_MEDIUM_DASH_DOT = 0xA; //BorderStyle.MEDIUM_DASH_DOT.getCode();
+    short BORDER_MEDIUM_DASH_DOT = 0xA; //BorderStyle.MEDIUM_DASH_DOT.getCode();
 
     /**
      * dash-dot-dot border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#DASH_DOT_DOT} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_DASH_DOT_DOT = 0xB; //BorderStyle.DASH_DOT_DOT.getCode();
+    short BORDER_DASH_DOT_DOT = 0xB; //BorderStyle.DASH_DOT_DOT.getCode();
 
     /**
      * medium dash-dot-dot border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#MEDIUM_DASH_DOT_DOT} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_MEDIUM_DASH_DOT_DOT = 0xC; //BorderStyle.MEDIUM_DASH_DOT_DOT.getCode();
+    short BORDER_MEDIUM_DASH_DOT_DOT = 0xC; //BorderStyle.MEDIUM_DASH_DOT_DOT.getCode();
 
     /**
      * slanted dash-dot border
      * @deprecated 3.15 beta 2. Use {@link BorderStyle#SLANTED_DASH_DOT} instead.
      */
     @Removal(version="3.17")
-    static final short BORDER_SLANTED_DASH_DOT = 0xD; //BorderStyle.SLANTED_DASH_DOT.getCode();
+    short BORDER_SLANTED_DASH_DOT = 0xD; //BorderStyle.SLANTED_DASH_DOT.getCode();
 
     /** 
      * Fill Pattern: No background
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#NO_FILL} instead.
      */
     @Removal(version="3.17")
-    static final short NO_FILL = 0; //FillPatternType.NO_FILL.getCode();
+    short NO_FILL = 0; //FillPatternType.NO_FILL.getCode();
 
     /**
      * Fill Pattern: Solidly filled
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#SOLID_FOREGROUND} instead.
      */
     @Removal(version="3.17")
-    static final short SOLID_FOREGROUND = 1; //FillPatternType.SOLID_FOREGROUND.getCode();
+    short SOLID_FOREGROUND = 1; //FillPatternType.SOLID_FOREGROUND.getCode();
 
     /**
      * Fill Pattern: Small fine dots
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#FINE_DOTS} instead.
      */
     @Removal(version="3.17")
-    static final short FINE_DOTS = 2; //FillPatternType.FINE_DOTS.getCode();
+    short FINE_DOTS = 2; //FillPatternType.FINE_DOTS.getCode();
 
     /**
      * Fill Pattern: Wide dots
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#ALT_BARS} instead.
      */
     @Removal(version="3.17")
-    static final short ALT_BARS = 3; //FillPatternType.ALT_BARS.getCode();
+    short ALT_BARS = 3; //FillPatternType.ALT_BARS.getCode();
 
     /**
      * Fill Pattern: Sparse dots
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#SPARSE_DOTS} instead.
      */
     @Removal(version="3.17")
-    static final short SPARSE_DOTS = 4; //FillPatternType.SPARSE_DOTS.getCode();
+    short SPARSE_DOTS = 4; //FillPatternType.SPARSE_DOTS.getCode();
 
     /**
      * Fill Pattern: Thick horizontal bands
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THICK_HORZ_BANDS} instead.
      */
     @Removal(version="3.17")
-    static final short THICK_HORZ_BANDS = 5; //FillPatternType.THICK_HORZ_BANDS.getCode();
+    short THICK_HORZ_BANDS = 5; //FillPatternType.THICK_HORZ_BANDS.getCode();
 
     /**
      * Fill Pattern: Thick vertical bands
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THICK_VERT_BANDS} instead.
      */
     @Removal(version="3.17")
-    static final short THICK_VERT_BANDS = 6; //FillPatternType.THICK_VERT_BANDS.getCode();
+    short THICK_VERT_BANDS = 6; //FillPatternType.THICK_VERT_BANDS.getCode();
 
     /**
      * Fill Pattern: Thick backward facing diagonals
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THICK_BACKWARD_DIAG} instead.
      */
     @Removal(version="3.17")
-    static final short THICK_BACKWARD_DIAG = 7; //FillPatternType.THICK_BACKWARD_DIAG.getCode();
+    short THICK_BACKWARD_DIAG = 7; //FillPatternType.THICK_BACKWARD_DIAG.getCode();
 
     /**
      * Fill Pattern: Thick forward facing diagonals
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THICK_FORWARD_DIAG} instead.
      */
     @Removal(version="3.17")
-    static final short THICK_FORWARD_DIAG = 8; //FillPatternType.THICK_FORWARD_DIAG.getCode();
+    short THICK_FORWARD_DIAG = 8; //FillPatternType.THICK_FORWARD_DIAG.getCode();
 
     /**
      * Fill Pattern: Large spots
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#BIG_SPOTS} instead.
      */
     @Removal(version="3.17")
-    static final short BIG_SPOTS = 9; //FillPatternType.BIG_SPOTS.getCode();
+    short BIG_SPOTS = 9; //FillPatternType.BIG_SPOTS.getCode();
 
     /**
      * Fill Pattern: Brick-like layout
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#BRICKS} instead.
      */
     @Removal(version="3.17")
-    static final short BRICKS = 10; //FillPatternType.BRICKS.getCode();
+    short BRICKS = 10; //FillPatternType.BRICKS.getCode();
 
     /**
      * Fill Pattern: Thin horizontal bands
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THIN_HORZ_BANDS} instead.
      */
     @Removal(version="3.17")
-    static final short THIN_HORZ_BANDS = 11; //FillPatternType.THIN_HORZ_BANDS.getCode();
+    short THIN_HORZ_BANDS = 11; //FillPatternType.THIN_HORZ_BANDS.getCode();
 
     /**
      * Fill Pattern: Thin vertical bands
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THIN_VERT_BANDS} instead.
      */
     @Removal(version="3.17")
-    static final short THIN_VERT_BANDS = 12; //FillPatternType.THIN_VERT_BANDS.getCode();
+    short THIN_VERT_BANDS = 12; //FillPatternType.THIN_VERT_BANDS.getCode();
 
     /**
      * Fill Pattern: Thin backward diagonal
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THIN_BACKWARD_DIAG} instead.
      */
     @Removal(version="3.17")
-    static final short THIN_BACKWARD_DIAG = 13; //FillPatternType.THIN_BACKWARD_DIAG.getCode();
+    short THIN_BACKWARD_DIAG = 13; //FillPatternType.THIN_BACKWARD_DIAG.getCode();
 
     /**
      * Fill Pattern: Thin forward diagonal
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#THIN_FORWARD_DIAG} instead.
      */
     @Removal(version="3.17")
-    static final short THIN_FORWARD_DIAG = 14; //FillPatternType.THIN_FORWARD_DIAG.getCode();
+    short THIN_FORWARD_DIAG = 14; //FillPatternType.THIN_FORWARD_DIAG.getCode();
 
     /**
      * Fill Pattern: Squares
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#SQUARES} instead.
      */
     @Removal(version="3.17")
-    static final short SQUARES = 15; //FillPatternType.SQUARES.getCode();
+    short SQUARES = 15; //FillPatternType.SQUARES.getCode();
 
     /**
      * Fill Pattern: Diamonds
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#DIAMONDS} instead.
      */
     @Removal(version="3.17")
-    static final short DIAMONDS = 16; //FillPatternType.DIAMONDS.getCode();
+    short DIAMONDS = 16; //FillPatternType.DIAMONDS.getCode();
 
     /**
      * Fill Pattern: Less Dots
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#LESS_DOTS} instead.
      */
     @Removal(version="3.17")
-    static final short LESS_DOTS = 17; //FillPatternType.LESS_DOTS.getCode();
+    short LESS_DOTS = 17; //FillPatternType.LESS_DOTS.getCode();
 
     /**
      * Fill Pattern: Least Dots
      * @deprecated 3.15 beta 3. Use {@link FillPatternType#LEAST_DOTS} instead.
      */
     @Removal(version="3.17")
-    static final short LEAST_DOTS = 18; //FillPatternType.LEAST_DOTS.getCode();
+    short LEAST_DOTS = 18; //FillPatternType.LEAST_DOTS.getCode();
 
     /**
      * get the index within the Workbook (sequence within the collection of ExtnededFormat objects)
@@ -353,7 +353,7 @@ public interface CellStyle {
     /**
      * Get the format string
      */
-    public String getDataFormatString();
+    String getDataFormatString();
 
     /**
      * set the font for this style
@@ -870,17 +870,17 @@ public interface CellStyle {
      *  to be of the same type (HSSFCellStyle or
      *  XSSFCellStyle)
      */
-    public void cloneStyleFrom(CellStyle source);
+    void cloneStyleFrom(CellStyle source);
     
     /**
      * Controls if the Cell should be auto-sized
      *  to shrink to fit if the text is too long
      */
-    public void setShrinkToFit(boolean shrinkToFit);
+    void setShrinkToFit(boolean shrinkToFit);
 
     /**
      * Should the Cell be auto-sized by Excel to shrink
      *  it to fit if this text is too long?
      */
-    public boolean getShrinkToFit();
+    boolean getShrinkToFit();
 }

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellValue.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellValue.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellValue.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/CellValue.java Wed Sep 28 21:01:40 2016
@@ -18,6 +18,8 @@
 package org.apache.poi.ss.usermodel;
 
 import org.apache.poi.ss.formula.eval.ErrorEval;
+import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
 
 /**
  * Mimics the 'data view' of a cell. This allows formula evaluator
@@ -47,12 +49,15 @@ public final class CellValue {
 	public CellValue(double numberValue) {
 		this(CellType.NUMERIC, numberValue, false, null, 0);
 	}
+
 	public static CellValue valueOf(boolean booleanValue) {
 		return booleanValue ? TRUE : FALSE;
 	}
+
 	public CellValue(String stringValue) {
 		this(CellType.STRING, 0.0, false, stringValue, 0);
 	}
+
 	public static CellValue getError(int errorCode) {
 		return new CellValue(CellType.ERROR, 0.0, false, null, errorCode);
 	}
@@ -64,30 +69,44 @@ public final class CellValue {
 	public boolean getBooleanValue() {
 		return _booleanValue;
 	}
+
 	/**
 	 * @return Returns the numberValue.
 	 */
 	public double getNumberValue() {
 		return _numberValue;
 	}
+
 	/**
 	 * @return Returns the stringValue.
 	 */
 	public String getStringValue() {
 		return _textValue;
 	}
-	/**
-	 * @return Returns the cellType.
-	 * @since POI 3.15
-	 */
-	public CellType getCellTypeEnum() {
-		return _cellType;
-	}
-	/**
-	 * @return Returns the cellType.
+
+    /**
+     * Return the cell type.
+     *
+     * @return the cell type
+     * @since POI 3.15
+     * @deprecated POI 3.15
+     * Will be renamed to <code>getCellTypeEnum()</code> when we make the CellType enum transition in POI 4.0. See bug 59791.
+     */
+    @Internal(since="POI 3.15 beta 3")
+    @Removal(version="4.2")
+    public CellType getCellTypeEnum() {
+        return _cellType;
+    }
+
+	/**
+	 * Return the cell type.
+	 *
+	 * Will return {@link CellType} in version 4.0 of POI.
+	 * For forwards compatibility, do not hard-code cell type literals in your code.
+	 *
+	 * @return the cell type
+	 *
 	 * @deprecated POI 3.15. Use {@link #getCellTypeEnum()} instead.
-	 * In the future, the signature of this method will be changed to return a
-	 * {@link CellType}.
 	 */
 	@Deprecated
 	public int getCellType() {
@@ -100,6 +119,7 @@ public final class CellValue {
 	public byte getErrorValue() {
 		return (byte) _errorCode;
 	}
+
 	public String toString() {
 		StringBuffer sb = new StringBuffer(64);
 		sb.append(getClass().getName()).append(" [");

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/Workbook.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/Workbook.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/Workbook.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/usermodel/Workbook.java Wed Sep 28 21:01:40 2016
@@ -35,22 +35,22 @@ import org.apache.poi.ss.usermodel.Row.M
 public interface Workbook extends Closeable, Iterable<Sheet> {
 
     /** Extended windows meta file */
-    public static final int PICTURE_TYPE_EMF = 2;
+    int PICTURE_TYPE_EMF = 2;
 
     /** Windows Meta File */
-    public static final int PICTURE_TYPE_WMF = 3;
+    int PICTURE_TYPE_WMF = 3;
 
     /** Mac PICT format */
-    public static final int PICTURE_TYPE_PICT = 4;
+    int PICTURE_TYPE_PICT = 4;
 
     /** JPEG format */
-    public static final int PICTURE_TYPE_JPEG = 5;
+    int PICTURE_TYPE_JPEG = 5;
 
     /** PNG format */
-    public static final int PICTURE_TYPE_PNG = 6;
+    int PICTURE_TYPE_PNG = 6;
 
     /** Device independent bitmap */
-    public static final int PICTURE_TYPE_DIB = 7;
+    int PICTURE_TYPE_DIB = 7;
 
 
     /**
@@ -58,14 +58,14 @@ public interface Workbook extends Closea
      *
      * @see #setSheetHidden(int, int)
      */
-    public static final int SHEET_STATE_VISIBLE = 0;
+    int SHEET_STATE_VISIBLE = 0;
 
     /**
      * Indicates the book window is hidden, but can be shown by the user via the user interface.
      *
      * @see #setSheetHidden(int, int)
      */
-    public static final int SHEET_STATE_HIDDEN = 1;
+    int SHEET_STATE_HIDDEN = 1;
 
     /**
      * Indicates the sheet is hidden and cannot be shown in the user interface (UI).
@@ -77,7 +77,7 @@ public interface Workbook extends Closea
      *
      * @see #setSheetHidden(int, int)
      */
-    public static final int SHEET_STATE_VERY_HIDDEN = 2;
+    int SHEET_STATE_VERY_HIDDEN = 2;
 
     /**
      * Convenience method to get the active sheet.  The active sheet is is the sheet
@@ -169,7 +169,7 @@ public interface Workbook extends Closea
     int getSheetIndex(Sheet sheet);
 
     /**
-     * Sreate an Sheet for this Workbook, adds it to the sheets and returns
+     * Create a Sheet for this Workbook, adds it to the sheets and returns
      * the high level representation.  Use this to create new sheets.
      *
      * @return Sheet representing the new sheet.
@@ -217,7 +217,7 @@ public interface Workbook extends Closea
      * See {@link org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(String nameProposal)}
      *      for a safe way to create valid names
      * </p>
-     * @param sheetname  sheetname to set for the sheet.
+     * @param sheetname The name to set for the sheet.
      * @return Sheet representing the new sheet.
      * @throws IllegalArgumentException if the name is null or invalid
      *  or workbook already contains a sheet with this name
@@ -253,6 +253,8 @@ public interface Workbook extends Closea
      *
      * @param index of the sheet number (0-based physical & logical)
      * @return Sheet at the provided index
+     * @throws IllegalArgumentException if the index is out of range (index
+     *            &lt; 0 || index &gt;= getNumberOfSheets()).
      */
     Sheet getSheetAt(int index);
 
@@ -617,7 +619,7 @@ public interface Workbook extends Closea
      * workbook values when the workbook is opened
      * @since 3.8
      */
-    public void setForceFormulaRecalculation(boolean value);
+    void setForceFormulaRecalculation(boolean value);
 
     /**
      * Whether Excel will be asked to recalculate all formulas when the  workbook is opened.
@@ -632,6 +634,5 @@ public interface Workbook extends Closea
      * @return SpreadsheetVersion enum
      * @since 3.14 beta 2
      */
-    public SpreadsheetVersion getSpreadsheetVersion();
-
+    SpreadsheetVersion getSpreadsheetVersion();
 }

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/util/SheetUtil.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/util/SheetUtil.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/util/SheetUtil.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/ss/util/SheetUtil.java Wed Sep 28 21:01:40 2016
@@ -128,7 +128,7 @@ public class SheetUtil {
         // We should only be checking merged regions if useMergedCells is true. Why are we doing this for-loop?
         int colspan = 1;
         for (CellRangeAddress region : sheet.getMergedRegions()) {
-            if (containsCell(region, row.getRowNum(), column)) {
+            if (region.isInRange(row.getRowNum(), column)) {
                 if (!useMergedCells) {
                     // If we're not using merged cells, skip this one and move on to the next.
                     return -1;
@@ -151,8 +151,8 @@ public class SheetUtil {
         if (cellType == CellType.STRING) {
             RichTextString rt = cell.getRichStringCellValue();
             String[] lines = rt.getString().split("\\n");
-            for (int i = 0; i < lines.length; i++) {
-                String txt = lines[i] + defaultChar;
+            for (String line : lines) {
+                String txt = line + defaultChar;
 
                 AttributedString str = new AttributedString(txt);
                 copyAttributes(font, str, 0, txt.length());
@@ -193,7 +193,7 @@ public class SheetUtil {
      * @param defaultCharWidth the width of a character using the default font in a workbook
      * @param colspan the number of columns that is spanned by the cell (1 if the cell is not part of a merged region)
      * @param style the cell style, which contains text rotation and indention information needed to compute the cell width
-     * @param width the minimum best-fit width. This algorithm will only return values greater than or equal to the minimum width.
+     * @param minWidth the minimum best-fit width. This algorithm will only return values greater than or equal to the minimum width.
      * @param str the text contained in the cell
      * @return the best fit cell width
      */
@@ -219,8 +219,7 @@ public class SheetUtil {
         }
         // frameWidth accounts for leading spaces which is excluded from bounds.getWidth()
         final double frameWidth = bounds.getX() + bounds.getWidth();
-        final double width = Math.max(minWidth, ((frameWidth / colspan) / defaultCharWidth) + style.getIndention());
-        return width;
+        return Math.max(minWidth, ((frameWidth / colspan) / defaultCharWidth) + style.getIndention());
     }
 
     /**
@@ -273,13 +272,12 @@ public class SheetUtil {
         AttributedString str = new AttributedString(String.valueOf(defaultChar));
         copyAttributes(defaultFont, str, 0, 1);
         TextLayout layout = new TextLayout(str.getIterator(), fontRenderContext);
-        int defaultCharWidth = (int) layout.getAdvance();
-        return defaultCharWidth;
+        return (int) layout.getAdvance();
     }
 
     /**
      * Compute width of a single cell in a row
-     * Convenience method for {@link getCellWidth}
+     * Convenience method for {@link #getCellWidth}
      *
      * @param row the row that contains the cell of interest
      * @param column the column number of the cell whose width is to be calculated
@@ -334,7 +332,7 @@ public class SheetUtil {
     private static void copyAttributes(Font font, AttributedString str, int startIdx, int endIdx) {
         str.addAttribute(TextAttribute.FAMILY, font.getFontName(), startIdx, endIdx);
         str.addAttribute(TextAttribute.SIZE, (float)font.getFontHeightInPoints());
-        if (font.getBoldweight() == Font.BOLDWEIGHT_BOLD) str.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, startIdx, endIdx);
+        if (font.getBold()) str.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, startIdx, endIdx);
         if (font.getItalic() ) str.addAttribute(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE, startIdx, endIdx);
         if (font.getUnderline() == Font.U_SINGLE ) str.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, startIdx, endIdx);
     }
@@ -348,6 +346,7 @@ public class SheetUtil {
      * @return true if the range contains the cell [rowIx, colIx]
      * @deprecated 3.15 beta 2. Use {@link CellRangeAddressBase#isInRange(int, int)}.
      */
+    @Deprecated
     public static boolean containsCell(CellRangeAddress cr, int rowIx, int colIx) {
         return cr.isInRange(rowIx,  colIx);
     }

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/CommonsLogger.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/CommonsLogger.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/CommonsLogger.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/CommonsLogger.java Wed Sep 28 21:01:40 2016
@@ -30,7 +30,7 @@ import org.apache.commons.logging.LogFac
  */
 public class CommonsLogger extends POILogger
 {
-    private static LogFactory   _creator = LogFactory.getFactory();
+    private static final LogFactory   _creator = LogFactory.getFactory();
     private Log             log   = null;
 
     @Override
@@ -46,8 +46,10 @@ public class CommonsLogger extends POILo
      * @param obj1 The object to log.
      */
     @Override
-    public void log(final int level, final Object obj1)
+    protected void _log(final int level, final Object obj1)
     {
+        // FIXME: What happens if level is in between two levels (an even number)?
+        // Should this be `if (level >= FATAL) ...`?
         if(level==FATAL)
         {
           if(log.isFatalEnabled())
@@ -100,9 +102,11 @@ public class CommonsLogger extends POILo
      * @param exception An exception to be logged
      */
     @Override
-    public void log(final int level, final Object obj1,
+    protected void _log(final int level, final Object obj1,
                     final Throwable exception) 
     {
+        // FIXME: What happens if level is in between two levels (an even number)?
+        // Should this be `if (level >= FATAL) ...`?
         if(level==FATAL)
         {
           if(log.isFatalEnabled())
@@ -174,6 +178,8 @@ public class CommonsLogger extends POILo
     @Override
     public boolean check(final int level)
     {
+        // FIXME: What happens if level is in between two levels (an even number)?
+        // Should this be `if (level >= FATAL) ...`?
         if(level==FATAL)
         {
           if(log.isFatalEnabled())

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java Wed Sep 28 21:01:40 2016
@@ -83,15 +83,22 @@ public class DefaultTempFileCreationStra
     }
     
     /**
-     * Attempt to create a directory
+     * Attempt to create a directory, including any necessary parent directories.
+     * Does nothing if directory already exists.
      *
-     * @param directory
-     * @throws IOException
+     * @param directory  the directory to create
+     * @throws IOException if unable to create temporary directory or it is not a directory
      */
     private void createTempDirectory(File directory) throws IOException {
-        if (!(directory.exists() || directory.mkdirs()) || !directory.isDirectory()) {
+        // create directory if it doesn't exist
+        final boolean dirExists = (directory.exists() || directory.mkdirs());
+        
+        if (!dirExists) {
             throw new IOException("Could not create temporary directory '" + directory + "'");
         }
+        else if (!directory.isDirectory()) {
+            throw new IOException("Could not create temporary directory. '" + directory + "' exists but is not a directory.");
+        }
     }
     
     @Override

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/NullLogger.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/NullLogger.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/NullLogger.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/NullLogger.java Wed Sep 28 21:01:40 2016
@@ -23,6 +23,7 @@ package org.apache.poi.util;
  * calls as cheap as possible by performing lazy evaluation of the log
  * message.<p>
  */
+@Internal
 public class NullLogger extends POILogger {
     @Override
     public void initialize(final String cat) {
@@ -37,7 +38,7 @@ public class NullLogger extends POILogge
      */
 
     @Override
-    public void log(final int level, final Object obj1) {
+    protected void _log(final int level, final Object obj1) {
         // do nothing
     }
 
@@ -49,7 +50,19 @@ public class NullLogger extends POILogge
      * @param exception An exception to be logged
      */
     @Override
-    public void log(int level, Object obj1, final Throwable exception) {
+    protected void _log(int level, Object obj1, final Throwable exception) {
+        // do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     * If the last parameter is a {@link Throwable} it is logged specially.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param objs the objects to place in the message
+     */
+    @Override
+    public void log(int level, Object... objs) {
         // do nothing
     }
 

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogFactory.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogFactory.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogFactory.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogFactory.java Wed Sep 28 21:01:40 2016
@@ -35,7 +35,7 @@ public final class POILogFactory {
     /**
      * Map of POILogger instances, with classes as keys
      */
-    private static Map<String,POILogger> _loggers = new HashMap<String,POILogger>();
+    private static final Map<String,POILogger> _loggers = new HashMap<String,POILogger>();
 
     /**
      * A common instance of NullLogger, as it does nothing

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogger.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogger.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogger.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/POILogger.java Wed Sep 28 21:01:40 2016
@@ -54,7 +54,7 @@ public abstract class POILogger {
      * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
      * @param obj1 The object to log.  This is converted to a string.
      */
-    abstract protected void log(int level, Object obj1);
+    abstract protected void _log(int level, Object obj1);
 
     /**
      * Log a message
@@ -63,11 +63,20 @@ public abstract class POILogger {
      * @param obj1 The object to log.  This is converted to a string.
      * @param exception An exception to be logged
      */
-    abstract protected void log(int level, Object obj1, final Throwable exception);
+    abstract protected void _log(int level, Object obj1, final Throwable exception);
 
 
     /**
      * Check if a logger is enabled to log at the specified level
+     * This allows code to avoid building strings or evaluating functions in
+     * the arguments to log.
+     * 
+     * An example:
+     * <code><pre>
+     * if (logger.check(POILogger.INFO)) {
+     *     logger.log(POILogger.INFO, "Avoid concatenating " + " strings and evaluating " + functions());
+     * }
+     * </pre></code>
      *
      * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
      */
@@ -98,9 +107,9 @@ public abstract class POILogger {
         // somehow this ambiguity works and doesn't lead to a loop,
         // but it's confusing ...
         if (lastEx == null) {
-            log(level, msg);
+            _log(level, msg);
         } else {
-            log(level, msg, lastEx);
+            _log(level, msg, lastEx);
         }
     }
 }

Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/SystemOutLogger.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/SystemOutLogger.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/SystemOutLogger.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/util/SystemOutLogger.java Wed Sep 28 21:01:40 2016
@@ -42,9 +42,9 @@ public class SystemOutLogger extends POI
      * @param obj1 The object to log.
      */
     @Override
-    public void log(final int level, final Object obj1)
+    protected void _log(final int level, final Object obj1)
     {
-    	log(level, obj1, null);
+    	_log(level, obj1, null);
     }
 
     /**
@@ -56,7 +56,7 @@ public class SystemOutLogger extends POI
      */
     @Override
     @SuppressForbidden("uses printStackTrace")
-    public void log(final int level, final Object obj1,
+    protected void _log(final int level, final Object obj1,
                     final Throwable exception) {
         if (check(level)) {
             System.out.println("[" + _cat + "]" + LEVEL_STRINGS_SHORT[Math.min(LEVEL_STRINGS_SHORT.length-1, level)] + " " + obj1);

Modified: poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java (original)
+++ poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java Wed Sep 28 21:01:40 2016
@@ -33,7 +33,6 @@ import org.apache.poi.hsmf.datatypes.Att
 import org.apache.poi.hsmf.extractor.OutlookTextExtactor;
 import org.apache.poi.hssf.extractor.ExcelExtractor;
 import org.apache.poi.hwpf.extractor.WordExtractor;
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackageAccess;
@@ -123,7 +122,7 @@ public class ExtractorFactory {
          return OLE2ExtractorFactory.getPreferEventExtractor();
     }
 
-    public static POITextExtractor createExtractor(File f) throws IOException, InvalidFormatException, OpenXML4JException, XmlException {
+    public static POITextExtractor createExtractor(File f) throws IOException, OpenXML4JException, XmlException {
         NPOIFSFileSystem fs = null;
         try {
             fs = new NPOIFSFileSystem(f);
@@ -163,7 +162,7 @@ public class ExtractorFactory {
         }
      }
 
-    public static POITextExtractor createExtractor(InputStream inp) throws IOException, InvalidFormatException, OpenXML4JException, XmlException {
+    public static POITextExtractor createExtractor(InputStream inp) throws IOException, OpenXML4JException, XmlException {
         // Figure out the kind of stream
         // If clearly doesn't do mark/reset, wrap up
         if (! inp.markSupported()) {

Modified: poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java (original)
+++ poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java Wed Sep 28 21:01:40 2016
@@ -64,7 +64,7 @@ public class SignatureConfig {
 
     private static final POILogger LOG = POILogFactory.getLogger(SignatureConfig.class);
     
-    public static interface SignatureConfigurable {
+    public interface SignatureConfigurable {
         void setSignatureConfig(SignatureConfig signatureConfig);        
     }
 

Modified: poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/util/OOXMLLite.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/util/OOXMLLite.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/util/OOXMLLite.java (original)
+++ poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/util/OOXMLLite.java Wed Sep 28 21:01:40 2016
@@ -96,6 +96,7 @@ public final class OOXMLLite {
                 "BaseTestXSheet",
                 "BaseTestXRow",
                 "BaseTestXCell",
+                "BaseTestXSSFPivotTable",
                 "TestSXSSFWorkbook\\$\\d",
                 "TestSXSSFWorkbook\\$NullOutputStream",
                 "TestUnfixedBugs",

Modified: poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java (original)
+++ poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java Wed Sep 28 21:01:40 2016
@@ -134,7 +134,7 @@ public abstract class XSLFShape implemen
 
         if (this instanceof PlaceableShape) {
             PlaceableShape<?,?> ps = (PlaceableShape<?,?>)this;
-            ps.setAnchor(((PlaceableShape<?,?>)sh).getAnchor());
+            ps.setAnchor(sh.getAnchor());
         }
         
         
@@ -257,7 +257,7 @@ public abstract class XSLFShape implemen
      * Different types of placeholders are allowed and can be specified by using the placeholder
      * type attribute for this element
      *
-     * @param placeholder
+     * @param placeholder The shape to use as placeholder or null if no placeholder should be set.
      */
     protected void setPlaceholder(Placeholder placeholder) {
         String xquery = "declare namespace p='"+PML_NS+"' .//*/p:nvPr";
@@ -494,7 +494,7 @@ public abstract class XSLFShape implemen
         int idx = (int)fillRef.getIdx();
         CTSchemeColor phClr = fillRef.getSchemeClr();
         CTStyleMatrix matrix = theme.getXmlObject().getThemeElements().getFmtScheme();
-        XmlObject styleLst = null;
+        final XmlObject styleLst;
         int childIdx;
         if (idx >= 1 && idx <= 999) {
             childIdx = idx-1;

Modified: poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java?rev=1762709&r1=1762708&r2=1762709&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java (original)
+++ poi/branches/hssf_cryptoapi/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java Wed Sep 28 21:01:40 2016
@@ -907,7 +907,9 @@ public class SXSSFWorkbook implements Wo
             try {
                 sheet.getSheetDataWriter().close();
             } catch (IOException e) {
-                // ignore exception here
+                logger.log(POILogger.WARN,
+                        "An exception occurred while closing sheet data writer for sheet "
+                        + sheet.getSheetName() + ".", e);
             }
         }
 
@@ -926,11 +928,8 @@ public class SXSSFWorkbook implements Wo
     @Override
     public void write(OutputStream stream) throws IOException
     {
-    	for (SXSSFSheet sheet : _xFromSxHash.values())
-    	{
-    		sheet.flushRows();
-    	}
-    	
+        flushSheets();
+
         //Save the template
         File tmplFile = TempFile.createTempFile("poi-sxssf-template", ".xlsx");
         try
@@ -956,6 +955,13 @@ public class SXSSFWorkbook implements Wo
         }
     }
     
+    protected void flushSheets() throws IOException {
+        for (SXSSFSheet sheet : _xFromSxHash.values())
+        {
+            sheet.flushRows();
+        }
+    }
+    
     /**
      * Dispose of temporary files backing this workbook on disk.
      * Calling this method will render the workbook unusable.




---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org