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