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 e3969b8e561197b959689be11b0761c5c59fe3ee Author: Gary David Gregory (Code signing key) <ggreg...@apache.org> AuthorDate: Tue Apr 25 13:54:58 2023 -0400 Sort members --- src/main/java/org/apache/bcel/classfile/Code.java | 28 +++---- .../org/apache/bcel/classfile/StackMapType.java | 18 ++--- .../classfile/InvalidMethodSigantureTestCase.java | 6 +- .../org/apache/bcel/classfile/UtilityTestCase.java | 80 +++++++++---------- .../org/apache/bcel/util/BCELifierTestCase.java | 16 ++-- .../org/apache/bcel/verifier/VerifierTestCase.java | 30 ++++---- .../verifier/input/FieldVerifierChildClass.java | 24 +++--- .../input/StaticFieldVerifierChildClass.java | 26 +++---- .../org/apache/bcel/verifier/tests/JvmOpCodes.java | 90 +++++++++++----------- 9 files changed, 159 insertions(+), 159 deletions(-) diff --git a/src/main/java/org/apache/bcel/classfile/Code.java b/src/main/java/org/apache/bcel/classfile/Code.java index 4d2dea39..72964af1 100644 --- a/src/main/java/org/apache/bcel/classfile/Code.java +++ b/src/main/java/org/apache/bcel/classfile/Code.java @@ -247,20 +247,6 @@ public final class Code extends Attribute { return null; } - /** - * Finds the attribute of {@link StackMap} instance. - * @return StackMap of Code, if it has one, else null. - * @since 6.8.0 - */ - public StackMap getStackMap() { - for (final Attribute attribute : attributes) { - if (attribute instanceof StackMap) { - return (StackMap) attribute; - } - } - return null; - } - /** * @return LocalVariableTable of Code, if it has one */ @@ -287,6 +273,20 @@ public final class Code extends Attribute { return maxStack; } + /** + * Finds the attribute of {@link StackMap} instance. + * @return StackMap of Code, if it has one, else null. + * @since 6.8.0 + */ + public StackMap getStackMap() { + for (final Attribute attribute : attributes) { + if (attribute instanceof StackMap) { + return (StackMap) attribute; + } + } + return null; + } + /** * @param attributes the attributes to set for this Code */ diff --git a/src/main/java/org/apache/bcel/classfile/StackMapType.java b/src/main/java/org/apache/bcel/classfile/StackMapType.java index 3f3fc50c..b6bdcf51 100644 --- a/src/main/java/org/apache/bcel/classfile/StackMapType.java +++ b/src/main/java/org/apache/bcel/classfile/StackMapType.java @@ -105,6 +105,15 @@ public final class StackMapType implements Node, Cloneable { } } + /** + * Gets the class name of this StackMapType from the constant pool at index position. + * @return the fully qualified name of the class for this StackMapType. + * @since 6.8.0 + */ + public String getClassName() { + return constantPool.constantToString(index, Const.CONSTANT_Class); + } + /** * @return Constant pool used by this object. */ @@ -144,15 +153,6 @@ public final class StackMapType implements Node, Cloneable { return ""; } - /** - * Gets the class name of this StackMapType from the constant pool at index position. - * @return the fully qualified name of the class for this StackMapType. - * @since 6.8.0 - */ - public String getClassName() { - return constantPool.constantToString(index, Const.CONSTANT_Class); - } - /** * @param constantPool Constant pool to be used for this object. */ diff --git a/src/test/java/org/apache/bcel/classfile/InvalidMethodSigantureTestCase.java b/src/test/java/org/apache/bcel/classfile/InvalidMethodSigantureTestCase.java index f61b56fb..2a4696c3 100644 --- a/src/test/java/org/apache/bcel/classfile/InvalidMethodSigantureTestCase.java +++ b/src/test/java/org/apache/bcel/classfile/InvalidMethodSigantureTestCase.java @@ -50,15 +50,15 @@ final class test$method name with () in it$1 extends kotlin.jvm.internal.Lambda */ public class InvalidMethodSigantureTestCase { - private static final String CLASS_NAME = "test$method name with () in it$1"; - private static final String SRC_TEST_RESOURCES_KOTLIN = "src/test/resources/kotlin/"; - class TestVisitor extends org.apache.bcel.classfile.EmptyVisitor { @Override public void visitField(final Field field) { field.getType(); } } + private static final String CLASS_NAME = "test$method name with () in it$1"; + + private static final String SRC_TEST_RESOURCES_KOTLIN = "src/test/resources/kotlin/"; @Test public void testLoadClass() throws Exception { diff --git a/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java b/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java index 128b9282..fb1b8785 100644 --- a/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java +++ b/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java @@ -41,6 +41,46 @@ public class UtilityTestCase { assertEquals(0, Utility.clearBit(Integer.MIN_VALUE, 31), "100...00 set bit 31 to 0 -> 000..00"); } + @Test + public void testCodeToString() throws Exception { + class CodeToString { + int[][] a = new int[0][0]; + + CodeToString() { + if (a instanceof int[][]) { + System.out.print(Arrays.asList(a).size()); + } + } + } + final JavaClass javaClass = Repository.lookupClass(CodeToString.class); + assertNotNull(javaClass); + for (final Method method : javaClass.getMethods()) { + assertEquals("<init>", method.getName()); + final String code = method.getCode().toString(false); + assertTrue(code.contains("0: aload_0"), code); + assertTrue(code.contains("1: aload_1"), code); + assertTrue(code.contains("2: putfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.this$0 Lorg/apache/bcel/classfile/UtilityTestCase;"), code); + assertTrue(code.contains("5: aload_0"), code); + assertTrue(code.contains("6: invokespecial\tjava.lang.Object.<init> ()V"), code); + assertTrue(code.contains("9: aload_0"), code); + assertTrue(code.contains("10: iconst_0"), code); + assertTrue(code.contains("11: iconst_0"), code); + assertTrue(code.contains("12: multianewarray\t<[[I>\t2"), code); + assertTrue(code.contains("16: putfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.a [[I"), code); + assertTrue(code.contains("19: aload_0"), code); + assertTrue(code.contains("20: getfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.a [[I"), code); + assertTrue(code.contains("23: instanceof\t<[[I>"), code); + assertTrue(code.contains("26: ifeq\t\t#47"), code); + assertTrue(code.contains("29: getstatic\t\tjava.lang.System.out Ljava/io/PrintStream;"), code); + assertTrue(code.contains("32: aload_0"), code); + assertTrue(code.contains("33: getfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.a [[I"), code); + assertTrue(code.contains("36: invokestatic\tjava.util.Arrays.asList ([Ljava/lang/Object;)Ljava/util/List;"), code); + assertTrue(code.contains("39: invokeinterface\tjava.util.List.size ()I1\t0"), code); + assertTrue(code.contains("44: invokevirtual\tjava.io.PrintStream.print (I)V"), code); + assertTrue(code.contains("47: return"), code); + } + } + @Test public void testConvertString() { assertEquals("\\n", Utility.convertString("\n")); @@ -132,44 +172,4 @@ public class UtilityTestCase { assertEquals("<K extends Object, V extends Object> extends Object", Utility.signatureToString("<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;"), "class signature"); } - - @Test - public void testCodeToString() throws Exception { - class CodeToString { - int[][] a = new int[0][0]; - - CodeToString() { - if (a instanceof int[][]) { - System.out.print(Arrays.asList(a).size()); - } - } - } - final JavaClass javaClass = Repository.lookupClass(CodeToString.class); - assertNotNull(javaClass); - for (final Method method : javaClass.getMethods()) { - assertEquals("<init>", method.getName()); - final String code = method.getCode().toString(false); - assertTrue(code.contains("0: aload_0"), code); - assertTrue(code.contains("1: aload_1"), code); - assertTrue(code.contains("2: putfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.this$0 Lorg/apache/bcel/classfile/UtilityTestCase;"), code); - assertTrue(code.contains("5: aload_0"), code); - assertTrue(code.contains("6: invokespecial\tjava.lang.Object.<init> ()V"), code); - assertTrue(code.contains("9: aload_0"), code); - assertTrue(code.contains("10: iconst_0"), code); - assertTrue(code.contains("11: iconst_0"), code); - assertTrue(code.contains("12: multianewarray\t<[[I>\t2"), code); - assertTrue(code.contains("16: putfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.a [[I"), code); - assertTrue(code.contains("19: aload_0"), code); - assertTrue(code.contains("20: getfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.a [[I"), code); - assertTrue(code.contains("23: instanceof\t<[[I>"), code); - assertTrue(code.contains("26: ifeq\t\t#47"), code); - assertTrue(code.contains("29: getstatic\t\tjava.lang.System.out Ljava/io/PrintStream;"), code); - assertTrue(code.contains("32: aload_0"), code); - assertTrue(code.contains("33: getfield\t\torg.apache.bcel.classfile.UtilityTestCase$1CodeToString.a [[I"), code); - assertTrue(code.contains("36: invokestatic\tjava.util.Arrays.asList ([Ljava/lang/Object;)Ljava/util/List;"), code); - assertTrue(code.contains("39: invokeinterface\tjava.util.List.size ()I1\t0"), code); - assertTrue(code.contains("44: invokevirtual\tjava.io.PrintStream.print (I)V"), code); - assertTrue(code.contains("47: return"), code); - } - } } diff --git a/src/test/java/org/apache/bcel/util/BCELifierTestCase.java b/src/test/java/org/apache/bcel/util/BCELifierTestCase.java index a856c2cd..da0d1e29 100644 --- a/src/test/java/org/apache/bcel/util/BCELifierTestCase.java +++ b/src/test/java/org/apache/bcel/util/BCELifierTestCase.java @@ -208,6 +208,14 @@ public class BCELifierTestCase extends AbstractTestCase { } } + @ParameterizedTest + @ValueSource(strings = { "StackMapExample", "StackMapExample2" }) + public void testStackMap(final String className) throws Exception { + testJavapCompare(className); + final File workDir = new File("target"); + assertEquals("Hello World" + EOL, exec(workDir, "java", "-cp", CLASSPATH, className, "Hello")); + } + @Test public void testStart() throws Exception { final OutputStream os = new ByteArrayOutputStream(); @@ -216,12 +224,4 @@ public class BCELifierTestCase extends AbstractTestCase { final BCELifier bcelifier = new BCELifier(javaClass, os); bcelifier.start(); } - - @ParameterizedTest - @ValueSource(strings = { "StackMapExample", "StackMapExample2" }) - public void testStackMap(final String className) throws Exception { - testJavapCompare(className); - final File workDir = new File("target"); - assertEquals("Hello World" + EOL, exec(workDir, "java", "-cp", CLASSPATH, className, "Hello")); - } } diff --git a/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java b/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java index b17105a0..951c0c8a 100644 --- a/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java +++ b/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java @@ -111,16 +111,6 @@ public class VerifierTestCase { VerifierFactory.clear(); } - @Test - public void testPackagePrivateField() throws ClassNotFoundException { - testDefaultMethodValidation(FieldVerifierChildClass.class.getName()); - } - - @Test - public void testPackagePrivateStaticField() throws ClassNotFoundException { - testDefaultMethodValidation(StaticFieldVerifierChildClass.class.getName()); - } - @Test public void testArrayUtils() throws ClassNotFoundException { testNestHostWithJavaVersion("org.apache.commons.lang.ArrayUtils"); @@ -142,9 +132,8 @@ public class VerifierTestCase { } @Test - @DisabledForJreRange(min = JRE.JAVA_9) - public void testObjectInputStreamJDK8() { - assertThrowsExactly(UnsupportedOperationException.class, () -> testNestHostWithJavaVersion("java.io.ObjectInputStream")); + public void testJvmOpCodes() throws ClassNotFoundException { + testDefaultMethodValidation("org.apache.bcel.verifier.tests.JvmOpCodes"); } @Test @@ -154,8 +143,19 @@ public class VerifierTestCase { } @Test - public void testJvmOpCodes() throws ClassNotFoundException { - testDefaultMethodValidation("org.apache.bcel.verifier.tests.JvmOpCodes"); + @DisabledForJreRange(min = JRE.JAVA_9) + public void testObjectInputStreamJDK8() { + assertThrowsExactly(UnsupportedOperationException.class, () -> testNestHostWithJavaVersion("java.io.ObjectInputStream")); + } + + @Test + public void testPackagePrivateField() throws ClassNotFoundException { + testDefaultMethodValidation(FieldVerifierChildClass.class.getName()); + } + + @Test + public void testPackagePrivateStaticField() throws ClassNotFoundException { + testDefaultMethodValidation(StaticFieldVerifierChildClass.class.getName()); } @Test diff --git a/src/test/java/org/apache/bcel/verifier/input/FieldVerifierChildClass.java b/src/test/java/org/apache/bcel/verifier/input/FieldVerifierChildClass.java index 99c020ce..390fd54f 100644 --- a/src/test/java/org/apache/bcel/verifier/input/FieldVerifierChildClass.java +++ b/src/test/java/org/apache/bcel/verifier/input/FieldVerifierChildClass.java @@ -23,27 +23,27 @@ public class FieldVerifierChildClass extends FieldVerifierSuperClass { super(c.publicField, c.getPrivateField(), c.protectedField, c.packagePrivateField); } - public int getPublicField() { - return publicField; - } - - public void setPublicField(final int publicField) { - this.publicField = publicField; + public int getPackagePrivateField() { + return packagePrivateField; } public int getProtectedField() { return protectedField; } - public void setProtectedField(final int protectedField) { - this.protectedField = protectedField; - } - - public int getPackagePrivateField() { - return packagePrivateField; + public int getPublicField() { + return publicField; } public void setPackagePrivateField(final int packagePrivateField) { this.packagePrivateField = packagePrivateField; } + + public void setProtectedField(final int protectedField) { + this.protectedField = protectedField; + } + + public void setPublicField(final int publicField) { + this.publicField = publicField; + } } diff --git a/src/test/java/org/apache/bcel/verifier/input/StaticFieldVerifierChildClass.java b/src/test/java/org/apache/bcel/verifier/input/StaticFieldVerifierChildClass.java index 6c804f08..075fdd03 100644 --- a/src/test/java/org/apache/bcel/verifier/input/StaticFieldVerifierChildClass.java +++ b/src/test/java/org/apache/bcel/verifier/input/StaticFieldVerifierChildClass.java @@ -19,32 +19,32 @@ package org.apache.bcel.verifier.input; public class StaticFieldVerifierChildClass extends StaticFieldVerifierSuperClass { - @SuppressWarnings("static-access") - public StaticFieldVerifierChildClass(final StaticFieldVerifierChildClass c) { - super(c.publicField, c.getPrivateField(), c.protectedField, c.packagePrivateField); + public static int getPackagePrivateField() { + return packagePrivateField; } - public static int getPublicField() { - return publicField; + public static int getProtectedField() { + return protectedField; } - public static void setPublicField(final int publicField) { - StaticFieldVerifierChildClass.publicField = publicField; + public static int getPublicField() { + return publicField; } - public static int getProtectedField() { - return protectedField; + public static void setPackagePrivateField(final int packagePrivateField) { + StaticFieldVerifierChildClass.packagePrivateField = packagePrivateField; } public static void setProtectedField(final int protectedField) { StaticFieldVerifierChildClass.protectedField = protectedField; } - public static int getPackagePrivateField() { - return packagePrivateField; + public static void setPublicField(final int publicField) { + StaticFieldVerifierChildClass.publicField = publicField; } - public static void setPackagePrivateField(final int packagePrivateField) { - StaticFieldVerifierChildClass.packagePrivateField = packagePrivateField; + @SuppressWarnings("static-access") + public StaticFieldVerifierChildClass(final StaticFieldVerifierChildClass c) { + super(c.publicField, c.getPrivateField(), c.protectedField, c.packagePrivateField); } } diff --git a/src/test/java/org/apache/bcel/verifier/tests/JvmOpCodes.java b/src/test/java/org/apache/bcel/verifier/tests/JvmOpCodes.java index 0653796a..b5c661fe 100644 --- a/src/test/java/org/apache/bcel/verifier/tests/JvmOpCodes.java +++ b/src/test/java/org/apache/bcel/verifier/tests/JvmOpCodes.java @@ -44,11 +44,17 @@ public class JvmOpCodes { long l1, l2; /** - * Tests {@link DUP2_X1}. + * Tests {@link DNEG}. */ - void dup2x1(String[] s) { - s[0] += "s"; // Form 1 - l2 = l1 = 1; // Form 2 + double dneg(double a) { + return -a; + } + + /** + * Tests {@link DREM}. + */ + double drem(double a, double b) { + return a % b; } /** @@ -58,6 +64,14 @@ public class JvmOpCodes { return a = a + 1; } + /** + * Tests {@link DUP2_X1}. + */ + void dup2x1(String[] s) { + s[0] += "s"; // Form 1 + l2 = l1 = 1; // Form 2 + } + /** * Tests {@link DUP2_X2}. */ @@ -73,31 +87,31 @@ public class JvmOpCodes { } /** - * Tests {@link LNEG}. + * Tests {@link FADD}. */ - long lneg(long a) { - return -a; + float fadd(float a, float b) { + return a + b; } /** - * Tests {@link LOR}. + * Tests {@link FNEG}. */ - long lor(long a, long b) { - return a | b; + float fneg(float a) { + return -a; } /** - * Tests {@link LAND}. + * Tests {@link FREM}. */ - long land(long a, long b) { - return a & b; + float frem(float a, float b) { + return a % b; } /** - * Tests {@link LUSHR}. + * Tests {@link FSUB}. */ - long lushr(long a, long b) { - return a >>> b; + float fsub(float a, float b) { + return a - b; } /** @@ -108,52 +122,38 @@ public class JvmOpCodes { } /** - * Tests {@link LSHL}. - */ - long lshl(long a, long b) { - return a << b; - } - - /** - * Tests {@link FSUB}. - */ - float fsub(float a, float b) { - return a - b; - } - - /** - * Tests {@link FADD}. + * Tests {@link LAND}. */ - float fadd(float a, float b) { - return a + b; + long land(long a, long b) { + return a & b; } /** - * Tests {@link FREM}. + * Tests {@link LNEG}. */ - float frem(float a, float b) { - return a % b; + long lneg(long a) { + return -a; } /** - * Tests {@link FNEG}. + * Tests {@link LOR}. */ - float fneg(float a) { - return -a; + long lor(long a, long b) { + return a | b; } /** - * Tests {@link DREM}. + * Tests {@link LSHL}. */ - double drem(double a, double b) { - return a % b; + long lshl(long a, long b) { + return a << b; } /** - * Tests {@link DNEG}. + * Tests {@link LUSHR}. */ - double dneg(double a) { - return -a; + long lushr(long a, long b) { + return a >>> b; } /**