< prev index next >
src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/FieldGenOrMethodGen.java
Print this page
@@ -1,8 +1,7 @@
/*
- * 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
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
@@ -16,87 +15,154 @@
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* 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 com.sun.org.apache.bcel.internal.classfile.*;
import java.util.ArrayList;
+import java.util.List;
+
+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 {
- protected FieldGenOrMethodGen() {}
+ private String name;
+ private Type type;
+ private ConstantPoolGen cp;
- public void setType(Type type) {
- if(type.getType() == Constants.T_ADDRESS)
- throw new IllegalArgumentException("Type can not be " + type);
+ private final List<Attribute> attribute_vec = new ArrayList<>();
+
+ // @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);
+ }
+ @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;
}
- public Type getType() { return type; }
- /** @return name of method/field.
+ @Override
+ public Type getType() {
+ return type;
+ }
+
+ /**
+ * @return name of method/field.
*/
- public String getName() { return name; }
- public void setName(String name) { this.name = name; }
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(final String name) { // TODO could be package-protected?
+ this.name = name;
+ }
+
+ public ConstantPoolGen getConstantPool() {
+ return cp;
+ }
- public ConstantPoolGen getConstantPool() { return cp; }
- public void setConstantPool(ConstantPoolGen cp) { this.cp = 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.
+ * 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); }
+ public void addAttribute(final Attribute a) {
+ attribute_vec.add(a);
+ }
+
+ /**
+ * @since 6.0
+ */
+ protected void addAnnotationEntry(final AnnotationEntryGen ag) // TODO could this be package protected?
+ {
+ annotation_vec.add(ag);
+ }
/**
* Remove an attribute.
*/
- public void removeAttribute(Attribute a) { attribute_vec.remove(a); }
+ 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);
+ }
/**
* Remove all attributes.
*/
- public void removeAttributes() { attribute_vec.clear(); }
+ public void removeAttributes() {
+ attribute_vec.clear();
+ }
+
+ /**
+ * @since 6.0
+ */
+ protected void removeAnnotationEntries() // TODO could this be package protected?
+ {
+ annotation_vec.clear();
+ }
/**
* @return all attributes of this method.
*/
public Attribute[] getAttributes() {
- Attribute[] attributes = new Attribute[attribute_vec.size()];
+ final Attribute[] attributes = new Attribute[attribute_vec.size()];
attribute_vec.toArray(attributes);
return attributes;
}
- /** @return signature of method/field.
+ public AnnotationEntryGen[] getAnnotationEntries() {
+ final AnnotationEntryGen[] annotations = new AnnotationEntryGen[annotation_vec.size()];
+ annotation_vec.toArray(annotations);
+ return annotations;
+ }
+
+ /**
+ * @return signature of method/field.
*/
public abstract String getSignature();
+ @Override
public Object clone() {
try {
return super.clone();
- } catch(CloneNotSupportedException e) {
- System.err.println(e);
- return null;
+ } catch (final CloneNotSupportedException e) {
+ throw new Error("Clone Not Supported"); // never happens
}
}
}
< prev index next >