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) <ggreg...@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 {