de.fub.bytecode.generic
Class ClassGen

java.lang.Object
  |
  +--de.fub.bytecode.classfile.AccessFlags
        |
        +--de.fub.bytecode.generic.ClassGen
All Implemented Interfaces:
java.lang.Cloneable

public class ClassGen
extends AccessFlags
implements java.lang.Cloneable

Template class for building up a java class. May be initialized with an existing java class (file).

Version:
$Id: ClassGen.java,v 1.11 2001/05/15 15:22:10 pcbeard Exp $
Author:
M. Dahm
See Also:
JavaClass

Fields inherited from class de.fub.bytecode.classfile.AccessFlags
access_flags
 
Constructor Summary
ClassGen(JavaClass clazz)
          Initialize with existing class.
ClassGen(java.lang.String class_name, java.lang.String super_class_name, java.lang.String file_name, int access_flags, java.lang.String[] interfaces)
          Convenience constructor to set up some important values initially.
 
Method Summary
 void addAttribute(Attribute a)
          Add an attribute to this class.
 void addEmptyConstructor(int access_flags)
          Convenience method.
 void addField(Field f)
          Add a field to this class.
 void addInterface(java.lang.String name)
          Add an interface to this class, i.e., this class has to implement it.
 void addMethod(Method m)
          Add a method to this class.
 void addObserver(ClassObserver o)
          Add observer for this object.
 java.lang.Object clone()
           
 boolean containsField(Field f)
           
 Field containsField(java.lang.String name)
           
 Method containsMethod(java.lang.String name, java.lang.String signature)
           
 Attribute[] getAttributes()
           
 java.lang.String getClassName()
           
 int getClassNameIndex()
           
 ConstantPoolGen getConstantPool()
           
 Field[] getFields()
           
 java.lang.String getFileName()
           
 java.lang.String[] getInterfaceNames()
           
 int[] getInterfaces()
           
 JavaClass getJavaClass()
           
 int getMajor()
           
 Method getMethodAt(int pos)
           
 Method[] getMethods()
           
 int getMinor()
           
 java.lang.String getSuperclassName()
           
 int getSuperclassNameIndex()
           
 void removeAttribute(Attribute a)
          Remove an attribute from this class.
 void removeField(Field f)
          Remove a field to this class.
 void removeInterface(java.lang.String name)
          Remove an interface from this class.
 void removeMethod(Method m)
          Remove a method from this class.
 void removeObserver(ClassObserver o)
          Remove observer for this object.
 void replaceField(Field old, Field new_)
          Replace given field with new one.
 void replaceMethod(Method old, Method new_)
          Replace given method with new one.
 void setClassName(java.lang.String name)
           
 void setClassNameIndex(int class_name_index)
           
 void setConstantPool(ConstantPoolGen constant_pool)
           
 void setMajor(int major)
          Set major version number of class file, default value is 45 (JDK 1.1)
 void setMethodAt(Method method, int pos)
           
 void setMethods(Method[] methods)
           
 void setMinor(int minor)
          Set minor version number of class file, default value is 3 (JDK 1.1)
 void setSuperclassName(java.lang.String name)
           
 void setSuperclassNameIndex(int superclass_name_index)
           
 void update()
          Call notify() method on all observers.
 
Methods inherited from class de.fub.bytecode.classfile.AccessFlags
getAccessFlags, isAbstract, isAbstract, isFinal, isFinal, isInterface, isInterface, isNative, isNative, isPrivate, isPrivate, isProtected, isProtected, isPublic, isPublic, isStatic, isStatic, isStrictfp, isStrictfp, isSynchronized, isSynchronized, isTransient, isTransient, isVolatile, isVolatile, setAccessFlags
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassGen

public ClassGen(java.lang.String class_name,
                java.lang.String super_class_name,
                java.lang.String file_name,
                int access_flags,
                java.lang.String[] interfaces)
Convenience constructor to set up some important values initially.
Parameters:
class_name - fully qualified class name
super_class_name - fully qualified superclass name
file_name - source file name
access_flags - access qualifiers
interfaces - implemented interfaces

ClassGen

public ClassGen(JavaClass clazz)
Initialize with existing class.
Parameters:
clazz - JavaClass object (e.g. read from file)
Method Detail

getJavaClass

public JavaClass getJavaClass()
Returns:
the (finally) built up Java class object.

addInterface

public void addInterface(java.lang.String name)
Add an interface to this class, i.e., this class has to implement it.
Parameters:
name - interface to implement (fully qualified class name)

removeInterface

public void removeInterface(java.lang.String name)
Remove an interface from this class.
Parameters:
name - interface to remove (fully qualified name)

getMajor

public int getMajor()
Returns:
major version number of class file

setMajor

public void setMajor(int major)
Set major version number of class file, default value is 45 (JDK 1.1)
Parameters:
major - major version number

setMinor

public void setMinor(int minor)
Set minor version number of class file, default value is 3 (JDK 1.1)
Parameters:
minor - minor version number

getMinor

public int getMinor()
Returns:
minor version number of class file

addAttribute

public void addAttribute(Attribute a)
Add an attribute to this class.
Parameters:
a - attribute to add

addMethod

public void addMethod(Method m)
Add a method to this class.
Parameters:
m - method to add

addEmptyConstructor

public void addEmptyConstructor(int access_flags)
Convenience method. Add an empty constructor to this class that does nothing but calling super().
Parameters:
access - rights for constructor

addField

public void addField(Field f)
Add a field to this class.
Parameters:
f - field to add

containsField

public boolean containsField(Field f)

containsField

public Field containsField(java.lang.String name)
Returns:
field object with given name, or null

containsMethod

public Method containsMethod(java.lang.String name,
                             java.lang.String signature)
Returns:
method object with given name and signature, or null

removeAttribute

public void removeAttribute(Attribute a)
Remove an attribute from this class.
Parameters:
a - attribute to remove

removeMethod

public void removeMethod(Method m)
Remove a method from this class.
Parameters:
m - method to remove

replaceMethod

public void replaceMethod(Method old,
                          Method new_)
Replace given method with new one. If the old one does not exist add the new_ method to the class anyway.

replaceField

public void replaceField(Field old,
                         Field new_)
Replace given field with new one. If the old one does not exist add the new_ field to the class anyway.

removeField

public void removeField(Field f)
Remove a field to this class.
Parameters:
f - field to remove

getClassName

public java.lang.String getClassName()

getSuperclassName

public java.lang.String getSuperclassName()

getFileName

public java.lang.String getFileName()

setClassName

public void setClassName(java.lang.String name)

setSuperclassName

public void setSuperclassName(java.lang.String name)

getMethods

public Method[] getMethods()

setMethods

public void setMethods(Method[] methods)

setMethodAt

public void setMethodAt(Method method,
                        int pos)

getMethodAt

public Method getMethodAt(int pos)

getInterfaceNames

public java.lang.String[] getInterfaceNames()

getInterfaces

public int[] getInterfaces()

getFields

public Field[] getFields()

getAttributes

public Attribute[] getAttributes()

getConstantPool

public ConstantPoolGen getConstantPool()

setConstantPool

public void setConstantPool(ConstantPoolGen constant_pool)

setClassNameIndex

public void setClassNameIndex(int class_name_index)

setSuperclassNameIndex

public void setSuperclassNameIndex(int superclass_name_index)

getSuperclassNameIndex

public int getSuperclassNameIndex()

getClassNameIndex

public int getClassNameIndex()

addObserver

public void addObserver(ClassObserver o)
Add observer for this object.

removeObserver

public void removeObserver(ClassObserver o)
Remove observer for this object.

update

public void update()
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 he has finished editing the object.

clone

public java.lang.Object clone()
Overrides:
clone in class java.lang.Object