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 2021/08/28 23:48:49 UTC
svn commit: r1892683 [3/4] - in /poi/trunk: ./ poi-examples/ poi-excelant/
poi-integration/ poi-integration/src/test/java/org/apache/poi/stress/
poi-ooxml-lite/ poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/
poi-ooxml/src/main/java/org/apache...
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java Sat Aug 28 23:48:48 2021
@@ -64,8 +64,8 @@ public final class HSSFConditionalFormat
* Only newer style formatting rules have priorities. For older ones,
* we don't know priority for these, other than definition/model order,
* which appears to be what Excel uses.
- * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getPriority()
*/
+ @Override
public int getPriority() {
CFRule12Record rule12 = getCFRule12Record(false);
if (rule12 == null) return 0;
@@ -74,8 +74,8 @@ public final class HSSFConditionalFormat
/**
* Always true for HSSF files, per Microsoft Excel documentation
- * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getStopIfTrue()
*/
+ @Override
public boolean getStopIfTrue() {
return true;
}
@@ -95,8 +95,8 @@ public final class HSSFConditionalFormat
/**
* Always null for HSSF records, until someone figures out where to find it
- * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getNumberFormat()
*/
+ @Override
public ExcelNumberFormat getNumberFormat() {
return null;
}
@@ -112,16 +112,18 @@ public final class HSSFConditionalFormat
}
/**
- * @return - font formatting object if defined, <code>null</code> otherwise
+ * @return - font formatting object if defined, {@code null} otherwise
*/
+ @Override
public HSSFFontFormatting getFontFormatting() {
return getFontFormatting(false);
}
/**
* create a new font formatting structure if it does not exist,
* otherwise just return existing object.
- * @return - font formatting object, never returns <code>null</code>.
+ * @return - font formatting object, never returns {@code null}.
*/
+ @Override
public HSSFFontFormatting createFontFormatting() {
return getFontFormatting(true);
}
@@ -137,16 +139,18 @@ public final class HSSFConditionalFormat
}
/**
- * @return - border formatting object if defined, <code>null</code> otherwise
+ * @return - border formatting object if defined, {@code null} otherwise
*/
+ @Override
public HSSFBorderFormatting getBorderFormatting() {
return getBorderFormatting(false);
}
/**
* create a new border formatting structure if it does not exist,
* otherwise just return existing object.
- * @return - border formatting object, never returns <code>null</code>.
+ * @return - border formatting object, never returns {@code null}.
*/
+ @Override
public HSSFBorderFormatting createBorderFormatting() {
return getBorderFormatting(true);
}
@@ -162,8 +166,9 @@ public final class HSSFConditionalFormat
}
/**
- * @return - pattern formatting object if defined, <code>null</code> otherwise
+ * @return - pattern formatting object if defined, {@code null} otherwise
*/
+ @Override
public HSSFPatternFormatting getPatternFormatting()
{
return getPatternFormatting(false);
@@ -171,8 +176,9 @@ public final class HSSFConditionalFormat
/**
* create a new pattern formatting structure if it does not exist,
* otherwise just return existing object.
- * @return - pattern formatting object, never returns <code>null</code>.
+ * @return - pattern formatting object, never returns {@code null}.
*/
+ @Override
public HSSFPatternFormatting createPatternFormatting()
{
return getPatternFormatting(true);
@@ -192,8 +198,9 @@ public final class HSSFConditionalFormat
}
/**
- * @return databar / data-bar formatting object if defined, <code>null</code> otherwise
+ * @return databar / data-bar formatting object if defined, {@code null} otherwise
*/
+ @Override
public HSSFDataBarFormatting getDataBarFormatting() {
return getDataBarFormatting(false);
}
@@ -218,8 +225,9 @@ public final class HSSFConditionalFormat
}
/**
- * @return icon / multi-state formatting object if defined, <code>null</code> otherwise
+ * @return icon / multi-state formatting object if defined, {@code null} otherwise
*/
+ @Override
public HSSFIconMultiStateFormatting getMultiStateFormatting() {
return getMultiStateFormatting(false);
}
@@ -245,8 +253,9 @@ public final class HSSFConditionalFormat
}
/**
- * @return color scale / gradient formatting object if defined, <code>null</code> otherwise
+ * @return color scale / gradient formatting object if defined, {@code null} otherwise
*/
+ @Override
public HSSFColorScaleFormatting getColorScaleFormatting() {
return getColorScaleFormatting(false);
}
@@ -270,12 +279,13 @@ public final class HSSFConditionalFormat
/**
* always null (not a filter condition) or {@link ConditionFilterType#FILTER} if it is.
- * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getConditionFilterType()
*/
+ @Override
public ConditionFilterType getConditionFilterType() {
return getConditionType() == ConditionType.FILTER ? ConditionFilterType.FILTER : null;
}
+ @Override
public ConditionFilterData getFilterConfiguration() {
return null;
}
@@ -288,11 +298,13 @@ public final class HSSFConditionalFormat
return cfRuleRecord.getComparisonOperation();
}
+ @Override
public String getFormula1()
{
return toFormulaString(cfRuleRecord.getParsedExpression1());
}
+ @Override
public String getFormula2() {
byte conditionType = cfRuleRecord.getConditionType();
if (conditionType == CELL_COMPARISON) {
@@ -306,6 +318,7 @@ public final class HSSFConditionalFormat
return null;
}
+ @Override
public String getText() {
return null; // not available here, unless it exists and is unimplemented in cfRuleRecord
}
@@ -325,6 +338,7 @@ public final class HSSFConditionalFormat
* Conditional format rules don't define stripes, so always 0
* @see org.apache.poi.ss.usermodel.DifferentialStyleProvider#getStripeSize()
*/
+ @Override
public int getStripeSize() {
return 0;
}
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingThreshold.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingThreshold.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingThreshold.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingThreshold.java Sat Aug 28 23:48:48 2021
@@ -31,32 +31,40 @@ public final class HSSFConditionalFormat
private final HSSFSheet sheet;
private final HSSFWorkbook workbook;
- protected HSSFConditionalFormattingThreshold(Threshold threshold, HSSFSheet sheet) {
+ HSSFConditionalFormattingThreshold(Threshold threshold, HSSFSheet sheet) {
this.threshold = threshold;
this.sheet = sheet;
this.workbook = sheet.getWorkbook();
}
- protected Threshold getThreshold() {
+
+ Threshold getThreshold() {
return threshold;
}
+ @Override
public RangeType getRangeType() {
return RangeType.byId(threshold.getType());
}
+ @Override
public void setRangeType(RangeType type) {
threshold.setType((byte)type.id);
}
+ @Override
public String getFormula() {
return toFormulaString(threshold.getParsedExpression(), workbook);
}
+ @Override
public void setFormula(String formula) {
threshold.setParsedExpression(parseFormula(formula, sheet));
}
+ @Override
public Double getValue() {
return threshold.getValue();
}
+
+ @Override
public void setValue(Double value) {
threshold.setValue(value);
}
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFIconMultiStateFormatting.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFIconMultiStateFormatting.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFIconMultiStateFormatting.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFIconMultiStateFormatting.java Sat Aug 28 23:48:48 2021
@@ -24,41 +24,46 @@ import org.apache.poi.hssf.record.cf.Thr
import org.apache.poi.ss.usermodel.ConditionalFormattingThreshold;
/**
- * High level representation for Icon / Multi-State Formatting
+ * High level representation for Icon / Multi-State Formatting
* component of Conditional Formatting settings
*/
public final class HSSFIconMultiStateFormatting implements org.apache.poi.ss.usermodel.IconMultiStateFormatting {
private final HSSFSheet sheet;
- private final CFRule12Record cfRule12Record;
private final IconMultiStateFormatting iconFormatting;
- protected HSSFIconMultiStateFormatting(CFRule12Record cfRule12Record, HSSFSheet sheet) {
+ HSSFIconMultiStateFormatting(CFRule12Record cfRule12Record, HSSFSheet sheet) {
this.sheet = sheet;
- this.cfRule12Record = cfRule12Record;
- this.iconFormatting = this.cfRule12Record.getMultiStateFormatting();
+ this.iconFormatting = cfRule12Record.getMultiStateFormatting();
}
+ @Override
public IconSet getIconSet() {
return iconFormatting.getIconSet();
}
+ @Override
public void setIconSet(IconSet set) {
iconFormatting.setIconSet(set);
}
+ @Override
public boolean isIconOnly() {
return iconFormatting.isIconOnly();
}
+ @Override
public void setIconOnly(boolean only) {
iconFormatting.setIconOnly(only);
}
+ @Override
public boolean isReversed() {
return iconFormatting.isReversed();
}
+ @Override
public void setReversed(boolean reversed) {
iconFormatting.setReversed(reversed);
}
+ @Override
public HSSFConditionalFormattingThreshold[] getThresholds() {
Threshold[] t = iconFormatting.getThresholds();
HSSFConditionalFormattingThreshold[] ht = new HSSFConditionalFormattingThreshold[t.length];
@@ -68,6 +73,7 @@ public final class HSSFIconMultiStateFor
return ht;
}
+ @Override
public void setThresholds(ConditionalFormattingThreshold[] thresholds) {
Threshold[] t = new Threshold[thresholds.length];
for (int i=0; i<t.length; i++) {
@@ -76,6 +82,7 @@ public final class HSSFIconMultiStateFor
iconFormatting.setThresholds(t);
}
+ @Override
public HSSFConditionalFormattingThreshold createThreshold() {
return new HSSFConditionalFormattingThreshold(new IconMultiStateThreshold(), sheet);
}
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java Sat Aug 28 23:48:48 2021
@@ -48,6 +48,7 @@ public class HSSFWorkbookFactory impleme
*
* @return The created workbook
*/
+ @Override
public HSSFWorkbook create() {
return new HSSFWorkbook();
}
@@ -66,6 +67,7 @@ public class HSSFWorkbookFactory impleme
* Note that in order to properly release resources the
* Workbook should be closed after use.
*/
+ @Override
public HSSFWorkbook create(final DirectoryNode root, String password) throws IOException {
boolean passwordSet = false;
if (password != null) {
@@ -93,6 +95,7 @@ public class HSSFWorkbookFactory impleme
}
@Override
+ @SuppressWarnings("java:S2095")
public Workbook create(File file, String password, boolean readOnly) throws IOException {
boolean passwordSet = false;
if (password != null) {
@@ -104,11 +107,8 @@ public class HSSFWorkbookFactory impleme
try {
return new HSSFWorkbook(fs, true);
} catch (RuntimeException e) {
- // we need to close the filesystem
- // if we encounter an exception to
- // not leak file handles
+ // we need to close the filesystem if we encounter an exception to not leak file handles
fs.close();
-
throw e;
}
} finally {
Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java Sat Aug 28 23:48:48 2021
@@ -28,7 +28,7 @@ import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
-import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
+import org.apache.commons.io.input.BoundedInputStream;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.poifs.crypt.ChunkedCipherInputStream;
import org.apache.poi.poifs.crypt.CryptoFunctions;
@@ -39,11 +39,9 @@ import org.apache.poi.poifs.crypt.Encryp
import org.apache.poi.poifs.crypt.HashAlgorithm;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
-import org.apache.poi.poifs.filesystem.DocumentNode;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
-import org.apache.commons.io.input.BoundedInputStream;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianInputStream;
@@ -170,14 +168,10 @@ public class CryptoAPIDecryptor extends
*/
public POIFSFileSystem getSummaryEntries(DirectoryNode root, String encryptedStream)
throws IOException, GeneralSecurityException {
- DocumentNode es = (DocumentNode) root.getEntry(encryptedStream);
- UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
- try (DocumentInputStream dis = root.createDocumentInputStream(es)) {
- IOUtils.copy(dis, bos);
- }
POIFSFileSystem fsOut = null;
try (
- CryptoAPIDocumentInputStream sbis = new CryptoAPIDocumentInputStream(this, bos.toByteArray());
+ DocumentInputStream dis = root.createDocumentInputStream(root.getEntry(encryptedStream));
+ CryptoAPIDocumentInputStream sbis = new CryptoAPIDocumentInputStream(this, IOUtils.toByteArray(dis));
LittleEndianInputStream leis = new LittleEndianInputStream(sbis)
) {
int streamDescriptorArrayOffset = (int) leis.readUInt();
Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java Sat Aug 28 23:48:48 2021
@@ -68,6 +68,7 @@ import org.apache.poi.util.StringUtil;
*
* @since 3.15-beta2
*/
+@SuppressWarnings("unused")
public class VBAMacroReader implements Closeable {
private static final Logger LOGGER = LogManager.getLogger(VBAMacroReader.class);
@@ -667,35 +668,36 @@ public class VBAMacroReader implements C
private static String readUnicode(InputStream is) throws IOException {
//reads null-terminated unicode string
- UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
- int b0 = IOUtils.readByte(is);
- int b1 = IOUtils.readByte(is);
-
- int read = 2;
- while ((b0 + b1) != 0 && read < MAX_STRING_LENGTH) {
-
- bos.write(b0);
- bos.write(b1);
- b0 = IOUtils.readByte(is);
- b1 = IOUtils.readByte(is);
- read += 2;
- }
- if (read >= MAX_STRING_LENGTH) {
- LOGGER.atWarn().log("stopped reading unicode name after {} bytes", box(read));
+ try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) {
+ int b0 = IOUtils.readByte(is);
+ int b1 = IOUtils.readByte(is);
+
+ int read = 2;
+ while ((b0 + b1) != 0 && read < MAX_STRING_LENGTH) {
+ bos.write(b0);
+ bos.write(b1);
+ b0 = IOUtils.readByte(is);
+ b1 = IOUtils.readByte(is);
+ read += 2;
+ }
+ if (read >= MAX_STRING_LENGTH) {
+ LOGGER.atWarn().log("stopped reading unicode name after {} bytes", box(read));
+ }
+ return bos.toString(StandardCharsets.UTF_16LE);
}
- return bos.toString(StandardCharsets.UTF_16LE);
}
private static String readMBCS(int firstByte, InputStream is, Charset charset) throws IOException {
- UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
- int len = 0;
- int b = firstByte;
- while (b > 0 && len < MAX_STRING_LENGTH) {
- ++len;
- bos.write(b);
- b = IOUtils.readByte(is);
+ try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) {
+ int len = 0;
+ int b = firstByte;
+ while (b > 0 && len < MAX_STRING_LENGTH) {
+ ++len;
+ bos.write(b);
+ b = IOUtils.readByte(is);
+ }
+ return bos.toString(charset);
}
- return bos.toString(charset);
}
/**
@@ -792,9 +794,7 @@ public class VBAMacroReader implements C
*/
private static byte[] findCompressedStreamWBruteForce(InputStream is) throws IOException {
//buffer to memory for multiple tries
- UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
- IOUtils.copy(is, bos);
- byte[] compressed = bos.toByteArray();
+ byte[] compressed = IOUtils.toByteArray(is);
byte[] decompressed = null;
for (int i = 0; i < compressed.length; i++) {
if (compressed[i] == 0x01 && i < compressed.length-1) {
@@ -821,12 +821,10 @@ public class VBAMacroReader implements C
}
private static byte[] tryToDecompress(InputStream is) {
- UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
- try {
- IOUtils.copy(new RLEDecompressingInputStream(is), bos);
+ try (RLEDecompressingInputStream ris = new RLEDecompressingInputStream(is)) {
+ return IOUtils.toByteArray(ris);
} catch (IllegalArgumentException | IOException | IllegalStateException e){
return null;
}
- return bos.toByteArray();
}
}
Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java Sat Aug 28 23:48:48 2021
@@ -162,14 +162,13 @@ public class EmbeddedExtractor implement
protected EmbeddedData extract(DirectoryNode dn) throws IOException {
assert(canExtract(dn));
- UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(20000);
- try (POIFSFileSystem dest = new POIFSFileSystem()) {
+ try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(20000);
+ POIFSFileSystem dest = new POIFSFileSystem()) {
copyNodes(dn, dest.getRoot());
// start with a reasonable big size
dest.writeFilesystem(bos);
+ return new EmbeddedData(dn.getName(), bos.toByteArray(), CONTENT_TYPE_BYTES);
}
-
- return new EmbeddedData(dn.getName(), bos.toByteArray(), CONTENT_TYPE_BYTES);
}
protected EmbeddedData extract(Picture source) throws IOException {
Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ConditionalFormattingThreshold.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ConditionalFormattingThreshold.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ConditionalFormattingThreshold.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ConditionalFormattingThreshold.java Sat Aug 28 23:48:48 2021
@@ -27,7 +27,7 @@ package org.apache.poi.ss.usermodel;
* icon and which Yellow or Red.</p>
*/
public interface ConditionalFormattingThreshold {
- public enum RangeType {
+ enum RangeType {
/** Number / Parameter */
NUMBER(1, "num"),
/** The minimum value from the range */
@@ -41,16 +41,16 @@ public interface ConditionalFormattingTh
UNALLOCATED(6, null),
/** Formula result */
FORMULA(7, "formula");
-
+
/** Numeric ID of the type */
public final int id;
/** Name (system) of the type */
public final String name;
-
+
public String toString() {
return id + " - " + name;
}
-
+
public static RangeType byId(int id) {
return values()[id-1]; // 1-based IDs
}
@@ -60,51 +60,51 @@ public interface ConditionalFormattingTh
}
return null;
}
-
- private RangeType(int id, String name) {
+
+ RangeType(int id, String name) {
this.id = id; this.name = name;
}
}
-
+
/**
* Get the Range Type used
*/
RangeType getRangeType();
-
+
/**
* Changes the Range Type used
- *
+ *
* <p>If you change the range type, you need to
* ensure that the Formula and Value parameters
* are compatible with it before saving</p>
*/
void setRangeType(RangeType type);
-
+
/**
* Formula to use to calculate the threshold,
- * or <code>null</code> if no formula
+ * or {@code null} if no formula
*/
String getFormula();
/**
* Sets the formula used to calculate the threshold,
- * or unsets it if <code>null</code> is given.
+ * or unsets it if {@code null} is given.
*/
void setFormula(String formula);
-
+
/**
- * Gets the value used for the threshold, or
- * <code>null</code> if there isn't one.
+ * Gets the value used for the threshold, or
+ * {@code null} if there isn't one.
*/
Double getValue();
-
+
/**
- * Sets the value used for the threshold.
- * <p>If the type is {@link RangeType#PERCENT} or
+ * Sets the value used for the threshold.
+ * <p>If the type is {@link RangeType#PERCENT} or
* {@link RangeType#PERCENTILE} it must be between 0 and 100.
* <p>If the type is {@link RangeType#MIN} or {@link RangeType#MAX}
* or {@link RangeType#FORMULA} it shouldn't be set.
- * <p>Use <code>null</code> to unset
+ * <p>Use {@code null} to unset
*/
void setValue(Double value);
}
Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java Sat Aug 28 23:48:48 2021
@@ -265,6 +265,7 @@ public class GenericRecordJsonWriter imp
return true;
}
+ @SuppressWarnings("java:S3516")
protected boolean printNumber(String name, Object o) {
Number n = (Number)o;
printName(name);
Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java Sat Aug 28 23:48:48 2021
@@ -178,29 +178,29 @@ public final class IOUtils {
}
final int len = Math.min(length, maxLength);
- UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(len == Integer.MAX_VALUE ? 4096 : len);
+ try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(len == Integer.MAX_VALUE ? 4096 : len)) {
+ byte[] buffer = new byte[4096];
+ int totalBytes = 0, readBytes;
+ do {
+ readBytes = stream.read(buffer, 0, Math.min(buffer.length, len - totalBytes));
+ totalBytes += Math.max(readBytes, 0);
+ if (readBytes > 0) {
+ baos.write(buffer, 0, readBytes);
+ }
- byte[] buffer = new byte[4096];
- int totalBytes = 0, readBytes;
- do {
- readBytes = stream.read(buffer, 0, Math.min(buffer.length, len-totalBytes));
- totalBytes += Math.max(readBytes,0);
- if (readBytes > 0) {
- baos.write(buffer, 0, readBytes);
- }
+ checkByteSizeLimit(totalBytes);
+ } while (totalBytes < len && readBytes > -1);
- checkByteSizeLimit(totalBytes);
- } while (totalBytes < len && readBytes > -1);
+ if (maxLength != Integer.MAX_VALUE && totalBytes == maxLength) {
+ throw new IOException("MaxLength (" + maxLength + ") reached - stream seems to be invalid.");
+ }
- if (maxLength != Integer.MAX_VALUE && totalBytes == maxLength) {
- throw new IOException("MaxLength ("+maxLength+") reached - stream seems to be invalid.");
- }
+ if (len != Integer.MAX_VALUE && totalBytes < len) {
+ throw new EOFException("unexpected EOF - expected len: " + len + " - actual len: " + totalBytes);
+ }
- if (len != Integer.MAX_VALUE && totalBytes < len) {
- throw new EOFException("unexpected EOF - expected len: "+len+" - actual len: "+totalBytes);
+ return baos.toByteArray();
}
-
- return baos.toByteArray();
}
private static void checkLength(long length, int maxLength) {
Modified: poi/trunk/poi/src/test/java/org/apache/poi/POITestCase.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/POITestCase.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/POITestCase.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/POITestCase.java Sat Aug 28 23:48:48 2021
@@ -25,8 +25,6 @@ import static org.hamcrest.CoreMatchers.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-import static org.junit.jupiter.api.Assumptions.assumeTrue;
import java.io.File;
import java.lang.reflect.Field;
@@ -47,6 +45,7 @@ import org.mockito.internal.matchers.apa
* Util class for POI JUnit TestCases, which provide additional features
*/
@Internal
+@SuppressWarnings("java:S2187")
public final class POITestCase {
private POITestCase() {
@@ -141,68 +140,6 @@ public final class POITestCase {
assertTrue(new ReflectionEquals(expected, "$jacocoData").matches(actual));
}
- /**
- * Rather than adding {@literal @}Ignore to known-failing tests,
- * write the test so that it notifies us if it starts passing.
- * This is useful for closing related or forgotten bugs.
- *
- * An Example:
- * <code><pre>
- * public static int add(int a, int b) {
- * // a known bug in behavior that has not been fixed yet
- * raise UnsupportedOperationException("add");
- * }
- *
- * {@literal @}Test
- * void knownFailingUnitTest() {
- * try {
- * assertEquals(2, add(1,1));
- * // this test fails because the assumption that this bug had not been fixed is false
- * testPassesNow(12345);
- * } catch (UnsupportedOperationException e) {
- * // test is skipped because the assumption that this bug had not been fixed is true
- * skipTest(e);
- * }
- * }
- *
- * Once passing, this unit test can be rewritten as:
- * {@literal @}Test
- * void knownPassingUnitTest() {
- * assertEquals(2, add(1,1));
- * }
- *
- * If you have a better idea how to simplify test code while still notifying
- * us when a previous known-failing test now passes, please improve these.
- * As a bonus, a known-failing test that fails should not be counted as a
- * passing test.
- *
- * One possible alternative is to expect the known exception, but without
- * a clear message that it is a good thing to no longer get the expected
- * exception once the test passes.
- * {@literal @}Test(expected=UnsupportedOperationException.class)
- * void knownFailingUnitTest() {
- * assertEquals(2, add(1,1));
- * }
- *
- * @param e the exception that was caught that will no longer
- * be raised when the bug is fixed
- */
- public static void skipTest(Throwable e) {
- assumeTrue(e != null, "This test currently fails with");
- }
- /**
- * @see #skipTest(Throwable)
- *
- * @param bug the bug number corresponding to a known bug in bugzilla
- */
- public static void testPassesNow(int bug) {
- fail("This test passes now. Please update the unit test and bug " + bug + ".");
- }
-
- public static void assertBetween(String message, int value, int min, int max) {
- assertTrue(min <= value, message + ": " + value + " is less than the minimum value of " + min);
- assertTrue(value <= max, message + ": " + value + " is greater than the maximum value of " + max);
- }
/**
* Ensures that the temporary directory is defined and exists and
Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java Sat Aug 28 23:48:48 2021
@@ -1382,6 +1382,7 @@ public abstract class BaseTestBugzillaIs
}
@Test
+ @SuppressWarnings("java:S2699")
void test58896() throws IOException {
final int nrows = 160;
final int ncols = 139;
@@ -1493,8 +1494,8 @@ public abstract class BaseTestBugzillaIs
// *******************************
// First cell of array formula, OK
- int rowId = 0;
- int cellId = 1;
+ final int rowId = 0;
+ final int cellId = 1;
Row row = sheet.getRow(rowId);
Cell cell = row.getCell(cellId);
@@ -1507,9 +1508,6 @@ public abstract class BaseTestBugzillaIs
// *******************************
// Second cell of array formula, NOT OK for xlsx files
- rowId = 1;
- cellId = 1;
-
row = sheet.getRow(rowId);
cell = row.getCell(cellId);
assertEquals("A1", cell.getCellFormula());
Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestSheet.java?rev=1892683&r1=1892682&r2=1892683&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestSheet.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestSheet.java Sat Aug 28 23:48:48 2021
@@ -17,7 +17,6 @@
package org.apache.poi.ss.usermodel;
-import static org.apache.poi.POITestCase.assertBetween;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -50,8 +49,7 @@ import org.junit.jupiter.api.Test;
/**
* Common superclass for testing {@link org.apache.poi.hssf.usermodel.HSSFCell},
- * {@link org.apache.poi.xssf.usermodel.XSSFCell} and
- * {@link org.apache.poi.xssf.streaming.SXSSFCell}
+ * XSSFCell and SXSSFCell
*/
public abstract class BaseTestSheet {
private static final int ROW_COUNT = 40000;
@@ -430,7 +428,7 @@ public abstract class BaseTestSheet {
assertCollectionEquals(mergedRegions.values(), sheet.getMergedRegions());
Collection<Integer> removed = Arrays.asList(0, 2, 3, 6, 8);
- mergedRegions.keySet().removeAll(removed);
+ removed.forEach(mergedRegions.keySet()::remove);
sheet.removeMergedRegions(removed);
assertCollectionEquals(mergedRegions.values(), sheet.getMergedRegions());
}
@@ -1364,4 +1362,9 @@ public abstract class BaseTestSheet {
assertBetween("Date column width", s.getColumnWidth(1), 4750, 7300);
}
}
+
+ private static void assertBetween(String message, int value, int min, int max) {
+ assertTrue(min <= value, message + ": " + value + " is less than the minimum value of " + min);
+ assertTrue(value <= max, message + ": " + value + " is greater than the maximum value of " + max);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org