From 579c57c0c9db7720146edd8a86b092d7f149bcd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Estrada?= <69777842+jjestrada2@users.noreply.github.com> Date: Fri, 31 Jan 2025 12:21:57 -0500 Subject: [PATCH] Update ClassParser.java Refactor ClassParser to use instanceof for ZIP/JAR detection Removed reflection-based input stream detection (getClass().getName()). Replaced with instanceof checks for ZipInputStream and JarInputStream. Added missing imports for ZipInputStream and JarInputStream. Improved maintainability by eliminating unnecessary string operations. Enhanced performance by using a direct type check instead of string comparisons. --- src/main/java/org/apache/bcel/classfile/ClassParser.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/bcel/classfile/ClassParser.java b/src/main/java/org/apache/bcel/classfile/ClassParser.java index e1f5718c06..f2cae36f53 100644 --- a/src/main/java/org/apache/bcel/classfile/ClassParser.java +++ b/src/main/java/org/apache/bcel/classfile/ClassParser.java @@ -25,6 +25,9 @@ import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import java.util.zip.ZipInputStream; +import java.util.jar.JarInputStream; + import org.apache.bcel.Const; @@ -65,8 +68,9 @@ public final class ClassParser { public ClassParser(final InputStream inputStream, final String fileName) { this.fileName = fileName; this.fileOwned = false; - final String clazz = inputStream.getClass().getName(); // Not a very clean solution ... - this.isZip = clazz.startsWith("java.util.zip.") || clazz.startsWith("java.util.jar."); + + this.isZip = (inputStream instanceof ZipInputStream) || (inputStream instanceof JarInputStream); + if (inputStream instanceof DataInputStream) { this.dataInputStream = (DataInputStream) inputStream; } else {