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/08/15 19:27:17 UTC
[commons-bcel] 01/02: Use streams, less boilerplate, Javadoc
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 9b6f88a4959186b6169035b1d06726700a3244b8
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Aug 15 15:17:25 2022 -0400
Use streams, less boilerplate, Javadoc
---
.../org/apache/bcel/classfile/AnnotationEntry.java | 28 +--
.../java/org/apache/bcel/classfile/Attribute.java | 12 +-
.../java/org/apache/bcel/classfile/Deprecated.java | 2 +-
.../apache/bcel/classfile/DescendingVisitor.java | 248 +++++++--------------
.../org/apache/bcel/classfile/ExceptionTable.java | 13 +-
.../org/apache/bcel/classfile/FieldOrMethod.java | 29 ++-
.../java/org/apache/bcel/generic/ClassGen.java | 28 +--
.../java/org/apache/bcel/generic/FieldGen.java | 15 +-
8 files changed, 126 insertions(+), 249 deletions(-)
diff --git a/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java b/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
index 543f1ecc..36b5c963 100644
--- a/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
+++ b/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
@@ -21,13 +21,13 @@ import java.io.DataInput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
+import java.util.stream.Stream;
import org.apache.bcel.Const;
/**
- * represents one annotation in the annotation table
+ * Represents one annotation in the annotation table
*
* @since 6.0
*/
@@ -37,36 +37,32 @@ public class AnnotationEntry implements Node {
public static AnnotationEntry[] createAnnotationEntries(final Attribute[] attrs) {
// Find attributes that contain annotation data
- final List<AnnotationEntry> accumulatedAnnotations = new ArrayList<>(attrs.length);
- for (final Attribute attribute : attrs) {
- if (attribute instanceof Annotations) {
- final Annotations runtimeAnnotations = (Annotations) attribute;
- Collections.addAll(accumulatedAnnotations, runtimeAnnotations.getAnnotationEntries());
- }
- }
- return accumulatedAnnotations.toArray(AnnotationEntry.EMPTY_ARRAY);
+ return Stream.of(attrs).filter(Annotations.class::isInstance)
+ .flatMap(e -> Stream.of(((Annotations) e).getAnnotationEntries())).toArray(AnnotationEntry[]::new);
}
- /*
+
+ /**
* Factory method to create an AnnotionEntry from a DataInput
*
* @param input
* @param constantPool
* @param isRuntimeVisible
* @return the entry
- * @throws IOException
+ * @throws IOException if an I/O error occurs.
*/
- public static AnnotationEntry read(final DataInput input, final ConstantPool constant_pool, final boolean isRuntimeVisible) throws IOException {
+ public static AnnotationEntry read(final DataInput input, final ConstantPool constantPool, final boolean isRuntimeVisible) throws IOException {
- final AnnotationEntry annotationEntry = new AnnotationEntry(input.readUnsignedShort(), constant_pool, isRuntimeVisible);
+ final AnnotationEntry annotationEntry = new AnnotationEntry(input.readUnsignedShort(), constantPool, isRuntimeVisible);
final int num_element_value_pairs = input.readUnsignedShort();
annotationEntry.elementValuePairs = new ArrayList<>();
for (int i = 0; i < num_element_value_pairs; i++) {
annotationEntry.elementValuePairs.add(
- new ElementValuePair(input.readUnsignedShort(), ElementValue.readElementValue(input, constant_pool),
- constant_pool));
+ new ElementValuePair(input.readUnsignedShort(), ElementValue.readElementValue(input, constantPool),
+ constantPool));
}
return annotationEntry;
}
+
private final int typeIndex;
private final ConstantPool constantPool;
diff --git a/src/main/java/org/apache/bcel/classfile/Attribute.java b/src/main/java/org/apache/bcel/classfile/Attribute.java
index b2037224..f48d3562 100644
--- a/src/main/java/org/apache/bcel/classfile/Attribute.java
+++ b/src/main/java/org/apache/bcel/classfile/Attribute.java
@@ -104,12 +104,11 @@ public abstract class Attribute implements Cloneable, Node {
* @param file Input stream
* @param constant_pool Array of constants
* @return Attribute
- * @throws IOException
- * @throws ClassFormatException
+ * @throws IOException if an I/O error occurs.
* @since 6.0
*/
public static Attribute readAttribute(final DataInput file, final ConstantPool constant_pool)
- throws IOException, ClassFormatException
+ throws IOException
{
byte tag = Const.ATTR_UNKNOWN; // Unknown attribute
// Get class name from constant pool via `name_index' indirection
@@ -216,11 +215,10 @@ public abstract class Attribute implements Cloneable, Node {
* @param file Input stream
* @param constant_pool Array of constants
* @return Attribute
- * @throws IOException
- * @throws ClassFormatException
+ * @throws IOException if an I/O error occurs.
*/
public static Attribute readAttribute(final DataInputStream file, final ConstantPool constant_pool)
- throws IOException, ClassFormatException
+ throws IOException
{
return readAttribute((DataInput) file, constant_pool);
}
@@ -309,7 +307,7 @@ public abstract class Attribute implements Cloneable, Node {
*
* @param file
* Output file stream
- * @throws IOException
+ * @throws IOException if an I/O error occurs.
*/
public void dump(final DataOutputStream file) throws IOException
{
diff --git a/src/main/java/org/apache/bcel/classfile/Deprecated.java b/src/main/java/org/apache/bcel/classfile/Deprecated.java
index d136525f..24e8da9b 100644
--- a/src/main/java/org/apache/bcel/classfile/Deprecated.java
+++ b/src/main/java/org/apache/bcel/classfile/Deprecated.java
@@ -108,7 +108,7 @@ public final class Deprecated extends Attribute {
* Dump source file attribute to file stream in binary format.
*
* @param file Output file stream
- * @throws IOException
+ * @throws IOException if an I/O error occurs.
*/
@Override
public void dump( final DataOutputStream file ) throws IOException {
diff --git a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
index 3fed1457..c87a1759 100644
--- a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
+++ b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
@@ -17,16 +17,16 @@
*/
package org.apache.bcel.classfile;
+import java.util.Objects;
import java.util.Stack;
+import java.util.stream.Stream;
/**
- * Traverses a JavaClass with another Visitor object 'piggy-backed' that is
- * applied to all components of a JavaClass object. I.e. this class supplies the
- * traversal strategy, other classes can make use of it.
+ * Traverses a JavaClass with another Visitor object 'piggy-backed' that is applied to all components of a JavaClass
+ * object. I.e. this class supplies the traversal strategy, other classes can make use of it.
*
*/
-public class DescendingVisitor implements Visitor
-{
+public class DescendingVisitor implements Visitor {
private final JavaClass clazz;
private final Visitor visitor;
@@ -34,43 +34,39 @@ public class DescendingVisitor implements Visitor
private final Stack<Object> stack = new Stack<>();
/**
- * @param clazz
- * Class to traverse
- * @param visitor
- * visitor object to apply to all components
+ * @param clazz Class to traverse
+ * @param visitor visitor object to apply to all components
*/
- public DescendingVisitor(final JavaClass clazz, final Visitor visitor)
- {
+ public DescendingVisitor(final JavaClass clazz, final Visitor visitor) {
this.clazz = clazz;
this.visitor = visitor;
}
+ private <E extends Node> void accept(final E[] node) {
+ Stream.of(node).forEach(e -> e.accept(this));
+ }
+
/**
* @return current object
*/
- public Object current()
- {
+ public Object current() {
return stack.peek();
}
/**
* @return container of current entitity, i.e., predecessor during traversal
*/
- public Object predecessor()
- {
+ public Object predecessor() {
return predecessor(0);
}
/**
- * @param level
- * nesting level, i.e., 0 returns the direct predecessor
+ * @param level nesting level, i.e., 0 returns the direct predecessor
* @return container of current entitity, i.e., predecessor during traversal
*/
- public Object predecessor(final int level)
- {
+ public Object predecessor(final int level) {
final int size = stack.size();
- if (size < 2 || level < 0)
- {
+ if (size < 2 || level < 0) {
return null;
}
return stack.elementAt(size - (level + 2)); // size - 1 == current
@@ -79,8 +75,7 @@ public class DescendingVisitor implements Visitor
/**
* Start traversal.
*/
- public void visit()
- {
+ public void visit() {
clazz.accept(this);
}
@@ -88,13 +83,10 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitAnnotation(final Annotations annotation)
- {
+ public void visitAnnotation(final Annotations annotation) {
stack.push(annotation);
annotation.accept(visitor);
- for (final AnnotationEntry entrie : annotation.getAnnotationEntries()) {
- entrie.accept(this);
- }
+ accept(annotation.getAnnotationEntries());
stack.pop();
}
@@ -102,8 +94,7 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitAnnotationDefault(final AnnotationDefault obj)
- {
+ public void visitAnnotationDefault(final AnnotationDefault obj) {
stack.push(obj);
obj.accept(visitor);
stack.pop();
@@ -113,8 +104,7 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitAnnotationEntry(final AnnotationEntry annotationEntry)
- {
+ public void visitAnnotationEntry(final AnnotationEntry annotationEntry) {
stack.push(annotationEntry);
annotationEntry.accept(visitor);
stack.pop();
@@ -124,51 +114,42 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitBootstrapMethods(final BootstrapMethods bm)
- {
+ public void visitBootstrapMethods(final BootstrapMethods bm) {
stack.push(bm);
bm.accept(visitor);
// BootstrapMethod[] bms = bm.getBootstrapMethods();
// for (int i = 0; i < bms.length; i++)
// {
- // bms[i].accept(this);
+ // bms[i].accept(this);
// }
stack.pop();
}
@Override
- public void visitCode(final Code code)
- {
+ public void visitCode(final Code code) {
stack.push(code);
code.accept(visitor);
- for (final CodeException element : code.getExceptionTable()) {
- element.accept(this);
- }
- for (final Attribute attribute : code.getAttributes()) {
- attribute.accept(this);
- }
+ accept(code.getExceptionTable());
+ accept(code.getAttributes());
stack.pop();
}
@Override
- public void visitCodeException(final CodeException ce)
- {
+ public void visitCodeException(final CodeException ce) {
stack.push(ce);
ce.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantClass(final ConstantClass constant)
- {
+ public void visitConstantClass(final ConstantClass constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantDouble(final ConstantDouble constant)
- {
+ public void visitConstantDouble(final ConstantDouble constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
@@ -183,33 +164,28 @@ public class DescendingVisitor implements Visitor
}
@Override
- public void visitConstantFieldref(final ConstantFieldref constant)
- {
+ public void visitConstantFieldref(final ConstantFieldref constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantFloat(final ConstantFloat constant)
- {
+ public void visitConstantFloat(final ConstantFloat constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantInteger(final ConstantInteger constant)
- {
+ public void visitConstantInteger(final ConstantInteger constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantInterfaceMethodref(
- final ConstantInterfaceMethodref constant)
- {
+ public void visitConstantInterfaceMethodref(final ConstantInterfaceMethodref constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
@@ -219,17 +195,14 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitConstantInvokeDynamic(
- final ConstantInvokeDynamic constant)
- {
+ public void visitConstantInvokeDynamic(final ConstantInvokeDynamic constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantLong(final ConstantLong constant)
- {
+ public void visitConstantLong(final ConstantLong constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
@@ -244,8 +217,7 @@ public class DescendingVisitor implements Visitor
}
@Override
- public void visitConstantMethodref(final ConstantMethodref constant)
- {
+ public void visitConstantMethodref(final ConstantMethodref constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
@@ -268,8 +240,7 @@ public class DescendingVisitor implements Visitor
}
@Override
- public void visitConstantNameAndType(final ConstantNameAndType constant)
- {
+ public void visitConstantNameAndType(final ConstantNameAndType constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
@@ -284,48 +255,36 @@ public class DescendingVisitor implements Visitor
}
@Override
- public void visitConstantPool(final ConstantPool cp)
- {
+ public void visitConstantPool(final ConstantPool cp) {
stack.push(cp);
cp.accept(visitor);
- final Constant[] constants = cp.getConstantPool();
- for (int i = 1; i < constants.length; i++)
- {
- if (constants[i] != null)
- {
- constants[i].accept(this);
- }
- }
+ Stream.of(cp.getConstantPool()).filter(Objects::nonNull).forEach(e -> e.accept(this));
stack.pop();
}
@Override
- public void visitConstantString(final ConstantString constant)
- {
+ public void visitConstantString(final ConstantString constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantUtf8(final ConstantUtf8 constant)
- {
+ public void visitConstantUtf8(final ConstantUtf8 constant) {
stack.push(constant);
constant.accept(visitor);
stack.pop();
}
@Override
- public void visitConstantValue(final ConstantValue cv)
- {
+ public void visitConstantValue(final ConstantValue cv) {
stack.push(cv);
cv.accept(visitor);
stack.pop();
}
@Override
- public void visitDeprecated(final Deprecated attribute)
- {
+ public void visitDeprecated(final Deprecated attribute) {
stack.push(attribute);
attribute.accept(visitor);
stack.pop();
@@ -335,104 +294,80 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitEnclosingMethod(final EnclosingMethod obj)
- {
+ public void visitEnclosingMethod(final EnclosingMethod obj) {
stack.push(obj);
obj.accept(visitor);
stack.pop();
}
@Override
- public void visitExceptionTable(final ExceptionTable table)
- {
+ public void visitExceptionTable(final ExceptionTable table) {
stack.push(table);
table.accept(visitor);
stack.pop();
}
@Override
- public void visitField(final Field field)
- {
+ public void visitField(final Field field) {
stack.push(field);
field.accept(visitor);
- for (final Attribute attribute : field.getAttributes()) {
- attribute.accept(this);
- }
+ accept(field.getAttributes());
stack.pop();
}
@Override
- public void visitInnerClass(final InnerClass inner)
- {
+ public void visitInnerClass(final InnerClass inner) {
stack.push(inner);
inner.accept(visitor);
stack.pop();
}
@Override
- public void visitInnerClasses(final InnerClasses ic)
- {
+ public void visitInnerClasses(final InnerClasses ic) {
stack.push(ic);
ic.accept(visitor);
- for (final InnerClass ic2 : ic.getInnerClasses()) {
- ic2.accept(this);
- }
+ accept(ic.getInnerClasses());
stack.pop();
}
@Override
- public void visitJavaClass(final JavaClass _clazz)
- {
+ public void visitJavaClass(final JavaClass _clazz) {
stack.push(_clazz);
_clazz.accept(visitor);
- for (final Field field : _clazz.getFields()) {
- field.accept(this);
- }
- for (final Method method : _clazz.getMethods()) {
- method.accept(this);
- }
- for (final Attribute attribute : _clazz.getAttributes()) {
- attribute.accept(this);
- }
+ accept(_clazz.getFields());
+ accept(_clazz.getMethods());
+ accept(_clazz.getAttributes());
_clazz.getConstantPool().accept(this);
stack.pop();
}
@Override
- public void visitLineNumber(final LineNumber number)
- {
+ public void visitLineNumber(final LineNumber number) {
stack.push(number);
number.accept(visitor);
stack.pop();
}
@Override
- public void visitLineNumberTable(final LineNumberTable table)
- {
+ public void visitLineNumberTable(final LineNumberTable table) {
stack.push(table);
table.accept(visitor);
- for (final LineNumber number : table.getLineNumberTable()) {
- number.accept(this);
- }
+ accept(table.getLineNumberTable());
stack.pop();
}
@Override
- public void visitLocalVariable(final LocalVariable var)
- {
+ public void visitLocalVariable(final LocalVariable var) {
stack.push(var);
var.accept(visitor);
stack.pop();
}
@Override
- public void visitLocalVariableTable(final LocalVariableTable table)
- {
+ public void visitLocalVariableTable(final LocalVariableTable table) {
stack.push(table);
table.accept(visitor);
- for (final LocalVariable var : table.getLocalVariableTable()) {
- var.accept(this);
- }
+ accept(table.getLocalVariableTable());
stack.pop();
}
@@ -440,21 +375,17 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitLocalVariableTypeTable(final LocalVariableTypeTable obj)
- {
+ public void visitLocalVariableTypeTable(final LocalVariableTypeTable obj) {
stack.push(obj);
obj.accept(visitor);
stack.pop();
}
@Override
- public void visitMethod(final Method method)
- {
+ public void visitMethod(final Method method) {
stack.push(method);
method.accept(visitor);
- for (final Attribute attribute : method.getAttributes()) {
- attribute.accept(this);
- }
+ accept(method.getAttributes());
stack.pop();
}
@@ -462,8 +393,7 @@ public class DescendingVisitor implements Visitor
* @since 6.4.0
*/
@Override
- public void visitMethodParameter(final MethodParameter obj)
- {
+ public void visitMethodParameter(final MethodParameter obj) {
stack.push(obj);
obj.accept(visitor);
stack.pop();
@@ -473,13 +403,10 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitMethodParameters(final MethodParameters obj)
- {
+ public void visitMethodParameters(final MethodParameters obj) {
stack.push(obj);
obj.accept(visitor);
- for (final MethodParameter element : obj.getParameters()) {
- element.accept(this);
- }
+ Stream.of(obj.getParameters()).forEach(e -> e.accept(this));
stack.pop();
}
@@ -488,18 +415,10 @@ public class DescendingVisitor implements Visitor
public void visitModule(final Module obj) {
stack.push(obj);
obj.accept(visitor);
- for (final ModuleRequires element : obj.getRequiresTable()) {
- element.accept(this);
- }
- for (final ModuleExports element : obj.getExportsTable()) {
- element.accept(this);
- }
- for (final ModuleOpens element : obj.getOpensTable()) {
- element.accept(this);
- }
- for (final ModuleProvides element : obj.getProvidesTable()) {
- element.accept(this);
- }
+ accept(obj.getRequiresTable());
+ accept(obj.getExportsTable());
+ accept(obj.getOpensTable());
+ accept(obj.getProvidesTable());
stack.pop();
}
@@ -571,8 +490,7 @@ public class DescendingVisitor implements Visitor
* @since 6.0
*/
@Override
- public void visitParameterAnnotation(final ParameterAnnotations obj)
- {
+ public void visitParameterAnnotation(final ParameterAnnotations obj) {
stack.push(obj);
obj.accept(visitor);
stack.pop();
@@ -587,51 +505,43 @@ public class DescendingVisitor implements Visitor
}
@Override
- public void visitSignature(final Signature attribute)
- {
+ public void visitSignature(final Signature attribute) {
stack.push(attribute);
attribute.accept(visitor);
stack.pop();
}
@Override
- public void visitSourceFile(final SourceFile attribute)
- {
+ public void visitSourceFile(final SourceFile attribute) {
stack.push(attribute);
attribute.accept(visitor);
stack.pop();
}
@Override
- public void visitStackMap(final StackMap table)
- {
+ public void visitStackMap(final StackMap table) {
stack.push(table);
table.accept(visitor);
- for (final StackMapEntry var : table.getStackMap()) {
- var.accept(this);
- }
+ accept(table.getStackMap());
stack.pop();
}
@Override
- public void visitStackMapEntry(final StackMapEntry var)
- {
+ public void visitStackMapEntry(final StackMapEntry var) {
stack.push(var);
var.accept(visitor);
stack.pop();
}
@Override
- public void visitSynthetic(final Synthetic attribute)
- {
+ public void visitSynthetic(final Synthetic attribute) {
stack.push(attribute);
attribute.accept(visitor);
stack.pop();
}
@Override
- public void visitUnknown(final Unknown attribute)
- {
+ public void visitUnknown(final Unknown attribute) {
stack.push(attribute);
attribute.accept(visitor);
stack.pop();
diff --git a/src/main/java/org/apache/bcel/classfile/ExceptionTable.java b/src/main/java/org/apache/bcel/classfile/ExceptionTable.java
index cd33ee35..ae8cf78d 100644
--- a/src/main/java/org/apache/bcel/classfile/ExceptionTable.java
+++ b/src/main/java/org/apache/bcel/classfile/ExceptionTable.java
@@ -38,7 +38,6 @@ public final class ExceptionTable extends Attribute {
private int[] exceptionIndexTable; // constant pool
-
/**
* Initialize from another object. Note that both objects use the same
* references (shallow copy). Use copy() for a physical copy.
@@ -47,7 +46,6 @@ public final class ExceptionTable extends Attribute {
this(c.getNameIndex(), c.getLength(), c.getExceptionIndexTable(), c.getConstantPool());
}
-
/**
* Construct object from input stream.
* @param nameIndex Index in constant pool
@@ -65,7 +63,6 @@ public final class ExceptionTable extends Attribute {
}
}
-
/**
* @param name_index Index in constant pool
* @param length Content length in bytes
@@ -78,7 +75,6 @@ public final class ExceptionTable extends Attribute {
this.exceptionIndexTable = exceptionIndexTable != null ? exceptionIndexTable : ArrayUtils.EMPTY_INT_ARRAY;
}
-
/**
* Called by objects that are traversing the nodes of the tree implicitely
* defined by the contents of a Java class. I.e., the hierarchy of methods,
@@ -91,7 +87,6 @@ public final class ExceptionTable extends Attribute {
v.visitExceptionTable(this);
}
-
/**
* @return deep copy of this attribute
*/
@@ -107,12 +102,11 @@ public final class ExceptionTable extends Attribute {
return c;
}
-
/**
* Dump exceptions attribute to file stream in binary format.
*
* @param file Output file stream
- * @throws IOException
+ * @throws IOException if an I/O error occurs.
*/
@Override
public void dump( final DataOutputStream file ) throws IOException {
@@ -123,7 +117,6 @@ public final class ExceptionTable extends Attribute {
}
}
-
/**
* @return Array of indices into constant pool of thrown exceptions.
*/
@@ -131,7 +124,6 @@ public final class ExceptionTable extends Attribute {
return exceptionIndexTable;
}
-
/**
* @return class names of thrown exceptions
*/
@@ -144,7 +136,6 @@ public final class ExceptionTable extends Attribute {
return names;
}
-
/**
* @return Length of exception table.
*/
@@ -152,7 +143,6 @@ public final class ExceptionTable extends Attribute {
return exceptionIndexTable == null ? 0 : exceptionIndexTable.length;
}
-
/**
* @param exceptionIndexTable the list of exception indexes
* Also redefines number_of_exceptions according to table length.
@@ -161,7 +151,6 @@ public final class ExceptionTable extends Attribute {
this.exceptionIndexTable = exceptionIndexTable != null ? exceptionIndexTable : ArrayUtils.EMPTY_INT_ARRAY;
}
-
/**
* @return String representation, i.e., a list of thrown exceptions.
*/
diff --git a/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java b/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java
index f461b967..f46ff0c8 100644
--- a/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java
+++ b/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java
@@ -73,16 +73,15 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
/**
* Construct object from file stream.
* @param file Input stream
- * @throws IOException
- * @throws ClassFormatException
+ * @throws IOException if an I/O error occurs.
*/
- protected FieldOrMethod(final DataInput file, final ConstantPool constant_pool) throws IOException, ClassFormatException {
+ protected FieldOrMethod(final DataInput file, final ConstantPool constantPool) throws IOException {
this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), null,
- constant_pool);
+ constantPool);
final int attributes_count = file.readUnsignedShort();
attributes = new Attribute[attributes_count];
for (int i = 0; i < attributes_count; i++) {
- attributes[i] = Attribute.readAttribute(file, constant_pool);
+ attributes[i] = Attribute.readAttribute(file, constantPool);
}
this.attributes_count = attributes_count; // init deprecated field
}
@@ -91,14 +90,12 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
/**
* Construct object from file stream.
* @param file Input stream
- * @throws IOException
- * @throws ClassFormatException
+ * @throws IOException if an I/O error occurs.
* @deprecated (6.0) Use {@link #FieldOrMethod(java.io.DataInput, ConstantPool)} instead.
*/
@java.lang.Deprecated
- protected FieldOrMethod(final DataInputStream file, final ConstantPool constant_pool) throws IOException,
- ClassFormatException {
- this((DataInput) file, constant_pool);
+ protected FieldOrMethod(final DataInputStream file, final ConstantPool constantPool) throws IOException {
+ this((DataInput) file, constantPool);
}
/**
@@ -131,17 +128,17 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
/**
* @return deep copy of this field
*/
- protected FieldOrMethod copy_( final ConstantPool _constant_pool ) {
+ protected FieldOrMethod copy_(final ConstantPool constantPool) {
FieldOrMethod c = null;
try {
- c = (FieldOrMethod)clone();
- } catch(final CloneNotSupportedException e) {
+ c = (FieldOrMethod) clone();
+ } catch (final CloneNotSupportedException e) {
// ignored, but will cause NPE ...
}
- c.constant_pool = constant_pool;
- c.attributes = new Attribute[attributes.length];
+ c.constant_pool = constant_pool;
+ c.attributes = new Attribute[attributes.length];
c.attributes_count = attributes_count; // init deprecated field
for (int i = 0; i < attributes.length; i++) {
@@ -156,7 +153,7 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
* Dump object to file stream on binary format.
*
* @param file Output file stream
- * @throws IOException
+ * @throws IOException if an I/O error occurs.
*/
public final void dump(final DataOutputStream file) throws IOException {
file.writeShort(super.getAccessFlags());
diff --git a/src/main/java/org/apache/bcel/generic/ClassGen.java b/src/main/java/org/apache/bcel/generic/ClassGen.java
index 61b0cd09..1a41f596 100644
--- a/src/main/java/org/apache/bcel/generic/ClassGen.java
+++ b/src/main/java/org/apache/bcel/generic/ClassGen.java
@@ -565,34 +565,24 @@ public class ClassGen extends AccessFlags implements Cloneable {
/**
* Look for attributes representing annotations and unpack them.
*/
- private AnnotationEntryGen[] unpackAnnotations(final Attribute[] attrs)
- {
+ private AnnotationEntryGen[] unpackAnnotations(final Attribute[] attrs) {
final List<AnnotationEntryGen> annotationGenObjs = new ArrayList<>();
for (final Attribute attr : attrs) {
- if (attr instanceof RuntimeVisibleAnnotations)
- {
+ if (attr instanceof RuntimeVisibleAnnotations) {
final RuntimeVisibleAnnotations rva = (RuntimeVisibleAnnotations) attr;
- final AnnotationEntry[] annos = rva.getAnnotationEntries();
- for (final AnnotationEntry a : annos) {
- annotationGenObjs.add(new AnnotationEntryGen(a,
- getConstantPool(), false));
+ for (final AnnotationEntry a : rva.getAnnotationEntries()) {
+ annotationGenObjs.add(new AnnotationEntryGen(a, getConstantPool(), false));
}
- }
- else
- if (attr instanceof RuntimeInvisibleAnnotations)
- {
- final RuntimeInvisibleAnnotations ria = (RuntimeInvisibleAnnotations) attr;
- final AnnotationEntry[] annos = ria.getAnnotationEntries();
- for (final AnnotationEntry a : annos) {
- annotationGenObjs.add(new AnnotationEntryGen(a,
- getConstantPool(), false));
- }
+ } else if (attr instanceof RuntimeInvisibleAnnotations) {
+ final RuntimeInvisibleAnnotations ria = (RuntimeInvisibleAnnotations) attr;
+ for (final AnnotationEntry a : ria.getAnnotationEntries()) {
+ annotationGenObjs.add(new AnnotationEntryGen(a, getConstantPool(), false));
}
+ }
}
return annotationGenObjs.toArray(AnnotationEntryGen.EMPTY_ARRAY);
}
-
/** Call notify() method on all observers. This method is not called
* automatically whenever the state has changed, but has to be
* called by the user after they have finished editing the object.
diff --git a/src/main/java/org/apache/bcel/generic/FieldGen.java b/src/main/java/org/apache/bcel/generic/FieldGen.java
index 64c0afa6..25acbf9a 100644
--- a/src/main/java/org/apache/bcel/generic/FieldGen.java
+++ b/src/main/java/org/apache/bcel/generic/FieldGen.java
@@ -20,6 +20,7 @@ package org.apache.bcel.generic;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Stream;
import org.apache.bcel.Const;
import org.apache.bcel.classfile.AnnotationEntry;
@@ -94,10 +95,9 @@ public class FieldGen extends FieldGenOrMethodGen {
if (attr instanceof ConstantValue) {
setValue(((ConstantValue) attr).getConstantValueIndex());
} else if (attr instanceof Annotations) {
- final Annotations runtimeAnnotations = (Annotations)attr;
- final AnnotationEntry[] annotationEntries = runtimeAnnotations.getAnnotationEntries();
- for (final AnnotationEntry element : annotationEntries) {
- addAnnotationEntry(new AnnotationEntryGen(element,cp,false));
+ final Annotations runtimeAnnotations = (Annotations) attr;
+ for (final AnnotationEntry element : runtimeAnnotations.getAnnotationEntries()) {
+ addAnnotationEntry(new AnnotationEntryGen(element, cp, false));
}
} else {
addAttribute(attr);
@@ -125,11 +125,8 @@ public class FieldGen extends FieldGenOrMethodGen {
private void addAnnotationsAsAttribute(final ConstantPoolGen cp) {
- final Attribute[] attrs = AnnotationEntryGen.getAnnotationAttributes(cp, super.getAnnotationEntries());
- for (final Attribute attr : attrs) {
- addAttribute(attr);
- }
- }
+ Stream.of(AnnotationEntryGen.getAnnotationAttributes(cp, super.getAnnotationEntries())).forEach(this::addAttribute);
+ }
private int addConstant() {