jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/FieldGenOrMethodGen.java
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/FieldGenOrMethodGen.java Tue Aug 08 22:52:41 2017 +0000
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/FieldGenOrMethodGen.java Sun Aug 13 21:10:40 2017 -0700
@@ -1,6 +1,5 @@
/*
- * reserved comment block
- * DO NOT REMOVE OR ALTER!
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -18,85 +17,152 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.sun.org.apache.bcel.internal.generic;
-import com.sun.org.apache.bcel.internal.Constants;
+import java.util.ArrayList;
+import java.util.List;
-import com.sun.org.apache.bcel.internal.classfile.*;
-import java.util.ArrayList;
+import com.sun.org.apache.bcel.internal.Const;
+import com.sun.org.apache.bcel.internal.classfile.AccessFlags;
+import com.sun.org.apache.bcel.internal.classfile.Attribute;
/**
- * Super class for FieldGen and MethodGen objects, since they have
- * some methods in common!
+ * Super class for FieldGen and MethodGen objects, since they have some methods
+ * in common!
*
- * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
+ * @version $Id: FieldGenOrMethodGen.java 1749603 2016-06-21 20:50:19Z ggregory
+ * $
*/
-public abstract class FieldGenOrMethodGen extends AccessFlags
- implements NamedAndTyped, Cloneable
-{
- protected String name;
- protected Type type;
- protected ConstantPoolGen cp;
- private ArrayList attribute_vec = new ArrayList();
+public abstract class FieldGenOrMethodGen extends AccessFlags implements NamedAndTyped, Cloneable {
+
+ private String name;
+ private Type type;
+ private ConstantPoolGen cp;
+
+ private final List<Attribute> attribute_vec = new ArrayList<>();
- protected FieldGenOrMethodGen() {}
+ // @since 6.0
+ private final List<AnnotationEntryGen> annotation_vec = new ArrayList<>();
+
+ protected FieldGenOrMethodGen() {
+ }
+
+ /**
+ * @since 6.0
+ */
+ protected FieldGenOrMethodGen(final int access_flags) { // TODO could this be package protected?
+ super(access_flags);
+ }
- public void setType(Type type) {
- if(type.getType() == Constants.T_ADDRESS)
- throw new IllegalArgumentException("Type can not be " + type);
+ @Override
+ public void setType(final Type type) { // TODO could be package-protected?
+ if (type.getType() == Const.T_ADDRESS) {
+ throw new IllegalArgumentException("Type can not be " + type);
+ }
+ this.type = type;
+ }
- this.type = type;
- }
- public Type getType() { return type; }
+ @Override
+ public Type getType() {
+ return type;
+ }
- /** @return name of method/field.
- */
- public String getName() { return name; }
- public void setName(String name) { this.name = name; }
+ /**
+ * @return name of method/field.
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
- public ConstantPoolGen getConstantPool() { return cp; }
- public void setConstantPool(ConstantPoolGen cp) { this.cp = cp; }
+ @Override
+ public void setName(final String name) { // TODO could be package-protected?
+ this.name = name;
+ }
+
+ public ConstantPoolGen getConstantPool() {
+ return cp;
+ }
+
+ public void setConstantPool(final ConstantPoolGen cp) { // TODO could be package-protected?
+ this.cp = cp;
+ }
- /**
- * Add an attribute to this method. Currently, the JVM knows about
- * the `Code', `ConstantValue', `Synthetic' and `Exceptions'
- * attributes. Other attributes will be ignored by the JVM but do no
- * harm.
- *
- * @param a attribute to be added
- */
- public void addAttribute(Attribute a) { attribute_vec.add(a); }
+ /**
+ * Add an attribute to this method. Currently, the JVM knows about the
+ * `Code', `ConstantValue', `Synthetic' and `Exceptions' attributes. Other
+ * attributes will be ignored by the JVM but do no harm.
+ *
+ * @param a attribute to be added
+ */
+ public void addAttribute(final Attribute a) {
+ attribute_vec.add(a);
+ }
- /**
- * Remove an attribute.
- */
- public void removeAttribute(Attribute a) { attribute_vec.remove(a); }
+ /**
+ * @since 6.0
+ */
+ protected void addAnnotationEntry(final AnnotationEntryGen ag) // TODO could this be package protected?
+ {
+ annotation_vec.add(ag);
+ }
- /**
- * Remove all attributes.
- */
- public void removeAttributes() { attribute_vec.clear(); }
+ /**
+ * Remove an attribute.
+ */
+ public void removeAttribute(final Attribute a) {
+ attribute_vec.remove(a);
+ }
+
+ /**
+ * @since 6.0
+ */
+ protected void removeAnnotationEntry(final AnnotationEntryGen ag) // TODO could this be package protected?
+ {
+ annotation_vec.remove(ag);
+ }
- /**
- * @return all attributes of this method.
- */
- public Attribute[] getAttributes() {
- Attribute[] attributes = new Attribute[attribute_vec.size()];
- attribute_vec.toArray(attributes);
- return attributes;
- }
+ /**
+ * Remove all attributes.
+ */
+ public void removeAttributes() {
+ attribute_vec.clear();
+ }
+
+ /**
+ * @since 6.0
+ */
+ protected void removeAnnotationEntries() // TODO could this be package protected?
+ {
+ annotation_vec.clear();
+ }
- /** @return signature of method/field.
- */
- public abstract String getSignature();
+ /**
+ * @return all attributes of this method.
+ */
+ public Attribute[] getAttributes() {
+ final Attribute[] attributes = new Attribute[attribute_vec.size()];
+ attribute_vec.toArray(attributes);
+ return attributes;
+ }
+
+ public AnnotationEntryGen[] getAnnotationEntries() {
+ final AnnotationEntryGen[] annotations = new AnnotationEntryGen[annotation_vec.size()];
+ annotation_vec.toArray(annotations);
+ return annotations;
+ }
- public Object clone() {
- try {
- return super.clone();
- } catch(CloneNotSupportedException e) {
- System.err.println(e);
- return null;
+ /**
+ * @return signature of method/field.
+ */
+ public abstract String getSignature();
+
+ @Override
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch (final CloneNotSupportedException e) {
+ throw new Error("Clone Not Supported"); // never happens
+ }
}
- }
}