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 7c549fff Add and reuse constants. 7c549fff is described below commit 7c549fff1becc47cb2081eb97dd0c85a3485fa1f Author: Gary Gregory <gardgreg...@gmail.com> AuthorDate: Sat Apr 9 14:33:30 2022 -0400 Add and reuse constants. --- src/main/java/org/apache/bcel/classfile/AnnotationEntry.java | 6 ++++-- src/main/java/org/apache/bcel/classfile/ElementValuePair.java | 3 +++ src/main/java/org/apache/bcel/classfile/Field.java | 7 +++++++ src/main/java/org/apache/bcel/classfile/JavaClass.java | 6 ++++-- src/main/java/org/apache/bcel/classfile/Method.java | 7 +++++++ .../java/org/apache/bcel/classfile/ParameterAnnotationEntry.java | 4 +++- src/main/java/org/apache/bcel/classfile/Utility.java | 3 ++- src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java | 3 +++ src/main/java/org/apache/bcel/generic/ClassGen.java | 8 ++++---- src/main/java/org/apache/bcel/generic/Instruction.java | 2 ++ src/main/java/org/apache/bcel/generic/InstructionHandle.java | 2 +- src/main/java/org/apache/bcel/generic/InstructionList.java | 2 +- src/main/java/org/apache/bcel/generic/InstructionTargeter.java | 2 ++ src/main/java/org/apache/bcel/util/ClassSet.java | 3 ++- src/main/java/org/apache/bcel/verifier/PassVerifier.java | 4 +++- src/main/java/org/apache/bcel/verifier/Verifier.java | 3 ++- .../java/org/apache/bcel/verifier/VerifierFactoryListModel.java | 4 +++- .../org/apache/bcel/verifier/structurals/ControlFlowGraph.java | 2 +- .../org/apache/bcel/verifier/structurals/ExceptionHandler.java | 5 ++++- .../org/apache/bcel/verifier/structurals/ExceptionHandlers.java | 6 +++--- .../java/org/apache/bcel/verifier/structurals/Subroutines.java | 2 +- src/test/java/org/apache/bcel/generic/AnnotationGenTestCase.java | 4 ++-- .../java/org/apache/bcel/generic/InstructionHandleTestCase.java | 4 ++-- 23 files changed, 66 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java b/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java index aba44227..efe6b3f3 100644 --- a/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java +++ b/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java @@ -33,6 +33,8 @@ import org.apache.bcel.Const; */ public class AnnotationEntry implements Node { + public static final AnnotationEntry[] EMPTY_ARRAY = {}; + private final int typeIndex; private final ConstantPool constantPool; private final boolean isRuntimeVisible; @@ -117,7 +119,7 @@ public class AnnotationEntry implements Node { */ public ElementValuePair[] getElementValuePairs() { // TODO return List - return elementValuePairs.toArray(new ElementValuePair[0]); + return elementValuePairs.toArray(ElementValuePair.EMPTY_ARRAY); } public void dump(final DataOutputStream dos) throws IOException { @@ -165,6 +167,6 @@ public class AnnotationEntry implements Node { Collections.addAll(accumulatedAnnotations, runtimeAnnotations.getAnnotationEntries()); } } - return accumulatedAnnotations.toArray(new AnnotationEntry[0]); + return accumulatedAnnotations.toArray(AnnotationEntry.EMPTY_ARRAY); } } diff --git a/src/main/java/org/apache/bcel/classfile/ElementValuePair.java b/src/main/java/org/apache/bcel/classfile/ElementValuePair.java index d27514e8..92fdd11a 100644 --- a/src/main/java/org/apache/bcel/classfile/ElementValuePair.java +++ b/src/main/java/org/apache/bcel/classfile/ElementValuePair.java @@ -29,6 +29,9 @@ import org.apache.bcel.Const; */ public class ElementValuePair { + + static final ElementValuePair[] EMPTY_ARRAY = {}; + private final ElementValue elementValue; private final ConstantPool constantPool; diff --git a/src/main/java/org/apache/bcel/classfile/Field.java b/src/main/java/org/apache/bcel/classfile/Field.java index e9215792..a334de93 100644 --- a/src/main/java/org/apache/bcel/classfile/Field.java +++ b/src/main/java/org/apache/bcel/classfile/Field.java @@ -32,6 +32,13 @@ import org.apache.bcel.util.BCELComparator; */ public final class Field extends FieldOrMethod { + /** + * Empty array constant. + * + * @since 6.6.0 + */ + public static final Field[] EMPTY_ARRAY = {}; + private static BCELComparator bcelComparator = new BCELComparator() { @Override diff --git a/src/main/java/org/apache/bcel/classfile/JavaClass.java b/src/main/java/org/apache/bcel/classfile/JavaClass.java index c275b2f1..0ffec89c 100644 --- a/src/main/java/org/apache/bcel/classfile/JavaClass.java +++ b/src/main/java/org/apache/bcel/classfile/JavaClass.java @@ -49,6 +49,8 @@ import org.apache.commons.lang3.ArrayUtils; */ public class JavaClass extends AccessFlags implements Cloneable, Node, Comparable<JavaClass> { + static final JavaClass[] EMPTY_ARRAY = {}; + private String fileName; private final String packageName; private String sourceFileName = "<Unknown>"; @@ -832,7 +834,7 @@ public class JavaClass extends AccessFlags implements Cloneable, Node, Comparabl for (clazz = clazz.getSuperClass(); clazz != null; clazz = clazz.getSuperClass()) { allSuperClasses.add(clazz); } - return allSuperClasses.toArray(new JavaClass[0]); + return allSuperClasses.toArray(JavaClass.EMPTY_ARRAY); } @@ -871,7 +873,7 @@ public class JavaClass extends AccessFlags implements Cloneable, Node, Comparabl queue.enqueue(_interface); } } - return allInterfaces.toArray(new JavaClass[0]); + return allInterfaces.toArray(JavaClass.EMPTY_ARRAY); } diff --git a/src/main/java/org/apache/bcel/classfile/Method.java b/src/main/java/org/apache/bcel/classfile/Method.java index 811a62a4..50af1404 100644 --- a/src/main/java/org/apache/bcel/classfile/Method.java +++ b/src/main/java/org/apache/bcel/classfile/Method.java @@ -33,6 +33,13 @@ import org.apache.bcel.util.BCELComparator; */ public final class Method extends FieldOrMethod { + /** + * Empty array constant. + * + * @since 6.6.0 + */ + public static final Method[] EMPTY_ARRAY = {}; + private static BCELComparator bcelComparator = new BCELComparator() { @Override diff --git a/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java b/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java index 22cb87da..6cbc60b8 100644 --- a/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java +++ b/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java @@ -31,6 +31,8 @@ import java.util.List; */ public class ParameterAnnotationEntry implements Node { + static final ParameterAnnotationEntry[] EMPTY_ARRAY = {}; + private final AnnotationEntry[] annotationTable; @@ -85,7 +87,7 @@ public class ParameterAnnotationEntry implements Node { Collections.addAll(accumulatedAnnotations, runtimeAnnotations.getParameterAnnotationEntries()); } } - return accumulatedAnnotations.toArray(new ParameterAnnotationEntry[0]); + return accumulatedAnnotations.toArray(ParameterAnnotationEntry.EMPTY_ARRAY); } } diff --git a/src/main/java/org/apache/bcel/classfile/Utility.java b/src/main/java/org/apache/bcel/classfile/Utility.java index 7ac5cd71..fe0f83c4 100644 --- a/src/main/java/org/apache/bcel/classfile/Utility.java +++ b/src/main/java/org/apache/bcel/classfile/Utility.java @@ -37,6 +37,7 @@ import java.util.zip.GZIPOutputStream; import org.apache.bcel.Const; import org.apache.bcel.util.ByteSequence; +import org.apache.commons.lang3.ArrayUtils; /** * Utility functions that do not really belong to any class in particular. @@ -591,7 +592,7 @@ public abstract class Utility { } catch (final StringIndexOutOfBoundsException e) { // Should never occur throw new ClassFormatException("Invalid method signature: " + signature, e); } - return vec.toArray(new String[0]); + return vec.toArray(ArrayUtils.EMPTY_STRING_ARRAY); } diff --git a/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java b/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java index f74f8c28..ba2c5f73 100644 --- a/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java +++ b/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java @@ -39,6 +39,9 @@ import org.apache.bcel.classfile.RuntimeVisibleParameterAnnotations; * @since 6.0 */ public class AnnotationEntryGen { + + static final AnnotationEntryGen[] EMPTY_ARRAY = {}; + private int typeIndex; private List<ElementValuePairGen> evs; diff --git a/src/main/java/org/apache/bcel/generic/ClassGen.java b/src/main/java/org/apache/bcel/generic/ClassGen.java index 009ca6f4..00481b32 100644 --- a/src/main/java/org/apache/bcel/generic/ClassGen.java +++ b/src/main/java/org/apache/bcel/generic/ClassGen.java @@ -190,7 +190,7 @@ public class ClassGen extends AccessFlags implements Cloneable { } } } - return annotationGenObjs.toArray(new AnnotationEntryGen[0]); + return annotationGenObjs.toArray(AnnotationEntryGen.EMPTY_ARRAY); } @@ -432,7 +432,7 @@ public class ClassGen extends AccessFlags implements Cloneable { public Method[] getMethods() { - return methodList.toArray(new Method[0]); + return methodList.toArray(Method.EMPTY_ARRAY); } @@ -473,7 +473,7 @@ public class ClassGen extends AccessFlags implements Cloneable { public Field[] getFields() { - return fieldList.toArray(new Field[0]); + return fieldList.toArray(Field.EMPTY_ARRAY); } @@ -483,7 +483,7 @@ public class ClassGen extends AccessFlags implements Cloneable { // J5TODO: Should we make calling unpackAnnotations() lazy and put it in here? public AnnotationEntryGen[] getAnnotationEntries() { - return annotationList.toArray(new AnnotationEntryGen[0]); + return annotationList.toArray(AnnotationEntryGen.EMPTY_ARRAY); } diff --git a/src/main/java/org/apache/bcel/generic/Instruction.java b/src/main/java/org/apache/bcel/generic/Instruction.java index 5c7473da..083662fe 100644 --- a/src/main/java/org/apache/bcel/generic/Instruction.java +++ b/src/main/java/org/apache/bcel/generic/Instruction.java @@ -30,6 +30,8 @@ import org.apache.bcel.util.ByteSequence; */ public abstract class Instruction implements Cloneable { + static final Instruction[] EMPTY_ARRAY = {}; + /** * @deprecated (since 6.0) will be made private; do not access directly, use getter/setter */ diff --git a/src/main/java/org/apache/bcel/generic/InstructionHandle.java b/src/main/java/org/apache/bcel/generic/InstructionHandle.java index 1a7f2b3b..50b9ee70 100644 --- a/src/main/java/org/apache/bcel/generic/InstructionHandle.java +++ b/src/main/java/org/apache/bcel/generic/InstructionHandle.java @@ -48,7 +48,7 @@ public class InstructionHandle { * * @since 6.6.0 */ - public static final InstructionHandle[] EMPTY_INSTRUCTION_HANDLE_ARRAY = new InstructionHandle[0]; + public static final InstructionHandle[] EMPTY_ARRAY = new InstructionHandle[0]; /** * Empty array. diff --git a/src/main/java/org/apache/bcel/generic/InstructionList.java b/src/main/java/org/apache/bcel/generic/InstructionList.java index d81a3e43..cc970048 100644 --- a/src/main/java/org/apache/bcel/generic/InstructionList.java +++ b/src/main/java/org/apache/bcel/generic/InstructionList.java @@ -965,7 +965,7 @@ public class InstructionList implements Iterable<InstructionHandle> { } catch (final IOException e) { throw new ClassGenException(e.toString(), e); } - return instructions.toArray(new Instruction[0]); + return instructions.toArray(Instruction.EMPTY_ARRAY); } @Override diff --git a/src/main/java/org/apache/bcel/generic/InstructionTargeter.java b/src/main/java/org/apache/bcel/generic/InstructionTargeter.java index 51e58035..ab8b839e 100644 --- a/src/main/java/org/apache/bcel/generic/InstructionTargeter.java +++ b/src/main/java/org/apache/bcel/generic/InstructionTargeter.java @@ -28,6 +28,8 @@ package org.apache.bcel.generic; */ public interface InstructionTargeter { + //static final InstructionTargeter[] EMPTY_ARRAY = new InstructionTargeter[0]; + /** * Checks whether this targeter targets the specified instruction handle. */ diff --git a/src/main/java/org/apache/bcel/util/ClassSet.java b/src/main/java/org/apache/bcel/util/ClassSet.java index b2d96a1a..fe0f2366 100644 --- a/src/main/java/org/apache/bcel/util/ClassSet.java +++ b/src/main/java/org/apache/bcel/util/ClassSet.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.Map; import org.apache.bcel.classfile.JavaClass; +import org.apache.commons.lang3.ArrayUtils; /** * Utility class implementing a (typesafe) set of JavaClass objects. @@ -64,6 +65,6 @@ public class ClassSet { public String[] getClassNames() { - return map.keySet().toArray(new String[0]); + return map.keySet().toArray(ArrayUtils.EMPTY_STRING_ARRAY); } } diff --git a/src/main/java/org/apache/bcel/verifier/PassVerifier.java b/src/main/java/org/apache/bcel/verifier/PassVerifier.java index 2a55edfb..4ba26d18 100644 --- a/src/main/java/org/apache/bcel/verifier/PassVerifier.java +++ b/src/main/java/org/apache/bcel/verifier/PassVerifier.java @@ -20,6 +20,8 @@ package org.apache.bcel.verifier; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.ArrayUtils; + /** * A PassVerifier actually verifies a class file; it is instantiated * by a Verifier. @@ -99,6 +101,6 @@ public abstract class PassVerifier { */ public String[] getMessages() { verify(); // create messages if not already done (cached!) - return messages.toArray(new String[0]); + return messages.toArray(ArrayUtils.EMPTY_STRING_ARRAY); } } diff --git a/src/main/java/org/apache/bcel/verifier/Verifier.java b/src/main/java/org/apache/bcel/verifier/Verifier.java index bc7dd0fa..d665f791 100644 --- a/src/main/java/org/apache/bcel/verifier/Verifier.java +++ b/src/main/java/org/apache/bcel/verifier/Verifier.java @@ -27,6 +27,7 @@ import org.apache.bcel.verifier.statics.Pass1Verifier; import org.apache.bcel.verifier.statics.Pass2Verifier; import org.apache.bcel.verifier.statics.Pass3aVerifier; import org.apache.bcel.verifier.structurals.Pass3bVerifier; +import org.apache.commons.lang3.ArrayUtils; /** * A Verifier instance is there to verify a class file according to The Java Virtual @@ -176,7 +177,7 @@ public class Verifier { } } - return messages.toArray(new String[0]); + return messages.toArray(ArrayUtils.EMPTY_STRING_ARRAY); } diff --git a/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java b/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java index 0b78f423..9987062b 100644 --- a/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java +++ b/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java @@ -25,6 +25,8 @@ import java.util.TreeSet; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; +import org.apache.commons.lang3.ArrayUtils; + /** * This class implements an adapter; it implements both a Swing ListModel and a VerifierFactoryObserver. * @@ -70,7 +72,7 @@ public class VerifierFactoryListModel implements VerifierFactoryObserver, javax. @Override public synchronized String getElementAt(final int index) { - return cache.toArray(new String[0])[index]; + return cache.toArray(ArrayUtils.EMPTY_STRING_ARRAY)[index]; } } diff --git a/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java b/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java index e2e045b8..0b592b1d 100644 --- a/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java +++ b/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java @@ -345,7 +345,7 @@ public class ControlFlowGraph{ // Terminates method abnormally, because JustIce mandates // subroutines not to be protected by exception handlers. if (inst instanceof ReturnInstruction || inst instanceof ATHROW) { - return InstructionHandle.EMPTY_INSTRUCTION_HANDLE_ARRAY; + return InstructionHandle.EMPTY_ARRAY; } // See method comment. diff --git a/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandler.java b/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandler.java index 73b6080c..1d08dc44 100644 --- a/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandler.java +++ b/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandler.java @@ -27,7 +27,10 @@ import org.apache.bcel.generic.ObjectType; * the handler starts off (represented by an InstructionContext). * */ -public class ExceptionHandler{ +public class ExceptionHandler { + + static final ExceptionHandler[] EMPTY_ARRAY = {}; + /** The type of the exception to catch. NULL means ANY. */ private final ObjectType catchType; diff --git a/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java b/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java index 827b4871..a77f2c6b 100644 --- a/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java +++ b/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java @@ -34,7 +34,7 @@ public class ExceptionHandlers { /** * Empty array. */ - private static final ExceptionHandler[] EMPTY_EXCEPTION_HANDLER_ARRAY = new ExceptionHandler[0]; + private static final ExceptionHandler[] EMPTY_ARRAY = new ExceptionHandler[0]; /** * The ExceptionHandler instances. Key: InstructionHandle objects, Values: HashSet<ExceptionHandler> instances. @@ -63,9 +63,9 @@ public class ExceptionHandlers { public ExceptionHandler[] getExceptionHandlers(final InstructionHandle ih) { final Set<ExceptionHandler> hsSet = exceptionHandlers.get(ih); if (hsSet == null) { - return EMPTY_EXCEPTION_HANDLER_ARRAY; + return EMPTY_ARRAY; } - return hsSet.toArray(new ExceptionHandler[0]); + return hsSet.toArray(ExceptionHandler.EMPTY_ARRAY); } } diff --git a/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java b/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java index ce8c5e87..e4b6abbf 100644 --- a/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java +++ b/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java @@ -628,7 +628,7 @@ public class Subroutines{ // Terminates method abnormally, because JustIce mandates // subroutines not to be protected by exception handlers. if (inst instanceof RET || inst instanceof ReturnInstruction || inst instanceof ATHROW) { - return InstructionHandle.EMPTY_INSTRUCTION_HANDLE_ARRAY; + return InstructionHandle.EMPTY_ARRAY; } // See method comment. diff --git a/src/test/java/org/apache/bcel/generic/AnnotationGenTestCase.java b/src/test/java/org/apache/bcel/generic/AnnotationGenTestCase.java index 77379417..7f5d21e6 100644 --- a/src/test/java/org/apache/bcel/generic/AnnotationGenTestCase.java +++ b/src/test/java/org/apache/bcel/generic/AnnotationGenTestCase.java @@ -96,7 +96,7 @@ public class AnnotationGenTestCase extends AbstractTestCase final AnnotationEntryGen a = new AnnotationEntryGen(t, elements, true, cp); final List<AnnotationEntryGen> v = new ArrayList<>(); v.add(a); - final Attribute[] attributes = AnnotationEntryGen.getAnnotationAttributes(cp, v.toArray(new AnnotationEntryGen[0])); + final Attribute[] attributes = AnnotationEntryGen.getAnnotationAttributes(cp, v.toArray(AnnotationEntryGen.EMPTY_ARRAY)); boolean foundRV = false; for (final Attribute attribute : attributes) { if (attribute instanceof RuntimeVisibleAnnotations) @@ -111,7 +111,7 @@ public class AnnotationGenTestCase extends AbstractTestCase final AnnotationEntryGen a2 = new AnnotationEntryGen(t, elements, false, cp); final List<AnnotationEntryGen> v2 = new ArrayList<>(); v2.add(a2); - final Attribute[] attributes2 = AnnotationEntryGen.getAnnotationAttributes(cp, v2.toArray(new AnnotationEntryGen[0])); + final Attribute[] attributes2 = AnnotationEntryGen.getAnnotationAttributes(cp, v2.toArray(AnnotationEntryGen.EMPTY_ARRAY)); boolean foundRIV = false; for (final Attribute attribute : attributes2) { if (attribute instanceof RuntimeInvisibleAnnotations) diff --git a/src/test/java/org/apache/bcel/generic/InstructionHandleTestCase.java b/src/test/java/org/apache/bcel/generic/InstructionHandleTestCase.java index 28dff411..4c5ad039 100644 --- a/src/test/java/org/apache/bcel/generic/InstructionHandleTestCase.java +++ b/src/test/java/org/apache/bcel/generic/InstructionHandleTestCase.java @@ -57,7 +57,7 @@ public class InstructionHandleTestCase { public void testBCEL195() { final InstructionList il = new InstructionList(); final InstructionHandle ih = il.append(InstructionConst.NOP); - new TABLESWITCH(new int[0], new InstructionHandle[0], ih); - new TABLESWITCH(new int[0], new InstructionHandle[0], ih); + new TABLESWITCH(new int[0], InstructionHandle.EMPTY_ARRAY, ih); + new TABLESWITCH(new int[0], InstructionHandle.EMPTY_ARRAY, ih); } }