This is an automated email from the ASF dual-hosted git repository.

pjfanning pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 413719df29 use StringUtil.equalsIgnoreCase (#1137)
413719df29 is described below

commit 413719df29892540d887698582fe9f30074bf000
Author: PJ Fanning <[email protected]>
AuthorDate: Fri Jun 12 12:26:53 2026 +0100

    use StringUtil.equalsIgnoreCase (#1137)
---
 .../java/org/apache/poi/ooxml/POIXMLFactory.java   |  3 +-
 .../org/apache/poi/ooxml/util/POIXMLUnits.java     |  7 +-
 .../org/apache/poi/ooxml/util/XPathHelper.java     |  3 +-
 .../org/apache/poi/openxml4j/opc/OPCPackage.java   |  3 +-
 .../apache/poi/openxml4j/opc/PackagePartName.java  |  3 +-
 .../org/apache/poi/openxml4j/opc/ZipPackage.java   |  3 +-
 .../poi/openxml4j/opc/internal/ContentType.java    |  3 +-
 .../openxml4j/opc/internal/ContentTypeManager.java |  4 +-
 .../poi/openxml4j/util/ZipFileZipEntrySource.java  |  3 +-
 .../util/ZipInputStreamZipEntrySource.java         |  3 +-
 .../poi/poifs/crypt/dsig/SignatureConfig.java      | 79 +++++++++++-----------
 .../org/apache/poi/xslf/draw/SVGImageRenderer.java |  3 +-
 .../apache/poi/xslf/usermodel/XSLFFontInfo.java    | 24 +++----
 .../java/org/apache/poi/xslf/util/PPTX2PNG.java    |  3 +-
 .../apache/poi/xssf/eventusermodel/XSSFReader.java |  7 +-
 .../xssf/usermodel/BaseXSSFEvaluationWorkbook.java |  3 +-
 .../org/apache/poi/xssf/usermodel/XSSFName.java    |  4 +-
 .../org/apache/poi/xssf/usermodel/XSSFSheet.java   |  5 +-
 .../org/apache/poi/xssf/usermodel/XSSFTable.java   |  2 +-
 .../apache/poi/xssf/usermodel/XSSFWorkbook.java    |  9 +--
 .../apache/poi/hemf/draw/HemfImageRenderer.java    |  3 +-
 .../java/org/apache/poi/hmef/dev/HMEFDumper.java   |  3 +-
 .../org/apache/poi/hslf/dev/SlideShowDumper.java   |  3 +-
 .../main/java/org/apache/poi/hsmf/MAPIMessage.java | 16 ++---
 .../apache/poi/hwmf/draw/HwmfImageRenderer.java    |  5 +-
 .../apache/poi/poifs/macros/VBAMacroReader.java    | 65 ++++++++++--------
 26 files changed, 146 insertions(+), 123 deletions(-)

diff --git a/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLFactory.java 
b/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLFactory.java
index 1c0d37888f..c443291c75 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLFactory.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLFactory.java
@@ -25,6 +25,7 @@ import 
org.apache.poi.ooxml.POIXMLRelation.ParentPartConstructor;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.util.StringUtil;
 import org.apache.xmlbeans.XmlException;
 
 /**
@@ -111,7 +112,7 @@ public abstract class POIXMLFactory {
              String partName = part.getPartName().getName();
              for (PackageRelationship pr : 
parent.getPackagePart().getRelationships()) {
                  String packName = pr.getTargetURI().toASCIIString();
-                 if (packName.equalsIgnoreCase(partName)) {
+                 if (StringUtil.equalsIgnoreCase(packName, partName)) {
                      return pr;
                  }
              }
diff --git a/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/POIXMLUnits.java 
b/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/POIXMLUnits.java
index cc847cb2ab..584caf0484 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/POIXMLUnits.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/POIXMLUnits.java
@@ -17,6 +17,8 @@
 
 package org.apache.poi.ooxml.util;
 
+import org.apache.poi.util.StringUtil;
+
 import static org.apache.poi.util.Units.EMU_PER_DXA;
 import static org.apache.poi.util.Units.EMU_PER_INCH;
 import static org.apache.poi.util.Units.EMU_PER_POINT;
@@ -264,7 +266,10 @@ public class POIXMLUnits {
     public static boolean 
parseOnOff(org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STOnOff 
onOff) {
         if (onOff == null) return false;
         String str = onOff.getStringValue();
-        return ("true".equalsIgnoreCase(str) || "on".equalsIgnoreCase(str) || 
"x".equalsIgnoreCase(str) || "1".equals(str));
+        return StringUtil.equalsIgnoreCase("true", str) ||
+                StringUtil.equalsIgnoreCase("on", str) ||
+                StringUtil.equalsIgnoreCase("x", str) ||
+                "1".equals(str);
     }
 
 }
diff --git a/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java 
b/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java
index a0ba2d67f5..8fa8fbf7aa 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java
@@ -27,6 +27,7 @@ import 
com.microsoft.schemas.compatibility.AlternateContentDocument;
 import org.apache.logging.log4j.Logger;
 import org.apache.poi.logging.PoiLogManager;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.xslf.usermodel.XSLFShape;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlException;
@@ -185,7 +186,7 @@ public final class XPathHelper {
             XmlCursor innerCur = null;
             try (XmlCursor cCur = choice.newCursor()) {
                 String requiresNS = 
cCur.namespaceForPrefix(choice.getRequires());
-                if (MAC_DML_NS.equalsIgnoreCase(requiresNS)) {
+                if (StringUtil.equalsIgnoreCase(MAC_DML_NS, requiresNS)) {
                     // Mac DML usually contains PDFs ...
                     continue;
                 }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
index fcb774d4f7..c42486ca40 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
@@ -664,8 +664,7 @@ public abstract class OPCPackage implements 
RelationshipSource, Closeable {
         if (StringUtil.isNotBlank(this.originalPackagePath)) {
             File targetFile = new File(this.originalPackagePath);
             if (!targetFile.exists()
-                    || !(this.originalPackagePath
-                            .equalsIgnoreCase(targetFile.getAbsolutePath()))) {
+                    || !StringUtil.equalsIgnoreCase(this.originalPackagePath, 
targetFile.getAbsolutePath())) {
                 // Case of a package created from scratch
                 save(targetFile);
             } else {
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartName.java 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartName.java
index 971064db69..f3232d71f5 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartName.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartName.java
@@ -24,6 +24,7 @@ import java.util.Locale;
 
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException;
+import org.apache.poi.util.StringUtil;
 
 /**
  * An immutable Open Packaging Convention compliant part name.
@@ -528,7 +529,7 @@ public final class PackagePartName implements 
Comparable<PackagePartName> {
             return 1;
         }
 
-        if (str1.equalsIgnoreCase(str2)) {
+        if (StringUtil.equalsIgnoreCase(str1, str2)) {
             return 0;
         }
         final String name1 = str1.toLowerCase(Locale.ROOT);
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
index 6869d02a6e..e12dcfdb43 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
@@ -52,6 +52,7 @@ import org.apache.poi.openxml4j.util.ZipFileZipEntrySource;
 import org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource;
 import org.apache.poi.openxml4j.util.ZipSecureFile;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.TempFile;
 
 /**
@@ -450,7 +451,7 @@ public final class ZipPackage extends OPCPackage {
                 try {
                     // We get an error when we parse [Content_Types].xml
                     // because it's not a valid URI.
-                    ppn = 
(CONTENT_TYPES_PART_NAME.equalsIgnoreCase(entryName)) ? null
+                    ppn = StringUtil.equalsIgnoreCase(CONTENT_TYPES_PART_NAME, 
entryName) ? null
                             : 
PackagingURIHelper.createPartName(ZipHelper.getOPCNameFromZipItemName(entryName));
                 } catch (Exception e) {
                     // We assume we can continue, even in degraded mode ...
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentType.java
 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentType.java
index f95aad6a30..e69529def9 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentType.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentType.java
@@ -26,6 +26,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.util.StringUtil;
 
 /**
  * Represents an immutable MIME ContentType value (RFC 2616 &#167;3.7)
@@ -206,7 +207,7 @@ public final class ContentType {
     @Override
     public boolean equals(Object obj) {
         return (!(obj instanceof ContentType))
-                || (this.toString().equalsIgnoreCase(obj.toString()));
+                || (StringUtil.equalsIgnoreCase(this.toString(), 
obj.toString()));
     }
 
     @Override
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
index 3b5303d206..0688093d51 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
@@ -35,6 +35,7 @@ import org.apache.poi.openxml4j.opc.PackageNamespaces;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.util.StringUtil;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
@@ -232,8 +233,7 @@ public abstract class ContentTypeManager {
             try {
                 for (PackagePart part : this.container.getParts()) {
                     if (!part.getPartName().equals(partName)
-                            && part.getPartName().getExtension()
-                                    .equalsIgnoreCase(extensionToDelete)) {
+                            && 
StringUtil.equalsIgnoreCase(part.getPartName().getExtension(), 
extensionToDelete)) {
                         deleteDefaultContentTypeFlag = false;
                         break;
                     }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipFileZipEntrySource.java
 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipFileZipEntrySource.java
index d1322fef30..41ef77796a 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipFileZipEntrySource.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipFileZipEntrySource.java
@@ -23,6 +23,7 @@ import java.util.Enumeration;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipFile;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.StringUtil;
 
 /**
  * A ZipEntrySource wrapper around a ZipFile.
@@ -78,7 +79,7 @@ public class ZipFileZipEntrySource implements ZipEntrySource {
         final Enumeration<ZipArchiveEntry> zipArchiveEntryEnumeration = 
zipArchive.getEntries();
         while (zipArchiveEntryEnumeration.hasMoreElements()) {
             ZipArchiveEntry ze = zipArchiveEntryEnumeration.nextElement();
-            if 
(normalizedPath.equalsIgnoreCase(IOUtils.normalizePath(ze.getName()))) {
+            if (StringUtil.equalsIgnoreCase(normalizedPath, 
IOUtils.normalizePath(ze.getName()))) {
                 return ze;
             }
         }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java
 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java
index 2e4265e4bb..d036906ad2 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java
@@ -29,6 +29,7 @@ import java.util.Set;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.poi.openxml4j.opc.internal.InvalidZipException;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.StringUtil;
 
 /**
  * Provides a way to get at all the ZipEntries
@@ -169,7 +170,7 @@ public class ZipInputStreamZipEntrySource implements 
ZipEntrySource {
         }
 
         for (final Map.Entry<String, ZipArchiveFakeEntry> fze : 
zipEntries.entrySet()) {
-            if 
(normalizedPath.equalsIgnoreCase(IOUtils.normalizePath(fze.getKey()))) {
+            if (StringUtil.equalsIgnoreCase(normalizedPath, 
IOUtils.normalizePath(fze.getKey()))) {
                 return fze.getValue();
             }
         }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java 
b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
index a3e585b521..20049ccefb 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
@@ -19,6 +19,7 @@ package org.apache.poi.poifs.crypt.dsig;
 
 import static 
org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.OO_DIGSIG_NS;
 import static 
org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XADES_132_NS;
+import static org.apache.poi.util.StringUtil.equalsIgnoreCase;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -465,16 +466,14 @@ public class SignatureConfig {
             return defaultMethod;
         }
 
-        switch (canonicalizationMethod) {
-            case Transform.ENVELOPED:
-            case CanonicalizationMethod.INCLUSIVE:
-            case CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS:
-            case CanonicalizationMethod.EXCLUSIVE:
-            case CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS:
-                return canonicalizationMethod;
-        }
+        return switch (canonicalizationMethod) {
+            case Transform.ENVELOPED, CanonicalizationMethod.INCLUSIVE, 
CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
+                 CanonicalizationMethod.EXCLUSIVE, 
CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS ->
+                    canonicalizationMethod;
+            default ->
+                    throw new EncryptedDocumentException("Unknown 
CanonicalizationMethod: " + canonicalizationMethod);
+        };
 
-        throw new EncryptedDocumentException("Unknown CanonicalizationMethod: 
"+canonicalizationMethod);
     }
 
     /**
@@ -856,16 +855,16 @@ public class SignatureConfig {
      * supported, so it's the rsa variant of the main digest
      */
     public String getSignatureMethodUri() {
-        switch (getDigestAlgo()) {
-        case sha1:   return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1;
-        case sha224: return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA224;
-        case sha256: return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256;
-        case sha384: return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384;
-        case sha512: return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512;
-        case ripemd160: return XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160;
-        default: throw new EncryptedDocumentException("Hash algorithm "
-            +getDigestAlgo()+" not supported for signing.");
-        }
+        return switch (getDigestAlgo()) {
+            case sha1 -> XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1;
+            case sha224 -> XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA224;
+            case sha256 -> XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256;
+            case sha384 -> XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384;
+            case sha512 -> XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512;
+            case ripemd160 -> XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160;
+            default -> throw new EncryptedDocumentException("Hash algorithm "
+                    + getDigestAlgo() + " not supported for signing.");
+        };
     }
 
     /**
@@ -883,16 +882,16 @@ public class SignatureConfig {
      * @return the uri for the given digest
      */
     public static String getDigestMethodUri(HashAlgorithm digestAlgo) {
-        switch (digestAlgo) {
-        case sha1:   return DigestMethod.SHA1;
-        case sha224: return DigestMethod_SHA224;
-        case sha256: return DigestMethod.SHA256;
-        case sha384: return DigestMethod_SHA384;
-        case sha512: return DigestMethod.SHA512;
-        case ripemd160: return DigestMethod.RIPEMD160;
-        default: throw new EncryptedDocumentException("Hash algorithm "
-            +digestAlgo+" not supported for signing.");
-        }
+        return switch (digestAlgo) {
+            case sha1 -> DigestMethod.SHA1;
+            case sha224 -> DigestMethod_SHA224;
+            case sha256 -> DigestMethod.SHA256;
+            case sha384 -> DigestMethod_SHA384;
+            case sha512 -> DigestMethod.SHA512;
+            case ripemd160 -> DigestMethod.RIPEMD160;
+            default -> throw new EncryptedDocumentException("Hash algorithm "
+                    + digestAlgo + " not supported for signing.");
+        };
     }
 
     /**
@@ -906,16 +905,16 @@ public class SignatureConfig {
         if (digestMethodUri == null || digestMethodUri.isEmpty()) {
             return null;
         }
-        switch (digestMethodUri) {
-            case DigestMethod.SHA1:   return HashAlgorithm.sha1;
-            case DigestMethod_SHA224: return HashAlgorithm.sha224;
-            case DigestMethod.SHA256: return HashAlgorithm.sha256;
-            case DigestMethod_SHA384: return HashAlgorithm.sha384;
-            case DigestMethod.SHA512: return HashAlgorithm.sha512;
-            case DigestMethod.RIPEMD160: return HashAlgorithm.ripemd160;
-            default: throw new EncryptedDocumentException("Hash algorithm "
-                    +digestMethodUri+" not supported for signing.");
-        }
+        return switch (digestMethodUri) {
+            case DigestMethod.SHA1 -> HashAlgorithm.sha1;
+            case DigestMethod_SHA224 -> HashAlgorithm.sha224;
+            case DigestMethod.SHA256 -> HashAlgorithm.sha256;
+            case DigestMethod_SHA384 -> HashAlgorithm.sha384;
+            case DigestMethod.SHA512 -> HashAlgorithm.sha512;
+            case DigestMethod.RIPEMD160 -> HashAlgorithm.ripemd160;
+            default -> throw new EncryptedDocumentException("Hash algorithm "
+                    + digestMethodUri + " not supported for signing.");
+        };
     }
 
     /**
@@ -1150,7 +1149,7 @@ public class SignatureConfig {
                 }
                 Optional<X509Certificate> found = Stream.of(chain)
                     .map(X509Certificate.class::cast)
-                    .filter(c -> 
principalName.equalsIgnoreCase(c.getSubjectX500Principal().getName()))
+                    .filter(c -> equalsIgnoreCase(principalName, 
c.getSubjectX500Principal().getName()))
                     .findFirst();
                 if (found.isPresent()) {
                     return found.get();
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/SVGImageRenderer.java 
b/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/SVGImageRenderer.java
index 66d32f85a8..7b99086dd3 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/SVGImageRenderer.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/SVGImageRenderer.java
@@ -41,6 +41,7 @@ import org.apache.poi.sl.draw.Drawable;
 import org.apache.poi.sl.draw.ImageRenderer;
 import org.apache.poi.sl.usermodel.PictureData;
 import org.apache.poi.util.MathUtil;
+import org.apache.poi.util.StringUtil;
 import org.w3c.dom.svg.SVGDocument;
 
 public class SVGImageRenderer implements ImageRenderer {
@@ -146,7 +147,7 @@ public class SVGImageRenderer implements ImageRenderer {
 
     @Override
     public boolean canRender(String contentType) {
-        return 
PictureData.PictureType.SVG.contentType.equalsIgnoreCase(contentType);
+        return 
StringUtil.equalsIgnoreCase(PictureData.PictureType.SVG.contentType, 
contentType);
     }
 
     @Override
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java 
b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java
index 3addddbb92..abee6f15fd 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java
@@ -38,6 +38,7 @@ import org.apache.poi.common.usermodel.fonts.FontPitch;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.StringUtil;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTextFont;
 import 
org.openxmlformats.schemas.presentationml.x2006.main.CTEmbeddedFontDataId;
 import org.openxmlformats.schemas.presentationml.x2006.main.CTEmbeddedFontList;
@@ -59,7 +60,7 @@ public class XSLFFontInfo implements FontInfo {
             ? pres.getEmbeddedFontLst() : pres.addNewEmbeddedFontLst();
 
         for (CTEmbeddedFontListEntry fe : fontList.getEmbeddedFontArray()) {
-            if (typeface.equalsIgnoreCase(fe.getFont().getTypeface())) {
+            if (StringUtil.equalsIgnoreCase(typeface, 
fe.getFont().getTypeface())) {
                 fontListEntry = fe;
                 return;
             }
@@ -154,24 +155,16 @@ public class XSLFFontInfo implements FontInfo {
         final int style =
                 (header.getWeight() > 400 ? Font.BOLD : Font.PLAIN) |
                         (header.isItalic() ? Font.ITALIC : Font.PLAIN);
-        switch (style) {
-            case Font.PLAIN:
-                dataId = fontListEntry.isSetRegular()
+        dataId = switch (style) {
+            case Font.PLAIN -> fontListEntry.isSetRegular()
                     ? fontListEntry.getRegular() : 
fontListEntry.addNewRegular();
-                break;
-            case Font.BOLD:
-                dataId = fontListEntry.isSetBold()
+            case Font.BOLD -> fontListEntry.isSetBold()
                     ? fontListEntry.getBold() : fontListEntry.addNewBold();
-                break;
-            case Font.ITALIC:
-                dataId = fontListEntry.isSetItalic()
+            case Font.ITALIC -> fontListEntry.isSetItalic()
                     ? fontListEntry.getItalic() : fontListEntry.addNewItalic();
-                break;
-            default:
-                dataId = fontListEntry.isSetBoldItalic()
+            default -> fontListEntry.isSetBoldItalic()
                     ? fontListEntry.getBoldItalic() : 
fontListEntry.addNewBoldItalic();
-                break;
-        }
+        };
 
         XSLFFontFacet facet = new XSLFFontFacet(dataId);
         facet.setFontData(is);
@@ -275,7 +268,6 @@ public class XSLFFontInfo implements FontInfo {
     public static List<XSLFFontInfo> getFonts(XMLSlideShow ppt) {
         final CTPresentation pres = ppt.getCTPresentation();
 
-        //noinspection deprecation
         return pres.isSetEmbeddedFontLst()
             ? Stream.of(pres.getEmbeddedFontLst().getEmbeddedFontArray())
                 .map(fe -> new XSLFFontInfo(ppt, 
fe)).collect(Collectors.toList())
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java 
b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java
index 3a6e1e9b25..13b8eb9024 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java
@@ -46,6 +46,7 @@ import org.apache.poi.util.Dimension2DDouble;
 import org.apache.poi.util.GenericRecordJsonWriter;
 import org.apache.poi.util.LocaleUtil;
 import org.apache.poi.util.MathUtil;
+import org.apache.poi.util.StringUtil;
 
 /**
  * An utility to convert slides of a .pptx slide show to a PNG image
@@ -238,7 +239,7 @@ public final class PPTX2PNG {
             }
         }
 
-        final boolean isStdin = file != null && 
"stdin".equalsIgnoreCase(file.getName());
+        final boolean isStdin = file != null && 
StringUtil.equalsIgnoreCase("stdin", file.getName());
 
         if (!isStdin && (file == null || !file.exists())) {
             usage("File not specified or it doesn't exist");
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
index f945b3457f..8fc307729a 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
@@ -43,6 +43,7 @@ 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.StringUtil;
 import org.apache.poi.util.XMLHelper;
 import org.apache.poi.xssf.model.*;
 import org.apache.poi.xssf.usermodel.XSSFDrawing;
@@ -535,14 +536,14 @@ public class XSSFReader {
         // and add XSSFSheetRef(id="rId6", name="Sheet6") to sheetRefs
         @Override
         public void startElement(String uri, String localName, String qName, 
Attributes attrs) throws SAXException {
-            if (localName.equalsIgnoreCase(SHEET)) {
+            if (StringUtil.equalsIgnoreCase(localName, SHEET)) {
                 String name = null;
                 String id = null;
                 for (int i = 0; i < attrs.getLength(); i++) {
                     final String attrName = attrs.getLocalName(i);
-                    if (attrName.equalsIgnoreCase(NAME)) {
+                    if (StringUtil.equalsIgnoreCase(attrName, NAME)) {
                         name = attrs.getValue(i);
-                    } else if (attrName.equalsIgnoreCase(ID)) {
+                    } else if (StringUtil.equalsIgnoreCase(attrName, ID)) {
                         id = attrs.getValue(i);
                     }
                     if (name != null && id != null) {
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
index 7c65d8f508..5cafcea7f0 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
@@ -43,6 +43,7 @@ import org.apache.poi.ss.util.AreaReference;
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.util.NotImplemented;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.xssf.model.ExternalLinksTable;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
 
@@ -170,7 +171,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements 
FormulaRenderingWork
             XSSFName nm = _uBook.getNameAt(i);
             String nameText = nm.getNameName();
             int nameSheetindex = nm.getSheetIndex();
-            if (name.equalsIgnoreCase(nameText) &&
+            if (StringUtil.equalsIgnoreCase(name, nameText) &&
                    (nameSheetindex == -1 || nameSheetindex == sheetIndex)) {
                 return new Name(nm, i, this);
             }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFName.java 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFName.java
index 163550506f..40d04226d9 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFName.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFName.java
@@ -26,6 +26,8 @@ import org.apache.poi.ss.util.AreaReference;
 import org.apache.poi.ss.util.CellReference;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
 
+import static org.apache.poi.util.StringUtil.equalsIgnoreCase;
+
 /**
  * Represents a defined named range in a SpreadsheetML workbook.
  * <p>
@@ -396,7 +398,7 @@ public final class XSSFName implements Name {
         if (name.length() > 255) {
             throw new IllegalArgumentException("Invalid name: '"+name+"': 
cannot exceed 255 characters in length");
         }
-        if (name.equalsIgnoreCase("R") || name.equalsIgnoreCase("C")) {
+        if (equalsIgnoreCase(name, "R") || equalsIgnoreCase(name, ("C"))) {
             throw new IllegalArgumentException("Invalid name: '"+name+"': 
cannot be special shorthand R or C");
         }
 
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
index e53f69c4b3..98f06ada70 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -53,6 +53,7 @@ import org.apache.poi.ss.util.SheetUtil;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.Removal;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.Units;
 import org.apache.poi.xssf.model.Comments;
 import 
org.apache.poi.xssf.usermodel.XSSFPivotTable.PivotTableReferenceConfigurator;
@@ -4749,7 +4750,7 @@ public class XSSFSheet extends POIXMLDocumentPart 
implements Sheet, OoxmlSheetEx
     @Beta
     public XSSFPivotTable createPivotTable(final AreaReference source, 
CellReference position, Sheet sourceSheet) {
         final String sourceSheetName = source.getFirstCell().getSheetName();
-        if(sourceSheetName != null && 
!sourceSheetName.equalsIgnoreCase(sourceSheet.getSheetName())) {
+        if(sourceSheetName != null && 
!StringUtil.equalsIgnoreCase(sourceSheetName, sourceSheet.getSheetName())) {
             throw new IllegalArgumentException("The area is referenced in 
another sheet than the "
                     + "defined source sheet " + sourceSheet.getSheetName() + 
".");
         }
@@ -4801,7 +4802,7 @@ public class XSSFSheet extends POIXMLDocumentPart 
implements Sheet, OoxmlSheetEx
     @Beta
     public XSSFPivotTable createPivotTable(AreaReference source, CellReference 
position){
         final String sourceSheetName = source.getFirstCell().getSheetName();
-        if(sourceSheetName != null && 
!sourceSheetName.equalsIgnoreCase(this.getSheetName())) {
+        if(sourceSheetName != null && 
!StringUtil.equalsIgnoreCase(sourceSheetName, this.getSheetName())) {
             final XSSFSheet sourceSheet = 
getWorkbook().getSheet(sourceSheetName);
             return createPivotTable(source, position, sourceSheet);
         }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java
index 480cc491c8..d94545a7d6 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java
@@ -280,7 +280,7 @@ public class XSSFTable extends POIXMLDocumentPart 
implements Table {
         // check if name is unique and calculate unique column id
         long nextColumnId = 0;
         for (XSSFTableColumn tableColumn : getColumns()) {
-            if (columnName != null && 
columnName.equalsIgnoreCase(tableColumn.getName())) {
+            if (columnName != null && StringUtil.equalsIgnoreCase(columnName, 
tableColumn.getName())) {
                 throw new IllegalArgumentException("Column '" + columnName
                         + "' already exists. Column names must be unique per 
table.");
             }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
index 533352ea90..455ae820cf 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
@@ -90,6 +90,7 @@ import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.NotImplemented;
 import org.apache.poi.util.Removal;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.XMLHelper;
 import org.apache.poi.xssf.XLSBUnsupportedException;
 import org.apache.poi.xssf.model.CalculationChain;
@@ -1232,7 +1233,7 @@ public class XSSFWorkbook extends POIXMLDocument 
implements Workbook, Date1904Su
         }
 
         for (XSSFSheet sheet : sheets) {
-            if (name.equalsIgnoreCase(sheet.getSheetName())) {
+            if (StringUtil.equalsIgnoreCase(name, sheet.getSheetName())) {
                 return sheet;
             }
         }
@@ -1263,7 +1264,7 @@ public class XSSFWorkbook extends POIXMLDocument 
implements Workbook, Date1904Su
     public int getSheetIndex(String name) {
         int idx = 0;
         for (XSSFSheet sh : sheets) {
-            if (name.equalsIgnoreCase(sh.getSheetName())) {
+            if (StringUtil.equalsIgnoreCase(name, sh.getSheetName())) {
                 return idx;
             }
             idx++;
@@ -1941,7 +1942,7 @@ public class XSSFWorkbook extends POIXMLDocument 
implements Workbook, Date1904Su
                 ctName = ctName.substring(0, MAX_SENSITIVE_SHEET_NAME_LEN);
             }
 
-            if (excludeSheetIdx != i && name.equalsIgnoreCase(ctName)) {
+            if (excludeSheetIdx != i && StringUtil.equalsIgnoreCase(name, 
ctName)) {
                 return true;
             }
         }
@@ -2553,7 +2554,7 @@ public class XSSFWorkbook extends POIXMLDocument 
implements Workbook, Date1904Su
         if (name != null && sheets != null) {
             for (XSSFSheet sheet : sheets) {
                 for (XSSFTable tbl : sheet.getTables()) {
-                    if (name.equalsIgnoreCase(tbl.getName())) {
+                    if (StringUtil.equalsIgnoreCase(name, tbl.getName())) {
                         return tbl;
                     }
                 }
diff --git 
a/poi-scratchpad/src/main/java/org/apache/poi/hemf/draw/HemfImageRenderer.java 
b/poi-scratchpad/src/main/java/org/apache/poi/hemf/draw/HemfImageRenderer.java
index cf348154f0..3ba45da83f 100644
--- 
a/poi-scratchpad/src/main/java/org/apache/poi/hemf/draw/HemfImageRenderer.java
+++ 
b/poi-scratchpad/src/main/java/org/apache/poi/hemf/draw/HemfImageRenderer.java
@@ -40,6 +40,7 @@ import org.apache.poi.sl.draw.EmbeddedExtractor;
 import org.apache.poi.sl.draw.ImageRenderer;
 import org.apache.poi.sl.usermodel.PictureData;
 import org.apache.poi.util.MathUtil;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.Units;
 
 @SuppressWarnings("unused")
@@ -50,7 +51,7 @@ public class HemfImageRenderer implements ImageRenderer, 
EmbeddedExtractor {
 
     @Override
     public boolean canRender(String contentType) {
-        return 
PictureData.PictureType.EMF.contentType.equalsIgnoreCase(contentType);
+        return 
StringUtil.equalsIgnoreCase(PictureData.PictureType.EMF.contentType, 
contentType);
     }
 
     @Override
diff --git 
a/poi-scratchpad/src/main/java/org/apache/poi/hmef/dev/HMEFDumper.java 
b/poi-scratchpad/src/main/java/org/apache/poi/hmef/dev/HMEFDumper.java
index 6ce5fc665b..81c6571cf9 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hmef/dev/HMEFDumper.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hmef/dev/HMEFDumper.java
@@ -32,6 +32,7 @@ import org.apache.poi.hmef.attribute.TNEFStringAttribute;
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.StringUtil;
 
 /**
  * Developer focused raw dumper
@@ -63,7 +64,7 @@ public final class HMEFDumper {
 
       boolean truncatePropData = true;
       for (String arg : args) {
-         if (arg.equalsIgnoreCase("--full")) {
+         if (StringUtil.equalsIgnoreCase(arg, "--full")) {
             truncatePropData = false;
             continue;
          }
diff --git 
a/poi-scratchpad/src/main/java/org/apache/poi/hslf/dev/SlideShowDumper.java 
b/poi-scratchpad/src/main/java/org/apache/poi/hslf/dev/SlideShowDumper.java
index 141f47d8c8..6f06a2efdd 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/dev/SlideShowDumper.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/dev/SlideShowDumper.java
@@ -28,6 +28,7 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.StringUtil;
 
 import java.io.File;
 import java.io.IOException;
@@ -99,7 +100,7 @@ public final class SlideShowDumper {
             SlideShowDumper foo = new SlideShowDumper(poifs, System.out);
 
             if (args.length > 1) {
-                if (args[0].equalsIgnoreCase("-escher")) {
+                if (StringUtil.equalsIgnoreCase(args[0], "-escher")) {
                     foo.setDDFEscher(true);
                 } else {
                     foo.setBasicEscher(true);
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java 
b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
index 36e8ba32dd..2d99b7b5b0 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
@@ -475,7 +475,7 @@ public class MAPIMessage extends POIReadOnlyDocument {
         if (generalcodepage == null) {
             try {
                 String[] headers = getHeaders();
-                if (headers != null && headers.length > 0) {
+                if (headers != null) {
                     for (String header : headers) {
                         if 
(header.toLowerCase(LocaleUtil.getUserLocale()).startsWith("content-type")) {
                             Matcher m = 
GUESS_7_BIT_ENCODING_PATTERN.matcher(header);
@@ -498,7 +498,7 @@ public class MAPIMessage extends POIReadOnlyDocument {
             try {
                 String encoding = CodePageUtil.codepageToEncoding(codepage, 
true);
                 htmlbodycodepage = encoding;
-                if (!encoding.equalsIgnoreCase("utf-8")) {
+                if (!StringUtil.equalsIgnoreCase(encoding, "utf-8")) {
                     bodycodepage = encoding;
                 }
             } catch (UnsupportedEncodingException e) {
@@ -630,17 +630,17 @@ public class MAPIMessage extends POIReadOnlyDocument {
         String mc = getStringFromChunk(mainChunks.getMessageClass());
         if (StringUtil.isBlank(mc)) {
             return MESSAGE_CLASS.UNSPECIFIED;
-        } else if (mc.equalsIgnoreCase("IPM.Note")) {
+        } else if (StringUtil.equalsIgnoreCase(mc, "IPM.Note")) {
             return MESSAGE_CLASS.NOTE;
-        } else if (mc.equalsIgnoreCase("IPM.Contact")) {
+        } else if (StringUtil.equalsIgnoreCase(mc, "IPM.Contact")) {
             return MESSAGE_CLASS.CONTACT;
-        } else if (mc.equalsIgnoreCase("IPM.Appointment")) {
+        } else if (StringUtil.equalsIgnoreCase(mc, "IPM.Appointment")) {
             return MESSAGE_CLASS.APPOINTMENT;
-        } else if (mc.equalsIgnoreCase("IPM.StickyNote")) {
+        } else if (StringUtil.equalsIgnoreCase(mc, "IPM.StickyNote")) {
             return MESSAGE_CLASS.STICKY_NOTE;
-        } else if (mc.equalsIgnoreCase("IPM.Task")) {
+        } else if (StringUtil.equalsIgnoreCase(mc, "IPM.Task")) {
             return MESSAGE_CLASS.TASK;
-        } else if (mc.equalsIgnoreCase("IPM.Post")) {
+        } else if (StringUtil.equalsIgnoreCase(mc, "IPM.Post")) {
             return MESSAGE_CLASS.POST;
         } else {
             LOG.atWarn().log("I don't recognize message class '{}'. Please 
open an issue on POI's bugzilla", mc);
diff --git 
a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/draw/HwmfImageRenderer.java 
b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/draw/HwmfImageRenderer.java
index c43ec8b54a..064b4804ae 100644
--- 
a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/draw/HwmfImageRenderer.java
+++ 
b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/draw/HwmfImageRenderer.java
@@ -41,6 +41,7 @@ import org.apache.poi.sl.draw.ImageRenderer;
 import org.apache.poi.sl.usermodel.PictureData.PictureType;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.MathUtil;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.Units;
 
 /**
@@ -54,7 +55,7 @@ public class HwmfImageRenderer implements ImageRenderer, 
EmbeddedExtractor {
 
     @Override
     public boolean canRender(String contentType) {
-        return PictureType.WMF.contentType.equalsIgnoreCase(contentType);
+        return StringUtil.equalsIgnoreCase(PictureType.WMF.contentType, 
contentType);
     }
 
     @Override
@@ -170,7 +171,7 @@ public class HwmfImageRenderer implements ImageRenderer, 
EmbeddedExtractor {
         return () -> {
             final Iterator<HwmfEmbedded> embit = embs.iterator();
             final int[] idx = { 1 };
-            return new Iterator<EmbeddedExtractor.EmbeddedPart>() {
+            return new Iterator<>() {
                 @Override
                 public boolean hasNext() {
                     return embit.hasNext();
diff --git a/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java 
b/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java
index a56a1cd161..f422870f1c 100644
--- a/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java
+++ b/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java
@@ -18,8 +18,7 @@
 package org.apache.poi.poifs.macros;
 
 import static org.apache.logging.log4j.util.Unbox.box;
-import static org.apache.poi.util.StringUtil.endsWithIgnoreCase;
-import static org.apache.poi.util.StringUtil.startsWithIgnoreCase;
+import static org.apache.poi.util.StringUtil.*;
 
 import java.io.Closeable;
 import java.io.EOFException;
@@ -53,7 +52,6 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.RLEDecompressingInputStream;
-import org.apache.poi.util.StringUtil;
 
 /**
  * <p>Finds all VBA Macros in an office file (OLE2/POIFS and OOXML/OPC),
@@ -190,7 +188,7 @@ public class VBAMacroReader implements Closeable {
         }
     }
     protected static class ModuleMap extends HashMap<String, ModuleImpl> {
-        Charset charset = StringUtil.WIN_1252; // default charset
+        Charset charset = WIN_1252; // default charset
     }
 
     /**
@@ -204,14 +202,14 @@ public class VBAMacroReader implements Closeable {
      * @since 3.15-beta2
      */
     protected void findMacros(DirectoryNode dir, ModuleMap modules) throws 
IOException {
-        if (VBA_PROJECT_POIFS.equalsIgnoreCase(dir.getName())) {
+        if (equalsIgnoreCase(VBA_PROJECT_POIFS, dir.getName())) {
             // VBA project directory, process
             readMacros(dir, modules);
         } else {
             // Check children
             for (Entry child : dir) {
-                if (child instanceof DirectoryNode) {
-                    findMacros((DirectoryNode)child, modules);
+                if (child instanceof DirectoryNode dn) {
+                    findMacros(dn, modules);
                 }
             }
         }
@@ -334,50 +332,61 @@ public class VBAMacroReader implements Closeable {
         //but may be in another directory (\_VBA_PROJECT_CUR\VBA ENTRY NAME)
         //process the dirstream first -- "dir" is case insensitive
         for (String entryName : macroDir.getEntryNames()) {
-            if ("dir".equalsIgnoreCase(entryName)) {
+            if (equalsIgnoreCase("dir", entryName)) {
                 processDirStream(macroDir.getEntryCaseInsensitive(entryName), 
modules);
                 break;
             }
         }
 
         for (Entry entry : macroDir) {
-            if (! (entry instanceof DocumentNode)) { continue; }
 
-            String name = entry.getName();
-            DocumentNode document = (DocumentNode)entry;
+            if (entry instanceof DocumentNode document) {
+                String name = entry.getName();
 
-            if (! "dir".equalsIgnoreCase(name) && !startsWithIgnoreCase(name, 
"__SRP")
+                if (!equalsIgnoreCase("dir", name) && 
!startsWithIgnoreCase(name, "__SRP")
                         && !startsWithIgnoreCase(name, "_VBA_PROJECT")) {
                     // process module, skip __SRP and _VBA_PROJECT since these 
do not contain macros
                     readModuleFromDocumentStream(document, name, modules);
+                }
             }
+
         }
     }
 
     protected void findProjectProperties(DirectoryNode node, Map<String, 
String> moduleNameMap, ModuleMap modules) throws IOException {
         for (Entry entry : node) {
-            if ("project".equalsIgnoreCase(entry.getName())) {
-                DocumentNode document = (DocumentNode)entry;
-                try(DocumentInputStream dis = new 
DocumentInputStream(document)) {
-                    readProjectProperties(dis, moduleNameMap, modules);
-                    return;
+            if (equalsIgnoreCase("project", entry.getName())) {
+                if (entry instanceof DocumentNode document) {
+                    try(DocumentInputStream dis = new 
DocumentInputStream(document)) {
+                        readProjectProperties(dis, moduleNameMap, modules);
+                        return;
+                    }
+                } else {
+                    throw new IllegalStateException("project node is expected 
to be a DocumentNode, found " +
+                            entry.getClass().getName());
                 }
-            } else if (entry instanceof DirectoryNode) {
-                findProjectProperties((DirectoryNode)entry, moduleNameMap, 
modules);
+            } else if (entry instanceof DirectoryNode dn) {
+                findProjectProperties(dn, moduleNameMap, modules);
             }
         }
     }
 
     protected void findModuleNameMap(DirectoryNode node, Map<String, String> 
moduleNameMap, ModuleMap modules) throws IOException {
         for (Entry entry : node) {
-            if ("projectwm".equalsIgnoreCase(entry.getName())) {
-                DocumentNode document = (DocumentNode)entry;
-                try(DocumentInputStream dis = new 
DocumentInputStream(document)) {
-                    readNameMapRecords(dis, moduleNameMap, modules.charset);
-                    return;
+            if (equalsIgnoreCase("projectwm", entry.getName())) {
+                if (entry instanceof DocumentNode document) {
+                    try (DocumentInputStream dis = new 
DocumentInputStream(document)) {
+                        readNameMapRecords(dis, moduleNameMap, 
modules.charset);
+                        return;
+                    }
+                } else {
+                    throw new IllegalStateException("projectwm node is 
expected to be a DocumentNode, found " +
+                            entry.getClass().getName());
                 }
             } else if (entry.isDirectoryEntry()) {
-                findModuleNameMap((DirectoryNode)entry, moduleNameMap, 
modules);
+                if (entry instanceof DirectoryNode dn) {
+                    findModuleNameMap(dn, moduleNameMap, modules);
+                }
             }
         }
     }
@@ -672,7 +681,7 @@ public class VBAMacroReader implements Closeable {
             } catch (EOFException e) {
                 return;
             }
-            if (StringUtil.isNotBlank(mbcs) && StringUtil.isNotBlank(unicode)) 
{
+            if (isNotBlank(mbcs) && isNotBlank(unicode)) {
                 moduleNames.put(mbcs, unicode);
             }
 
@@ -795,7 +804,7 @@ public class VBAMacroReader implements Closeable {
         if (bytesRead != unicodeNameRecordLength) {
             throw new EOFException();
         }
-        return new String(buffer, StringUtil.UTF16LE);
+        return new String(buffer, UTF16LE);
     }
 
     /**
@@ -828,7 +837,7 @@ public class VBAMacroReader implements Closeable {
                         //can be many 0 length or junk streams that are 
uncompressed
                         //look in the first 20 characters for "Attribute"
                         int firstX = Math.min(20, decompressed.length);
-                        String start = new String(decompressed, 0, firstX, 
StringUtil.WIN_1252);
+                        String start = new String(decompressed, 0, firstX, 
WIN_1252);
                         if (start.contains("Attribute")) {
                             return decompressed;
                         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to