From c2bce0370e6e8df5bd3f6d4433593f5e80192b82 Mon Sep 17 00:00:00 2001
From: Tim Allison
Date: Fri, 17 Mar 2017 10:09:59 +0000
Subject: [PATCH] 60826 -- clean up. Many, many thanks to Javen O'Neal's code
review!
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1787320 13f79535-47bb-0310-9956-ffa450edef68
---
.../java/org/apache/poi/POIXMLRelation.java | 36 ++++++
.../poi/xssf/XLSBUnsupportedException.java | 2 +-
.../poi/xssf/binary/XSSFBCellHeader.java | 7 +-
.../poi/xssf/binary/XSSFBCellRange.java | 6 +-
.../apache/poi/xssf/binary/XSSFBComment.java | 3 +
.../poi/xssf/binary/XSSFBCommentsTable.java | 24 +---
.../poi/xssf/binary/XSSFBHeaderFooter.java | 13 ++-
.../poi/xssf/binary/XSSFBHeaderFooters.java | 4 +
.../poi/xssf/binary/XSSFBHyperlinksTable.java | 5 +-
.../poi/xssf/binary/XSSFBParseException.java | 4 +-
.../apache/poi/xssf/binary/XSSFBParser.java | 11 +-
.../poi/xssf/binary/XSSFBRecordType.java | 23 +++-
.../apache/poi/xssf/binary/XSSFBRelation.java | 28 -----
.../apache/poi/xssf/binary/XSSFBRichStr.java | 3 +
.../poi/xssf/binary/XSSFBRichTextString.java | 10 ++
.../xssf/binary/XSSFBSharedStringsTable.java | 13 ++-
.../poi/xssf/binary/XSSFBSheetHandler.java | 5 +-
.../poi/xssf/binary/XSSFBStylesTable.java | 6 +
.../apache/poi/xssf/binary/XSSFBUtils.java | 3 +
.../poi/xssf/binary/XSSFHyperlinkRecord.java | 1 +
.../org/apache/poi/xssf/binary/package.html | 6 +-
.../poi/xssf/eventusermodel/XSSFBReader.java | 2 +
.../poi/xssf/eventusermodel/XSSFReader.java | 8 +-
.../XSSFBEventBasedExcelExtractor.java | 34 +++---
.../XSSFEventBasedExcelExtractor.java | 85 +++++++++++++--
.../poi/xssf/extractor/XSSFImportFromXML.java | 2 +-
.../poi/xssf/model/SharedStringsTable.java | 2 +-
.../apache/poi/xssf/streaming/SXSSFCell.java | 4 +-
.../xssf/streaming/SXSSFFormulaEvaluator.java | 2 +-
.../apache/poi/xssf/usermodel/XSSFName.java | 16 +--
.../poi/xssf/usermodel/XSSFPivotTable.java | 30 ++++-
.../poi/xssf/usermodel/XSSFRelation.java | 32 ------
.../poi/extractor/TestExtractorFactory.java | 12 +-
.../xssf/eventusermodel/TestXSSFBReader.java | 103 ++++++++----------
.../TestXSSFBEventBasedExcelExtractor.java | 8 +-
.../TestXSSFEventBasedExcelExtractor.java | 36 +++---
36 files changed, 346 insertions(+), 243 deletions(-)
diff --git a/src/ooxml/java/org/apache/poi/POIXMLRelation.java b/src/ooxml/java/org/apache/poi/POIXMLRelation.java
index 6caa5af928..571ae5ab73 100644
--- a/src/ooxml/java/org/apache/poi/POIXMLRelation.java
+++ b/src/ooxml/java/org/apache/poi/POIXMLRelation.java
@@ -16,11 +16,26 @@
==================================================================== */
package org.apache.poi;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
+
/**
* Represents a descriptor of a OOXML relation.
*/
public abstract class POIXMLRelation {
+ private static final POILogger log = POILogFactory.getLogger(POIXMLRelation.class);
+
/**
* Describes the content stored in a part.
*/
@@ -131,4 +146,25 @@ public abstract class POIXMLRelation {
public Class extends POIXMLDocumentPart> getRelationClass(){
return _cls;
}
+
+ /**
+ * Fetches the InputStream to read the contents, based
+ * of the specified core part, for which we are defined
+ * as a suitable relationship
+ *
+ * @since 3.16-beta3
+ */
+ public InputStream getContents(PackagePart corePart) throws IOException, InvalidFormatException {
+ PackageRelationshipCollection prc =
+ corePart.getRelationshipsByType(getRelation());
+ Iterator it = prc.iterator();
+ if(it.hasNext()) {
+ PackageRelationship rel = it.next();
+ PackagePartName relName = PackagingURIHelper.createPartName(rel.getTargetURI());
+ PackagePart part = corePart.getPackage().getPart(relName);
+ return part.getInputStream();
+ }
+ log.log(POILogger.WARN, "No part " + getDefaultFileName() + " found");
+ return null;
+ }
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/XLSBUnsupportedException.java b/src/ooxml/java/org/apache/poi/xssf/XLSBUnsupportedException.java
index c6ebcff542..6834d81001 100644
--- a/src/ooxml/java/org/apache/poi/xssf/XLSBUnsupportedException.java
+++ b/src/ooxml/java/org/apache/poi/xssf/XLSBUnsupportedException.java
@@ -20,7 +20,7 @@ import org.apache.poi.UnsupportedFileFormatException;
/**
* We don't support .xlsb for read and write via {@link org.apache.poi.xssf.usermodel.XSSFWorkbook}.
- * As of POI 3.15-beta3, we do support streaming reading of xlsb files
+ * As of POI 3.16-beta3, we do support streaming reading of xlsb files
* via {@link org.apache.poi.xssf.eventusermodel.XSSFBReader}
*/
public class XLSBUnsupportedException extends UnsupportedFileFormatException {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java
index 5b427ae815..771920975f 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java
@@ -17,7 +17,6 @@
package org.apache.poi.xssf.binary;
-import org.apache.poi.ss.util.CellReference;
import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
@@ -25,6 +24,8 @@ import org.apache.poi.util.LittleEndian;
* This class encapsulates what the spec calls a "Cell" object.
* I added "Header" to clarify that this does not contain the contents
* of the cell, only the column number, the style id and the phonetic boolean
+ *
+ * @since 3.16-beta3
*/
@Internal
class XSSFBCellHeader {
@@ -61,10 +62,6 @@ class XSSFBCellHeader {
return colNum;
}
- String formatAddressAsString() {
- return CellReference.convertNumToColString(colNum)+(rowNum+1);
- }
-
int getStyleIdx() {
return styleIdx;
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellRange.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellRange.java
index 3e2e79d8d1..b8d507d275 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellRange.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellRange.java
@@ -21,10 +21,14 @@ package org.apache.poi.xssf.binary;
import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
+/**
+ * @since 3.16-beta3
+ */
@Internal
class XSSFBCellRange {
+ //TODO: Convert this to generate an AreaReference
- public final static int length = 4* LittleEndian.INT_SIZE;
+ public static final int length = 4* LittleEndian.INT_SIZE;
/**
* Parses an RfX cell range from the data starting at the offset.
* This performs no range checking.
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBComment.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBComment.java
index ae7c1c56ed..ed3b918f33 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBComment.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBComment.java
@@ -24,6 +24,9 @@ import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.util.Internal;
import org.apache.poi.xssf.usermodel.XSSFComment;
+/**
+ * @since 3.16-beta3
+ */
@Internal
class XSSFBComment extends XSSFComment {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCommentsTable.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCommentsTable.java
index 642eaf99b8..6504a6df16 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCommentsTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCommentsTable.java
@@ -20,7 +20,6 @@ package org.apache.poi.xssf.binary;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -31,10 +30,13 @@ import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
+/**
+ * @since 3.16-beta3
+ */
@Internal
public class XSSFBCommentsTable extends XSSFBParser {
- private Map comments = new TreeMap(new CellAddressComparator());//String is the cellAddress A1
+ private Map comments = new TreeMap();
private Queue commentAddresses = new LinkedList();
private List authors = new ArrayList();
@@ -92,22 +94,4 @@ public class XSSFBCommentsTable extends XSSFBParser {
}
return comments.get(cellAddress);
}
-
- private final static class CellAddressComparator implements Comparator {
-
- @Override
- public int compare(CellAddress o1, CellAddress o2) {
- if (o1.getRow() < o2.getRow()) {
- return -1;
- } else if (o1.getRow() > o2.getRow()) {
- return 1;
- }
- if (o1.getColumn() < o2.getColumn()) {
- return -1;
- } else if (o1.getColumn() > o2.getColumn()) {
- return 1;
- }
- return 0;
- }
- }
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooter.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooter.java
index 1f43e35dce..674ed4410b 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooter.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooter.java
@@ -20,12 +20,17 @@ package org.apache.poi.xssf.binary;
import org.apache.poi.util.Internal;
import org.apache.poi.xssf.usermodel.helpers.HeaderFooterHelper;
+/**
+ * @since 3.16-beta3
+ */
@Internal
class XSSFBHeaderFooter {
+
+ private static final HeaderFooterHelper HEADER_FOOTER_HELPER = new HeaderFooterHelper();
+
private final String headerFooterTypeLabel;
private final boolean isHeader;
private String rawString;
- private HeaderFooterHelper headerFooterHelper = new HeaderFooterHelper();
XSSFBHeaderFooter(String headerFooterTypeLabel, boolean isHeader) {
@@ -43,9 +48,9 @@ class XSSFBHeaderFooter {
String getString() {
StringBuilder sb = new StringBuilder();
- String left = headerFooterHelper.getLeftSection(rawString);
- String center = headerFooterHelper.getCenterSection(rawString);
- String right = headerFooterHelper.getRightSection(rawString);
+ String left = HEADER_FOOTER_HELPER.getLeftSection(rawString);
+ String center = HEADER_FOOTER_HELPER.getCenterSection(rawString);
+ String right = HEADER_FOOTER_HELPER.getRightSection(rawString);
if (left != null && left.length() > 0) {
sb.append(left);
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooters.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooters.java
index c70b7843e3..a0e01832de 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooters.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHeaderFooters.java
@@ -18,10 +18,14 @@ package org.apache.poi.xssf.binary;
import org.apache.poi.util.Internal;
+/**
+ * @since 3.16-beta3
+ */
@Internal
class XSSFBHeaderFooters {
public static XSSFBHeaderFooters parse(byte[] data) {
+ //parse these at some point.
boolean diffOddEven = false;
boolean diffFirst = false;
boolean scaleWDoc = false;
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHyperlinksTable.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHyperlinksTable.java
index 28c020c57b..049245f393 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHyperlinksTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBHyperlinksTable.java
@@ -36,10 +36,13 @@ import org.apache.poi.ss.util.CellRangeUtil;
import org.apache.poi.util.Internal;
import org.apache.poi.xssf.usermodel.XSSFRelation;
+/**
+ * @since 3.16-beta3
+ */
@Internal
public class XSSFBHyperlinksTable {
- private final static BitSet RECORDS = new BitSet();
+ private static final BitSet RECORDS = new BitSet();
static {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParseException.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParseException.java
index 69ba7f041c..7098bbe26e 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParseException.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParseException.java
@@ -18,7 +18,9 @@
package org.apache.poi.xssf.binary;
/**
- * Parse exception while reading an xssfb
+ * Parse exception while reading an xssfb.
+ *
+ * @since 3.16-beta3
*/
public class XSSFBParseException extends RuntimeException {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParser.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParser.java
index cace843160..2dd9caed28 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParser.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBParser.java
@@ -25,9 +25,11 @@ import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndianInputStream;
/**
- * Experimental parser for Microsoft's ooxml xssfb format.
+ * Experimental parser for Microsoft's ooxml xlsb format.
* Not thread safe, obviously. Need to create a new one
* for each thread.
+ *
+ * @since 3.16-beta3
*/
@Internal
public abstract class XSSFBParser {
@@ -40,6 +42,11 @@ public abstract class XSSFBParser {
records = null;
}
+ /**
+ *
+ * @param is inputStream
+ * @param bitSet call {@link #handleRecord(int, byte[])} only on those records in this bitSet
+ */
XSSFBParser(InputStream is, BitSet bitSet) {
this.is = new LittleEndianInputStream(is);
records = bitSet;
@@ -98,7 +105,7 @@ public abstract class XSSFBParser {
//However, on a large Excel spreadsheet, this parser was 1/3 faster than
//the ooxml sax parser (5 seconds for xssfb and 7.5 seconds for xssf.
//The code is far cleaner to have the parser read all
- //of the data rather than having every component promise that it read
+ //of the data rather than having every component promise that it will read
//the correct amount.
abstract public void handleRecord(int recordType, byte[] data) throws XSSFBParseException;
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRecordType.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRecordType.java
index 65663f7fd5..436dee986f 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRecordType.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRecordType.java
@@ -17,8 +17,14 @@
package org.apache.poi.xssf.binary;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.poi.util.Internal;
+/**
+ * @since 3.16-beta3
+ */
@Internal
public enum XSSFBRecordType {
@@ -69,6 +75,14 @@ public enum XSSFBRecordType {
BrtBundleSh(156), //defines worksheet in wb part
Unimplemented(-1);
+ private static final Map TYPE_MAP =
+ new HashMap();
+
+ static {
+ for (XSSFBRecordType type : XSSFBRecordType.values()) {
+ TYPE_MAP.put(type.getId(), type);
+ }
+ }
private final int id;
@@ -81,12 +95,11 @@ public enum XSSFBRecordType {
}
public static XSSFBRecordType lookup(int id) {
- for (XSSFBRecordType r : XSSFBRecordType.values()) {
- if (r.id == id) {
- return r;
- }
+ XSSFBRecordType type = TYPE_MAP.get(id);
+ if (type == null) {
+ return Unimplemented;
}
- return Unimplemented;
+ return type;
}
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRelation.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRelation.java
index 3f0b0286dc..16cd7a414c 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRelation.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRelation.java
@@ -17,19 +17,9 @@
package org.apache.poi.xssf.binary;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Iterator;
-
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.POIXMLRelation;
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.openxml4j.opc.PackagePart;
-import org.apache.poi.openxml4j.opc.PackagePartName;
-import org.apache.poi.openxml4j.opc.PackageRelationship;
-import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
-import org.apache.poi.openxml4j.opc.PackagingURIHelper;
import org.apache.poi.util.Internal;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
@@ -64,22 +54,4 @@ public class XSSFBRelation extends POIXMLRelation {
super(type, rel, defaultName, cls);
}
- /**
- * Fetches the InputStream to read the contents, based
- * of the specified core part, for which we are defined
- * as a suitable relationship
- */
- public InputStream getContents(PackagePart corePart) throws IOException, InvalidFormatException {
- PackageRelationshipCollection prc =
- corePart.getRelationshipsByType(getRelation());
- Iterator it = prc.iterator();
- if (it.hasNext()) {
- PackageRelationship rel = it.next();
- PackagePartName relName = PackagingURIHelper.createPartName(rel.getTargetURI());
- PackagePart part = corePart.getPackage().getPart(relName);
- return part.getInputStream();
- }
- log.log(POILogger.WARN, "No part " + getDefaultFileName() + " found");
- return null;
- }
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichStr.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichStr.java
index e9ba59a4ea..7e18a1a4dc 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichStr.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichStr.java
@@ -19,6 +19,9 @@ package org.apache.poi.xssf.binary;
import org.apache.poi.util.Internal;
+/**
+ * @since 3.16-beta3
+ */
@Internal
class XSSFBRichStr {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichTextString.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichTextString.java
index 1fb5b54ae8..d9bfc8137c 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichTextString.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRichTextString.java
@@ -19,11 +19,14 @@ package org.apache.poi.xssf.binary;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.NotImplemented;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
/**
* Wrapper class around String so that we can use it in Comment.
* Nothing has been implemented yet except for {@link #getString()}.
+ *
+ * @since 3.16-beta3
*/
@Internal
class XSSFBRichTextString extends XSSFRichTextString {
@@ -34,21 +37,25 @@ class XSSFBRichTextString extends XSSFRichTextString {
}
@Override
+ @NotImplemented
public void applyFont(int startIndex, int endIndex, short fontIndex) {
}
@Override
+ @NotImplemented
public void applyFont(int startIndex, int endIndex, Font font) {
}
@Override
+ @NotImplemented
public void applyFont(Font font) {
}
@Override
+ @NotImplemented
public void clearFormatting() {
}
@@ -64,16 +71,19 @@ class XSSFBRichTextString extends XSSFRichTextString {
}
@Override
+ @NotImplemented
public int numFormattingRuns() {
return 0;
}
@Override
+ @NotImplemented
public int getIndexOfFormattingRun(int index) {
return 0;
}
@Override
+ @NotImplemented
public void applyFont(short fontIndex) {
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java
index 49d1a46f98..474cc4b15a 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java
@@ -28,6 +28,9 @@ import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
import org.xml.sax.SAXException;
+/**
+ * @since 3.16-beta3
+ */
@Internal
public class XSSFBSharedStringsTable {
@@ -69,8 +72,6 @@ public class XSSFBSharedStringsTable {
/**
* Like POIXMLDocumentPart constructor
- *
- * @since POI 3.14-Beta3
*/
XSSFBSharedStringsTable(PackagePart part) throws IOException, SAXException {
readFrom(part.getInputStream());
@@ -81,8 +82,14 @@ public class XSSFBSharedStringsTable {
reader.parse();
}
+ /**
+ *
+ * @return a defensive copy of strings
+ */
public List getItems() {
- return strings;
+ List ret = new ArrayList(strings.size());
+ ret.addAll(strings);
+ return ret;
}
public String getEntryAt(int i) {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java
index ca5dab5a38..803306d407 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java
@@ -29,10 +29,13 @@ import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler;
import org.apache.poi.xssf.usermodel.XSSFComment;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
+/**
+ * @since 3.16-beta3
+ */
@Internal
public class XSSFBSheetHandler extends XSSFBParser {
- private final static int CHECK_ALL_ROWS = -1;
+ private static final int CHECK_ALL_ROWS = -1;
private final XSSFBSharedStringsTable stringsTable;
private final XSSFSheetXMLHandler.SheetContentsHandler handler;
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBStylesTable.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBStylesTable.java
index 8584e95330..10f3412a1e 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBStylesTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBStylesTable.java
@@ -28,6 +28,12 @@ import org.apache.poi.POIXMLException;
import org.apache.poi.ss.usermodel.BuiltinFormats;
import org.apache.poi.util.Internal;
+/**
+ * This is a very thin shim to gather number formats from styles.bin
+ * files.
+ *
+ * @since 3.16-beta3
+ */
@Internal
public class XSSFBStylesTable extends XSSFBParser {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java
index e3a46b0f04..448e50c0b7 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java
@@ -24,6 +24,9 @@ import org.apache.poi.POIXMLException;
import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
+/**
+ * @since 3.16-beta3
+ */
@Internal
public class XSSFBUtils {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFHyperlinkRecord.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFHyperlinkRecord.java
index a02e8ce922..e2ac4df127 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFHyperlinkRecord.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFHyperlinkRecord.java
@@ -29,6 +29,7 @@ import org.apache.poi.util.Internal;
* The {@link #display} is often empty and should be filled from
* the contents of the anchor cell.
*
+ * @since 3.16-beta3
*/
@Internal
public class XSSFHyperlinkRecord {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/package.html b/src/ooxml/java/org/apache/poi/xssf/binary/package.html
index c7e4a018bc..21a30e1df9 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/package.html
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/package.html
@@ -27,17 +27,17 @@ for streaming/read-only processing of xlsb files.
POI does not yet support opening .xlsb files with XSSFWorkbook, but you can read files with XSSFBReader
- in o.a.p.xssf.eventusermodel.
+ in org.apache.poi.xssf.eventusermodel.
- This feature was added in poi-3.15-beta3 and should be considered experimental. Most classes
+ This feature was added in poi-3.16-beta3 and should be considered experimental. Most classes
have been marked @Internal and the API is subject to change.
Related Documentation
For overviews, tutorials, examples, guides, and tool documentation, please see: