< prev index next >

src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/FieldGenOrMethodGen.java

Print this page

        

*** 1,8 **** /* ! * reserved comment block ! * DO NOT REMOVE OR ALTER! */ /* * 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. --- 1,7 ---- /* ! * 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,102 **** * 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; /** ! * 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> */ ! public abstract class FieldGenOrMethodGen extends AccessFlags ! implements NamedAndTyped, Cloneable ! { ! protected String name; ! protected Type type; ! protected ConstantPoolGen cp; ! private ArrayList attribute_vec = new ArrayList(); ! protected FieldGenOrMethodGen() {} ! public void setType(Type type) { ! if(type.getType() == Constants.T_ADDRESS) ! throw new IllegalArgumentException("Type can not be " + type); this.type = type; } - public Type getType() { return type; } ! /** @return name of method/field. */ ! public String getName() { return name; } ! public void setName(String name) { this.name = name; } ! public ConstantPoolGen getConstantPool() { return cp; } ! public void setConstantPool(ConstantPoolGen cp) { 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); } /** * Remove an attribute. */ ! public void removeAttribute(Attribute a) { attribute_vec.remove(a); } /** * Remove all attributes. */ ! public void removeAttributes() { attribute_vec.clear(); } /** * @return all attributes of this method. */ public Attribute[] getAttributes() { ! Attribute[] attributes = new Attribute[attribute_vec.size()]; attribute_vec.toArray(attributes); return attributes; } ! /** @return signature of method/field. */ public abstract String getSignature(); public Object clone() { try { return super.clone(); ! } catch(CloneNotSupportedException e) { ! System.err.println(e); ! return null; } } } --- 15,168 ---- * 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 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! * ! * @version $Id: FieldGenOrMethodGen.java 1749603 2016-06-21 20:50:19Z ggregory ! * $ */ ! 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<>(); ! ! // @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; } ! @Override ! public Type getType() { ! return type; ! } ! ! /** ! * @return name of method/field. */ ! @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 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(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(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(); ! } ! ! /** ! * @since 6.0 ! */ ! protected void removeAnnotationEntries() // TODO could this be package protected? ! { ! annotation_vec.clear(); ! } /** * @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; ! } ! ! /** ! * @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 } } }
< prev index next >