You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/11/16 14:11:28 UTC

[commons-bcel] branch master updated: Add org.apache.bcel.classfile.JavaClass.EXTENSION.

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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git


The following commit(s) were added to refs/heads/master by this push:
     new 5c448861 Add org.apache.bcel.classfile.JavaClass.EXTENSION.
5c448861 is described below

commit 5c4488612af84c976467206386f59ee5e4a44991
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Wed Nov 16 09:11:23 2022 -0500

    Add org.apache.bcel.classfile.JavaClass.EXTENSION.
---
 src/changes/changes.xml                                           | 1 +
 src/examples/Helloify.java                                        | 2 +-
 src/examples/ListClass.java                                       | 2 +-
 src/examples/Mini/MiniC.java                                      | 2 +-
 src/examples/Package.java                                         | 4 ++--
 src/main/java/org/apache/bcel/classfile/JavaClass.java            | 7 +++++++
 .../java/org/apache/bcel/util/AbstractClassPathRepository.java    | 2 +-
 src/main/java/org/apache/bcel/util/ClassLoaderRepository.java     | 2 +-
 src/main/java/org/apache/bcel/util/ClassPath.java                 | 8 +++++---
 src/main/java/org/apache/bcel/verifier/NativeVerifier.java        | 3 ++-
 src/main/java/org/apache/bcel/verifier/TransitiveHull.java        | 2 +-
 src/main/java/org/apache/bcel/verifier/Verifier.java              | 4 ++--
 src/main/java/org/apache/bcel/verifier/VerifyDialog.java          | 2 +-
 src/test/java/org/apache/bcel/BCELBenchmark.java                  | 2 +-
 src/test/java/org/apache/bcel/PerformanceTest.java                | 2 +-
 src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java | 2 +-
 src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java | 2 +-
 src/test/java/org/apache/bcel/util/BCELifierTestCase.java         | 4 ++--
 src/test/java/org/apache/bcel/verifier/VerifierTestCase.java      | 2 +-
 .../java/org/apache/bcel/verifier/VerifyBadClassesTestCase.java   | 3 ++-
 src/test/java/org/apache/bcel/verifier/tests/TestCreator.java     | 4 +++-
 21 files changed, 38 insertions(+), 24 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c8e0a127..b02af299 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -65,6 +65,7 @@ The <action> type attribute can be add,update,fix,remove.
     <release version="6.6.2" date="20YY-MM-DD" description="Maintenance and bug fix release.">
       <!-- ADD -->
       <action                  type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.classfile.ClassFormatException.ClassFormatException(Throwable).</action>
+      <action                  type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.classfile.JavaClass.EXTENSION.</action>
       <!-- FIX -->
       <action                  type="fix" dev="ggregory" due-to="nbauma109, Gary Gregory">Typo in SimpleElementValue error message #161.</action>
       <action                  type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Fix code duplication in org.apache.bcel.verifier.structurals.ExceptionHandlers.ExceptionHandlers(MethodGen).</action>
diff --git a/src/examples/Helloify.java b/src/examples/Helloify.java
index 81e6e120..ffff812a 100644
--- a/src/examples/Helloify.java
+++ b/src/examples/Helloify.java
@@ -103,7 +103,7 @@ public final class Helloify {
 
     public static void main(final String[] argv) throws Exception {
         for (final String arg : argv) {
-            if (arg.endsWith(".class")) {
+            if (arg.endsWith(JavaClass.EXTENSION)) {
                 final JavaClass javaClass = new ClassParser(arg).parse();
                 final ConstantPool constants = javaClass.getConstantPool();
                 final String fileName = arg.substring(0, arg.length() - 6) + "_hello.class";
diff --git a/src/examples/ListClass.java b/src/examples/ListClass.java
index 8c6d398a..3a7c91d6 100644
--- a/src/examples/ListClass.java
+++ b/src/examples/ListClass.java
@@ -245,7 +245,7 @@ public class ListClass {
                 }
             }
 
-            if (name.endsWith(".class")) {
+            if (name.endsWith(JavaClass.EXTENSION)) {
                 javaClass = new ClassParser(name).parse(); // May throw IOException
             } else {
                 javaClass = Repository.lookupClass(name);
diff --git a/src/examples/Mini/MiniC.java b/src/examples/Mini/MiniC.java
index 72547feb..f58d3024 100644
--- a/src/examples/Mini/MiniC.java
+++ b/src/examples/Mini/MiniC.java
@@ -148,7 +148,7 @@ public class MiniC {
 
                         program.byte_code(class_gen, cp);
                         final JavaClass clazz = class_gen.getJavaClass();
-                        clazz.dump(base_name + ".class");
+                        clazz.dump(base_name + JavaClass.EXTENSION);
                     } else {
                         System.out.println("Pass 5: Generating Java code ...");
                         try (final PrintWriter out = new PrintWriter(new FileOutputStream(base_name + ".java"))) {
diff --git a/src/examples/Package.java b/src/examples/Package.java
index d7128170..efd24acd 100644
--- a/src/examples/Package.java
+++ b/src/examples/Package.java
@@ -173,7 +173,7 @@ public class Package {
                 continue;
             }
             String clName = arg;
-            if (clName.endsWith(".class")) {
+            if (clName.endsWith(JavaClass.EXTENSION)) {
                 clName = clName.substring(0, clName.length() - 6);
             }
             clName = clName.replace('.', '/');
@@ -216,7 +216,7 @@ public class Package {
             int written = 0;
             for (final String name : allClasses.keySet()) { // add entries for every class
                 final JavaClass claz = allClasses.get(name);
-                final ZipEntry zipEntry = new ZipEntry(name + ".class");
+                final ZipEntry zipEntry = new ZipEntry(name + JavaClass.EXTENSION);
                 final byte[] bytes = claz.getBytes();
                 final int length = bytes.length;
                 jarFile.putNextEntry(zipEntry);
diff --git a/src/main/java/org/apache/bcel/classfile/JavaClass.java b/src/main/java/org/apache/bcel/classfile/JavaClass.java
index 02b69235..68b9bf59 100644
--- a/src/main/java/org/apache/bcel/classfile/JavaClass.java
+++ b/src/main/java/org/apache/bcel/classfile/JavaClass.java
@@ -47,6 +47,13 @@ import org.apache.commons.lang3.ArrayUtils;
  */
 public class JavaClass extends AccessFlags implements Cloneable, Node, Comparable<JavaClass> {
 
+    /**
+     * The standard class file extension.
+     *
+     * @since 6.6.2
+     */
+    public static final String EXTENSION = ".class";
+
     /**
      * Empty array.
      *
diff --git a/src/main/java/org/apache/bcel/util/AbstractClassPathRepository.java b/src/main/java/org/apache/bcel/util/AbstractClassPathRepository.java
index 240b4a13..65a5366f 100644
--- a/src/main/java/org/apache/bcel/util/AbstractClassPathRepository.java
+++ b/src/main/java/org/apache/bcel/util/AbstractClassPathRepository.java
@@ -75,7 +75,7 @@ abstract class AbstractClassPathRepository implements Repository {
             name = name.substring(i + 1);
         }
 
-        try (InputStream clsStream = clazz.getResourceAsStream(name + ".class")) {
+        try (InputStream clsStream = clazz.getResourceAsStream(name + JavaClass.EXTENSION)) {
             return loadClass(clsStream, className);
         } catch (final IOException e) {
             return null;
diff --git a/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java b/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java
index 3371def1..c1a06d83 100644
--- a/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java
+++ b/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java
@@ -79,7 +79,7 @@ public class ClassLoaderRepository implements Repository {
         if (RC != null) {
             return RC;
         }
-        try (InputStream is = loader.getResourceAsStream(classFile + ".class")) {
+        try (InputStream is = loader.getResourceAsStream(classFile + JavaClass.EXTENSION)) {
             if (is == null) {
                 throw new ClassNotFoundException(className + " not found.");
             }
diff --git a/src/main/java/org/apache/bcel/util/ClassPath.java b/src/main/java/org/apache/bcel/util/ClassPath.java
index 0cb45757..a0998105 100644
--- a/src/main/java/org/apache/bcel/util/ClassPath.java
+++ b/src/main/java/org/apache/bcel/util/ClassPath.java
@@ -39,6 +39,8 @@ import java.util.Vector;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
+import org.apache.bcel.classfile.JavaClass;
+
 /**
  * Loads class files from the CLASSPATH. Inspired by sun.tools.ClassPath.
  */
@@ -603,7 +605,7 @@ public class ClassPath implements Closeable {
      * @throws IOException if an I/O error occurs.
      */
     public byte[] getBytes(final String name) throws IOException {
-        return getBytes(name, ".class");
+        return getBytes(name, JavaClass.EXTENSION);
     }
 
     /**
@@ -635,7 +637,7 @@ public class ClassPath implements Closeable {
      * @throws IOException if an I/O error occurs.
      */
     public ClassFile getClassFile(final String name) throws IOException {
-        return getClassFile(name, ".class");
+        return getClassFile(name, JavaClass.EXTENSION);
     }
 
     /**
@@ -678,7 +680,7 @@ public class ClassPath implements Closeable {
      * @throws IOException if an I/O error occurs.
      */
     public InputStream getInputStream(final String name) throws IOException {
-        return getInputStream(packageToFolder(name), ".class");
+        return getInputStream(packageToFolder(name), JavaClass.EXTENSION);
     }
 
     /**
diff --git a/src/main/java/org/apache/bcel/verifier/NativeVerifier.java b/src/main/java/org/apache/bcel/verifier/NativeVerifier.java
index a21136d7..18f27fa9 100644
--- a/src/main/java/org/apache/bcel/verifier/NativeVerifier.java
+++ b/src/main/java/org/apache/bcel/verifier/NativeVerifier.java
@@ -16,6 +16,7 @@
  */
 package org.apache.bcel.verifier;
 
+import org.apache.bcel.classfile.JavaClass;
 import org.apache.bcel.classfile.Utility;
 
 /**
@@ -33,7 +34,7 @@ public abstract class NativeVerifier {
             System.out.println("Verifier front-end: need exactly one argument.");
             System.exit(1);
         }
-        final int dotclasspos = args[0].lastIndexOf(".class");
+        final int dotclasspos = args[0].lastIndexOf(JavaClass.EXTENSION);
         if (dotclasspos != -1) {
             args[0] = args[0].substring(0, dotclasspos);
         }
diff --git a/src/main/java/org/apache/bcel/verifier/TransitiveHull.java b/src/main/java/org/apache/bcel/verifier/TransitiveHull.java
index ac8b120d..b61dcb40 100644
--- a/src/main/java/org/apache/bcel/verifier/TransitiveHull.java
+++ b/src/main/java/org/apache/bcel/verifier/TransitiveHull.java
@@ -35,7 +35,7 @@ public class TransitiveHull implements VerifierFactoryObserver {
             System.out.println("Need exactly one argument: The root class to verify.");
             System.exit(1);
         }
-        final int dotclasspos = args[0].lastIndexOf(".class");
+        final int dotclasspos = args[0].lastIndexOf(JavaClass.EXTENSION);
         if (dotclasspos != -1) {
             args[0] = args[0].substring(0, dotclasspos);
         }
diff --git a/src/main/java/org/apache/bcel/verifier/Verifier.java b/src/main/java/org/apache/bcel/verifier/Verifier.java
index f0c175b0..66bb7c4a 100644
--- a/src/main/java/org/apache/bcel/verifier/Verifier.java
+++ b/src/main/java/org/apache/bcel/verifier/Verifier.java
@@ -55,8 +55,8 @@ public class Verifier {
         System.out.println("JustIce by Enver Haase, (C) 2001-2002.\n<http://bcel.sourceforge.net>\n<https://commons.apache.org/bcel>\n");
         for (int index = 0; index < args.length; index++) {
             try {
-                if (args[index].endsWith(".class")) {
-                    final int dotclasspos = args[index].lastIndexOf(".class");
+                if (args[index].endsWith(JavaClass.EXTENSION)) {
+                    final int dotclasspos = args[index].lastIndexOf(JavaClass.EXTENSION);
                     if (dotclasspos != -1) {
                         args[index] = args[index].substring(0, dotclasspos);
                     }
diff --git a/src/main/java/org/apache/bcel/verifier/VerifyDialog.java b/src/main/java/org/apache/bcel/verifier/VerifyDialog.java
index 852a2621..270159bd 100644
--- a/src/main/java/org/apache/bcel/verifier/VerifyDialog.java
+++ b/src/main/java/org/apache/bcel/verifier/VerifyDialog.java
@@ -182,7 +182,7 @@ public class VerifyDialog extends JDialog {
      * @param fullyQualifiedClassName java.lang.String
      */
     public VerifyDialog(String fullyQualifiedClassName) {
-        final int dotclasspos = fullyQualifiedClassName.lastIndexOf(".class");
+        final int dotclasspos = fullyQualifiedClassName.lastIndexOf(JavaClass.EXTENSION);
         if (dotclasspos != -1) {
             fullyQualifiedClassName = fullyQualifiedClassName.substring(0, dotclasspos);
         }
diff --git a/src/test/java/org/apache/bcel/BCELBenchmark.java b/src/test/java/org/apache/bcel/BCELBenchmark.java
index 1716a99b..9396ec82 100644
--- a/src/test/java/org/apache/bcel/BCELBenchmark.java
+++ b/src/test/java/org/apache/bcel/BCELBenchmark.java
@@ -61,7 +61,7 @@ public class BCELBenchmark {
         return new IteratorIterable<>(new FilterIterator<>(new EnumerationIterator<>(jar.entries()), new Predicate<JarEntry>() {
             @Override
             public boolean evaluate(JarEntry entry) {
-                return entry.getName().endsWith(".class");
+                return entry.getName().endsWith(JavaClass.EXTENSION);
             }
         }));
     }
diff --git a/src/test/java/org/apache/bcel/PerformanceTest.java b/src/test/java/org/apache/bcel/PerformanceTest.java
index a7fb6fff..7191d6d4 100644
--- a/src/test/java/org/apache/bcel/PerformanceTest.java
+++ b/src/test/java/org/apache/bcel/PerformanceTest.java
@@ -79,7 +79,7 @@ public final class PerformanceTest {
 
             while (en.hasMoreElements()) {
                 final JarEntry e = (JarEntry) en.nextElement();
-                if (e.getName().endsWith(".class")) {
+                if (e.getName().endsWith(JavaClass.EXTENSION)) {
                     byte[] bytes;
                     try (InputStream in = jar.getInputStream(e)) {
                         bytes = read(in);
diff --git a/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java b/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java
index e92e1c69..b17cef0a 100644
--- a/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java
+++ b/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java
@@ -62,7 +62,7 @@ public class JDKClassDumpTestCase {
             while (en.hasMoreElements()) {
                 final JarEntry e = en.nextElement();
                 final String name = e.getName();
-                if (name.endsWith(".class")) {
+                if (name.endsWith(JavaClass.EXTENSION)) {
                     // System.out.println("Parsing " + name);
                     try (InputStream inputStream1 = jar.getInputStream(e); InputStream inputStream2 = jar.getInputStream(e);) {
                         compare(new ClassParser(inputStream1, name).parse(), inputStream2, name);
diff --git a/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java b/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java
index 2a9a3a5f..425a167a 100644
--- a/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java
@@ -155,7 +155,7 @@ public class JdkGenericDumpTestCase {
             while (en.hasMoreElements()) {
                 final JarEntry jarEntry = en.nextElement();
                 final String name = jarEntry.getName();
-                if (name.endsWith(".class")) {
+                if (name.endsWith(JavaClass.EXTENSION)) {
                     // System.out.println("- " + name);
                     try (InputStream inputStream = jar.getInputStream(jarEntry)) {
                         final ClassParser classParser = new ClassParser(inputStream, name);
diff --git a/src/test/java/org/apache/bcel/util/BCELifierTestCase.java b/src/test/java/org/apache/bcel/util/BCELifierTestCase.java
index d34a0000..ffef4ba4 100644
--- a/src/test/java/org/apache/bcel/util/BCELifierTestCase.java
+++ b/src/test/java/org/apache/bcel/util/BCELifierTestCase.java
@@ -66,9 +66,9 @@ public class BCELifierTestCase {
 
         final File workDir = new File("target");
         final File infile = new File(javaClassFileName);
-        final JavaClass javaClass = BCELifier.getJavaClass(infile.getName().replace(".class", ""));
+        final JavaClass javaClass = BCELifier.getJavaClass(infile.getName().replace(JavaClass.EXTENSION, ""));
         assertNotNull(javaClass);
-        final File outfile = new File(workDir, infile.getName().replace(".class", "Creator.java"));
+        final File outfile = new File(workDir, infile.getName().replace(JavaClass.EXTENSION, "Creator.java"));
         try (FileOutputStream fos = new FileOutputStream(outfile)) {
             final BCELifier bcelifier = new BCELifier(javaClass, fos);
             bcelifier.start();
diff --git a/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java b/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java
index 8a9912a7..133878db 100644
--- a/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java
+++ b/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java
@@ -74,7 +74,7 @@ public class VerifierTestCase {
             while (entries.hasMoreElements()) {
                 final JarEntry jarEntry = entries.nextElement();
                 String entryName = jarEntry.getName();
-                if (entryName.endsWith(".class")) {
+                if (entryName.endsWith(JavaClass.EXTENSION)) {
                     entryName = entryName.replaceFirst("\\.class$", "");
                     entryName = Utility.compactClassName(entryName, false);
                     testDefaultMethodValidation(entryName, excludes);
diff --git a/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTestCase.java b/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTestCase.java
index e28dde32..688e1737 100644
--- a/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTestCase.java
+++ b/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTestCase.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.bcel.classfile.JavaClass;
 import org.apache.commons.exec.CommandLine;
 import org.apache.commons.exec.DefaultExecuteResultHandler;
 import org.apache.commons.exec.DefaultExecutor;
@@ -187,7 +188,7 @@ public class VerifyBadClassesTestCase {
         final String testDir = baseDir + (directory.isEmpty() ? "" : "/" + directory);
 
         final File origFile = new File(testDir + "/" + className + ".classx");
-        final File testFile = new File(testDir + "/" + className + ".class");
+        final File testFile = new File(testDir + "/" + className + JavaClass.EXTENSION);
 
         if (!origFile.renameTo(testFile)) {
             fail("Failed to rename orig file");
diff --git a/src/test/java/org/apache/bcel/verifier/tests/TestCreator.java b/src/test/java/org/apache/bcel/verifier/tests/TestCreator.java
index 081bdb6b..3c49f4a3 100644
--- a/src/test/java/org/apache/bcel/verifier/tests/TestCreator.java
+++ b/src/test/java/org/apache/bcel/verifier/tests/TestCreator.java
@@ -22,6 +22,8 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.net.URISyntaxException;
 
+import org.apache.bcel.classfile.JavaClass;
+
 public abstract class TestCreator {
 
     // Common package base name for generated test classes
@@ -46,7 +48,7 @@ public abstract class TestCreator {
 
     private String getClassName() {
         final String name = getClass().getName();
-        return name.substring(name.lastIndexOf('.') + 1).replace("Creator", ".class");
+        return name.substring(name.lastIndexOf('.') + 1).replace("Creator", JavaClass.EXTENSION);
     }
 
     private File getPackageFolder() throws IOException {