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/20 19:55:05 UTC

[commons-bcel] branch master updated (d1bfd30b -> 2a3b0eba)

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

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


    from d1bfd30b Use final
     new 2dff910b Add org.apache.bcel.classfile.Utility.packageToPath(String)
     new 2a3b0eba Reuse Utility.pathToPackage()

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/changes/changes.xml                                     |  1 +
 src/examples/Helloify.java                                  |  2 +-
 src/examples/JasminVisitor.java                             | 10 +++++-----
 src/examples/Package.java                                   |  5 +++--
 src/examples/TransitiveHull.java                            |  5 ++++-
 src/main/java/org/apache/bcel/classfile/JavaClass.java      |  2 +-
 src/main/java/org/apache/bcel/classfile/Utility.java        | 13 ++++++++++++-
 src/main/java/org/apache/bcel/generic/CPInstruction.java    |  3 ++-
 src/main/java/org/apache/bcel/generic/ConstantPoolGen.java  |  4 ++--
 .../java/org/apache/bcel/generic/InvokeInstruction.java     |  2 +-
 src/main/java/org/apache/bcel/generic/ObjectType.java       |  2 +-
 src/main/java/org/apache/bcel/util/ClassLoader.java         |  2 +-
 .../java/org/apache/bcel/util/ClassLoaderRepository.java    |  3 ++-
 src/main/java/org/apache/bcel/util/ClassPath.java           | 13 +++++--------
 .../org/apache/bcel/verifier/statics/Pass2Verifier.java     |  2 +-
 src/test/java/org/apache/bcel/AbstractTestCase.java         |  3 ++-
 .../java/org/apache/bcel/verifier/tests/TestCreator.java    |  3 ++-
 17 files changed, 46 insertions(+), 29 deletions(-)


[commons-bcel] 01/02: Add org.apache.bcel.classfile.Utility.packageToPath(String)

Posted by gg...@apache.org.
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

commit 2dff910b71f42b4a3e35acd5fdf42891c9f8af85
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Sun Nov 20 14:51:25 2022 -0500

    Add org.apache.bcel.classfile.Utility.packageToPath(String)
---
 src/changes/changes.xml                                     |  1 +
 src/examples/Helloify.java                                  |  2 +-
 src/examples/JasminVisitor.java                             | 10 +++++-----
 src/examples/Package.java                                   |  5 +++--
 src/main/java/org/apache/bcel/classfile/JavaClass.java      |  2 +-
 src/main/java/org/apache/bcel/classfile/Utility.java        | 13 ++++++++++++-
 src/main/java/org/apache/bcel/generic/CPInstruction.java    |  3 ++-
 src/main/java/org/apache/bcel/generic/ConstantPoolGen.java  |  4 ++--
 .../java/org/apache/bcel/generic/InvokeInstruction.java     |  2 +-
 src/main/java/org/apache/bcel/generic/ObjectType.java       |  2 +-
 src/main/java/org/apache/bcel/util/ClassLoader.java         |  2 +-
 .../java/org/apache/bcel/util/ClassLoaderRepository.java    |  3 ++-
 src/main/java/org/apache/bcel/util/ClassPath.java           | 13 +++++--------
 .../org/apache/bcel/verifier/statics/Pass2Verifier.java     |  2 +-
 src/test/java/org/apache/bcel/AbstractTestCase.java         |  3 ++-
 .../java/org/apache/bcel/verifier/tests/TestCreator.java    |  3 ++-
 16 files changed, 42 insertions(+), 28 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d1557b31..533b2946 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -70,6 +70,7 @@ The <action> type attribute can be add,update,fix,remove.
       <action                  type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.util.Args.</action>
       <action                  type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.generic.ArrayType.getClassName().</action>
       <action                  type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.generic.Type.getClassName().</action>
+      <action                  type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.classfile.Utility.packageToPath(String).</action>
       <action                  type="add" dev="ggregory" due-to="Gary Gregory, Mark Roberts">org.apache.bcel.classfile.MethodParameter now implements org.apache.bcel.classfile.Node.</action>
       <!-- FIX -->
       <action                  type="fix" dev="ggregory" due-to="nbauma109, Gary Gregory">Typo in SimpleElementValue error message #161.</action>
diff --git a/src/examples/Helloify.java b/src/examples/Helloify.java
index ffff812a..8ffe46bd 100644
--- a/src/examples/Helloify.java
+++ b/src/examples/Helloify.java
@@ -51,7 +51,7 @@ public final class Helloify {
         int index = javaClass.getClassNameIndex();
 
         index = ((ConstantClass) cp.getConstant(index)).getNameIndex();
-        cp.setConstant(index, new ConstantUtf8(className.replace('.', '/')));
+        cp.setConstant(index, new ConstantUtf8(Utility.packageToPath(className)));
     }
 
     /**
diff --git a/src/examples/JasminVisitor.java b/src/examples/JasminVisitor.java
index 66925ab0..e58e45de 100644
--- a/src/examples/JasminVisitor.java
+++ b/src/examples/JasminVisitor.java
@@ -251,7 +251,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
         for (final CodeExceptionGen c : ehs) {
             final ObjectType caught = c.getCatchType();
             final String className = caught == null ? // catch any exception, used when compiling finally
-                "all" : caught.getClassName().replace('.', '/');
+                "all" : Utility.packageToPath(caught.getClassName());
 
             out.println(".catch " + className + " from " + get(c.getStartPC()) + " to " + get(c.getEndPC()) + " using " + get(c.getHandlerPC()));
         }
@@ -272,7 +272,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
     @Override
     public void visitExceptionTable(final ExceptionTable e) {
         for (final String name : e.getExceptionNames()) {
-            out.println(".throws " + name.replace('.', '/'));
+            out.println(".throws " + Utility.packageToPath(name));
         }
 
         printEndMethod(e);
@@ -294,11 +294,11 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
 
         out.println(".source " + clazz.getSourceFileName());
         out.println("." + Utility.classOrInterface(clazz.getAccessFlags()) + " " + Utility.accessToString(clazz.getAccessFlags(), true) + " "
-            + clazz.getClassName().replace('.', '/'));
-        out.println(".super " + clazz.getSuperclassName().replace('.', '/'));
+            + Utility.packageToPath(clazz.getClassName()));
+        out.println(".super " + Utility.packageToPath(clazz.getSuperclassName()));
 
         for (final String iface : clazz.getInterfaceNames()) {
-            out.println(".implements " + iface.replace('.', '/'));
+            out.println(".implements " + Utility.packageToPath(iface));
         }
 
         out.print("\n");
diff --git a/src/examples/Package.java b/src/examples/Package.java
index 5c6bafab..484b0072 100644
--- a/src/examples/Package.java
+++ b/src/examples/Package.java
@@ -33,6 +33,7 @@ import org.apache.bcel.classfile.ConstantClass;
 import org.apache.bcel.classfile.ConstantPool;
 import org.apache.bcel.classfile.ConstantUtf8;
 import org.apache.bcel.classfile.JavaClass;
+import org.apache.bcel.classfile.Utility;
 import org.apache.bcel.util.ClassPath;
 
 /**
@@ -139,7 +140,7 @@ public class Package {
      * in allClasses
      */
     void addDependents(final JavaClass clazz) throws IOException {
-        final String name = clazz.getClassName().replace('.', '/');
+        final String name = Utility.packageToPath(clazz.getClassName());
         allClasses.put(name, clazz);
         final ConstantPool pool = clazz.getConstantPool();
         for (int i = 1; i < pool.getLength(); i++) {
@@ -176,7 +177,7 @@ public class Package {
             if (clName.endsWith(JavaClass.EXTENSION)) {
                 clName = clName.substring(0, clName.length() - JavaClass.EXTENSION.length());
             }
-            clName = clName.replace('.', '/');
+            clName = Utility.packageToPath(clName);
             try (final InputStream inputStream = classPath.getInputStream(clName)) {
                 clazz = new ClassParser(inputStream, clName).parse();
             }
diff --git a/src/main/java/org/apache/bcel/classfile/JavaClass.java b/src/main/java/org/apache/bcel/classfile/JavaClass.java
index 4094a60a..d55cc1ba 100644
--- a/src/main/java/org/apache/bcel/classfile/JavaClass.java
+++ b/src/main/java/org/apache/bcel/classfile/JavaClass.java
@@ -586,7 +586,7 @@ public class JavaClass extends AccessFlags implements Cloneable, Node, Comparabl
     public String getSourceFilePath() {
         final StringBuilder outFileName = new StringBuilder();
         if (!packageName.isEmpty()) {
-            outFileName.append(packageName.replace('.', '/'));
+            outFileName.append(Utility.packageToPath(packageName));
             outFileName.append('/');
         }
         outFileName.append(sourceFileName);
diff --git a/src/main/java/org/apache/bcel/classfile/Utility.java b/src/main/java/org/apache/bcel/classfile/Utility.java
index 9953bba0..0bf064ae 100644
--- a/src/main/java/org/apache/bcel/classfile/Utility.java
+++ b/src/main/java/org/apache/bcel/classfile/Utility.java
@@ -825,7 +825,7 @@ public abstract class Utility {
             }
         }
         if (!found) {
-            buf.append('L').append(type.replace('.', '/')).append(';');
+            buf.append('L').append(packageToPath(type)).append(';');
         }
         return buf.toString();
     }
@@ -1030,6 +1030,17 @@ public abstract class Utility {
         return buf.toString();
     }
 
+    /**
+     * Converts '.'s to '/'s.
+     *
+     * @param name Source
+     * @return converted value
+     * @since 6.7.0
+     */
+    public static String packageToPath(final String name) {
+        return name.replace('.', '/');
+    }
+
     /**
      * Converts a path to a package name.
      *
diff --git a/src/main/java/org/apache/bcel/generic/CPInstruction.java b/src/main/java/org/apache/bcel/generic/CPInstruction.java
index e25c95a1..c7b0e3ff 100644
--- a/src/main/java/org/apache/bcel/generic/CPInstruction.java
+++ b/src/main/java/org/apache/bcel/generic/CPInstruction.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import org.apache.bcel.classfile.Constant;
 import org.apache.bcel.classfile.ConstantClass;
 import org.apache.bcel.classfile.ConstantPool;
+import org.apache.bcel.classfile.Utility;
 import org.apache.bcel.util.ByteSequence;
 
 /**
@@ -132,7 +133,7 @@ public abstract class CPInstruction extends Instruction implements TypedInstruct
         final Constant c = cp.getConstant(index);
         String str = cp.constantToString(c);
         if (c instanceof ConstantClass) {
-            str = str.replace('.', '/');
+            str = Utility.packageToPath(str);
         }
         return org.apache.bcel.Const.getOpcodeName(super.getOpcode()) + " " + str;
     }
diff --git a/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java b/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java
index cf7ff315..fb5ed9fd 100644
--- a/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java
+++ b/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java
@@ -251,7 +251,7 @@ public class ConstantPoolGen {
      * @return index of entry
      */
     public int addClass(final String str) {
-        return addClass_(str.replace('.', '/'));
+        return addClass_(Utility.packageToPath(str));
     }
 
     private int addClass_(final String clazz) {
@@ -587,7 +587,7 @@ public class ConstantPoolGen {
      * @return index on success, -1 otherwise
      */
     public int lookupClass(final String str) {
-        return getIndex(classTable, str.replace('.', '/'));
+        return getIndex(classTable, Utility.packageToPath(str));
     }
 
     /**
diff --git a/src/main/java/org/apache/bcel/generic/InvokeInstruction.java b/src/main/java/org/apache/bcel/generic/InvokeInstruction.java
index 2f781608..20405403 100644
--- a/src/main/java/org/apache/bcel/generic/InvokeInstruction.java
+++ b/src/main/java/org/apache/bcel/generic/InvokeInstruction.java
@@ -128,7 +128,7 @@ public abstract class InvokeInstruction extends FieldOrMethod implements Excepti
         final StringBuilder sb = new StringBuilder(opcodeName);
         if (tok.hasMoreTokens()) {
             sb.append(" ");
-            sb.append(tok.nextToken().replace('.', '/'));
+            sb.append(Utility.packageToPath(tok.nextToken()));
             if (tok.hasMoreTokens()) {
                 sb.append(tok.nextToken());
             }
diff --git a/src/main/java/org/apache/bcel/generic/ObjectType.java b/src/main/java/org/apache/bcel/generic/ObjectType.java
index 3959f7df..28e21254 100644
--- a/src/main/java/org/apache/bcel/generic/ObjectType.java
+++ b/src/main/java/org/apache/bcel/generic/ObjectType.java
@@ -45,7 +45,7 @@ public class ObjectType extends ReferenceType {
      * @param className fully qualified class name, e.g. java.lang.String
      */
     public ObjectType(final String className) {
-        super(Const.T_REFERENCE, "L" + className.replace('.', '/') + ";");
+        super(Const.T_REFERENCE, "L" + Utility.packageToPath(className) + ";");
         this.className = Utility.pathToPackage(className);
     }
 
diff --git a/src/main/java/org/apache/bcel/util/ClassLoader.java b/src/main/java/org/apache/bcel/util/ClassLoader.java
index 680eca3e..ec31feda 100644
--- a/src/main/java/org/apache/bcel/util/ClassLoader.java
+++ b/src/main/java/org/apache/bcel/util/ClassLoader.java
@@ -123,7 +123,7 @@ public class ClassLoader extends java.lang.ClassLoader {
         final ConstantPool cp = clazz.getConstantPool();
         final ConstantClass cl = cp.getConstant(clazz.getClassNameIndex(), Const.CONSTANT_Class, ConstantClass.class);
         final ConstantUtf8 name = cp.getConstantUtf8(cl.getNameIndex());
-        name.setBytes(className.replace('.', '/'));
+        name.setBytes(Utility.packageToPath(className));
         return clazz;
     }
 
diff --git a/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java b/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java
index c1a06d83..5ffcabe3 100644
--- a/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java
+++ b/src/main/java/org/apache/bcel/util/ClassLoaderRepository.java
@@ -23,6 +23,7 @@ import java.util.Map;
 
 import org.apache.bcel.classfile.ClassParser;
 import org.apache.bcel.classfile.JavaClass;
+import org.apache.bcel.classfile.Utility;
 
 /**
  * The repository maintains information about which classes have been loaded.
@@ -74,7 +75,7 @@ public class ClassLoaderRepository implements Repository {
      */
     @Override
     public JavaClass loadClass(final String className) throws ClassNotFoundException {
-        final String classFile = className.replace('.', '/');
+        final String classFile = Utility.packageToPath(className);
         JavaClass RC = findClass(className);
         if (RC != null) {
             return RC;
diff --git a/src/main/java/org/apache/bcel/util/ClassPath.java b/src/main/java/org/apache/bcel/util/ClassPath.java
index dd3ff90a..6fe0df83 100644
--- a/src/main/java/org/apache/bcel/util/ClassPath.java
+++ b/src/main/java/org/apache/bcel/util/ClassPath.java
@@ -41,6 +41,7 @@ import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
 import org.apache.bcel.classfile.JavaClass;
+import org.apache.bcel.classfile.Utility;
 
 /**
  * Loads class files from the CLASSPATH. Inspired by sun.tools.ClassPath.
@@ -261,7 +262,7 @@ public class ClassPath implements Closeable {
 
         @Override
         protected String toEntryName(final String name, final String suffix) {
-            return packageToFolder(name) + suffix;
+            return Utility.packageToPath(name) + suffix;
         }
 
     }
@@ -282,7 +283,7 @@ public class ClassPath implements Closeable {
 
         @Override
         ClassFile getClassFile(final String name, final String suffix) {
-            final Path resolved = modulePath.resolve(packageToFolder(name) + suffix);
+            final Path resolved = modulePath.resolve(Utility.packageToPath(name) + suffix);
             if (Files.exists(resolved)) {
                 return new ClassFile() {
 
@@ -423,7 +424,7 @@ public class ClassPath implements Closeable {
 
         @Override
         protected String toEntryName(final String name, final String suffix) {
-            return "classes/" + packageToFolder(name) + suffix;
+            return "classes/" + Utility.packageToPath(name) + suffix;
         }
 
     }
@@ -513,10 +514,6 @@ public class ClassPath implements Closeable {
         }
     }
 
-    static String packageToFolder(final String name) {
-        return name.replace('.', '/');
-    }
-
     private final String classPathString;
 
     private final ClassPath parent;
@@ -679,7 +676,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), JavaClass.EXTENSION);
+        return getInputStream(Utility.packageToPath(name), JavaClass.EXTENSION);
     }
 
     /**
diff --git a/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java b/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java
index 17a964c8..f5b1cd20 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java
@@ -1144,7 +1144,7 @@ public final class Pass2Verifier extends PassVerifier implements Constants {
             final Constant c = cp.getConstant(obj.getNameIndex());
             if (c instanceof ConstantUtf8) { // Ignore the case where it's not a ConstantUtf8 here, we'll find out later.
                 final String className = ((ConstantUtf8) c).getBytes();
-                if (className.startsWith(jc.getClassName().replace('.', '/') + "$")) {
+                if (className.startsWith(Utility.packageToPath(jc.getClassName()) + "$")) {
                     hasInnerClass = true;
                 }
             }
diff --git a/src/test/java/org/apache/bcel/AbstractTestCase.java b/src/test/java/org/apache/bcel/AbstractTestCase.java
index b8b150a6..af1d5059 100644
--- a/src/test/java/org/apache/bcel/AbstractTestCase.java
+++ b/src/test/java/org/apache/bcel/AbstractTestCase.java
@@ -31,6 +31,7 @@ import org.apache.bcel.classfile.Attribute;
 import org.apache.bcel.classfile.ConstantUtf8;
 import org.apache.bcel.classfile.JavaClass;
 import org.apache.bcel.classfile.Method;
+import org.apache.bcel.classfile.Utility;
 import org.apache.bcel.generic.AnnotationEntryGen;
 import org.apache.bcel.generic.ConstantPoolGen;
 import org.apache.bcel.generic.ElementValueGen;
@@ -51,7 +52,7 @@ public abstract class AbstractTestCase {
     protected static final File TESTDATA = new File("target", "testdata");
 
     // package base name in signature format, i.e. with '/' separators instead of '.'
-    protected static final String PACKAGE_BASE_SIG = PACKAGE_BASE_NAME.replace('.', '/');
+    protected static final String PACKAGE_BASE_SIG = Utility.packageToPath(PACKAGE_BASE_NAME);
 
     public static void clear() {
         VerifierFactory.clear();
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 3c49f4a3..ccb2b845 100644
--- a/src/test/java/org/apache/bcel/verifier/tests/TestCreator.java
+++ b/src/test/java/org/apache/bcel/verifier/tests/TestCreator.java
@@ -23,6 +23,7 @@ import java.io.OutputStream;
 import java.net.URISyntaxException;
 
 import org.apache.bcel.classfile.JavaClass;
+import org.apache.bcel.classfile.Utility;
 
 public abstract class TestCreator {
 
@@ -56,6 +57,6 @@ public abstract class TestCreator {
     }
 
     protected String getPackageName() {
-        return getClass().getPackage().getName().replace('.', '/');
+        return Utility.packageToPath(getClass().getPackage().getName());
     }
 }


[commons-bcel] 02/02: Reuse Utility.pathToPackage()

Posted by gg...@apache.org.
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

commit 2a3b0eba675acb2755eee394ca4f7da8b23b2e09
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Sun Nov 20 14:51:32 2022 -0500

    Reuse Utility.pathToPackage()
---
 src/examples/TransitiveHull.java | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/examples/TransitiveHull.java b/src/examples/TransitiveHull.java
index 6c34d3dc..9730eaef 100644
--- a/src/examples/TransitiveHull.java
+++ b/src/examples/TransitiveHull.java
@@ -18,6 +18,8 @@
 import java.util.Arrays;
 import java.util.regex.Pattern;
 
+import javax.swing.text.Utilities;
+
 import org.apache.bcel.Const;
 import org.apache.bcel.Repository;
 import org.apache.bcel.classfile.ClassParser;
@@ -29,6 +31,7 @@ import org.apache.bcel.classfile.ConstantMethodref;
 import org.apache.bcel.classfile.ConstantNameAndType;
 import org.apache.bcel.classfile.ConstantPool;
 import org.apache.bcel.classfile.JavaClass;
+import org.apache.bcel.classfile.Utility;
 import org.apache.bcel.generic.ArrayType;
 import org.apache.bcel.generic.ObjectType;
 import org.apache.bcel.generic.Type;
@@ -90,7 +93,7 @@ public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
     }
 
     private void add(String className) {
-        className = className.replace('/', '.');
+        className = Utility.pathToPackage(className);
 
         for (final String anIgnored : ignored) {
             if (Pattern.matches(anIgnored, className)) {