Top Description Fields Constructors Methods
org.apache.derby.impl.services.bytecode

pack-priv Class BCClass

extends GClass
Class Inheritance
Imports
java.io.IOException, java.lang.reflect.Modifier, org.apache.derby.shared.common.error.StandardException, org.apache.derby.shared.common.reference.Property, .SQLState, org.apache.derby.iapi.services.classfile.ClassFormatOutput, .ClassHolder, .ClassMember, org.apache.derby.iapi.services.compiler.LocalField, .MethodBuilder, org.apache.derby.iapi.services.loader.ClassFactory, org.apache.derby.shared.common.sanity.SanityManager, org.apache.derby.iapi.util.ByteArray

ClassBuilder is used to construct a java class's byte array representation. Limitations: No checking for language use violations such as invalid modifiers or duplicate field names. All classes must have a superclass; java.lang.Object must be supplied if there is no superclass.

When a class is first created, it has:

MethodBuilder implementations are required to supply a way for Generators to give them code. Most typically, they may have a stream to which the Generator writes the code that is of the type to satisfy what the Generator is writing.

BCClass is a ClassBuilder implementation for generating java bytecode directly.

Field Summary

Modifier and TypeField and Description
protected ClassHolder
pack-priv final Type
pack-priv BCJava
pack-priv String
limitMsg

Simple text indicating any limits execeeded while generating the class file.

protected String
protected String
Inherited from org.apache.derby.impl.services.bytecode.GClass:
bytecodecfqualifiedName

Constructor Summary

AccessConstructor and Description
pack-priv
BCClass(ClassFactory cf, String packageName, int classModifiers, String className, String superClassName, BCJava factory)

Method Summary

Modifier and TypeMethod and Description
public LocalField
addField(String
The type of the field in java language.
javaType
,
String
The name of the field.
name
,
int
The | of the modifier values such as public, static, etc.
modifiers
)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.addField.

add a field to this class.

pack-priv void
addLimitExceeded(BCMethod mb, String limitName, int limit, int value)

Add the fact that some class limit was exceeded while generating the class.

pack-priv void
addLimitExceeded(String
Text to be reported.
rawText
)

Add the fact that some class limit was exceeded while generating the class.

public ByteArray
getClassBytecode()

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.getClassBytecode.

At the time the class is completed and bytecode generated, if there are no constructors then the default no-arg constructor will be defined.

pack-priv ClassFactory
public String
pack-priv String
pack-priv ClassHolder
modify()

Let those that need to get to the classModify tool to alter the class definition.

public MethodBuilder

Returns:

the method builder for the constructor.
newConstructorBuilder
(int
the | of the Modifiers constants representing the visibility and control of this method.
modifiers
)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.newConstructorBuilder.

a constructor.</verbatim>

public MethodBuilder

Returns:

the method builder.
newMethodBuilder
(int
the | of the Modifiers constants representing the visibility and control of this method.
modifiers
,
String
the return type of the method as its Java language type name.
returnType
,
String
the name of the method.
methodName
)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.newMethodBuilder.

a method.</verbatim>

public MethodBuilder

Returns:

the method builder.
newMethodBuilder
(int
the | of the Modifiers constants representing the visibility and control of this method.
modifiers
,
String
the return type of the method as its Java language type name.
returnType
,
String
the name of the method.
methodName
,
String[]
an array of ParameterDeclarations representing the method's parameters
parms
)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.newMethodBuilder.

a method with parameters.</verbatim>

Inherited from org.apache.derby.impl.services.bytecode.GClass:
getFullNamegetGeneratedClassvalidateTypewriteClassFile

Field Detail

classHoldback to summary
protected ClassHolder classHold
classTypeback to summary
pack-priv final Type classType
factoryback to summary
pack-priv BCJava factory
limitMsgback to summary
pack-priv String limitMsg

Simple text indicating any limits execeeded while generating the class file.

nameback to summary
protected String name
superClassNameback to summary
protected String superClassName

Constructor Detail

BCClassback to summary
pack-priv BCClass(ClassFactory cf, String packageName, int classModifiers, String className, String superClassName, BCJava factory)

Method Detail

addFieldback to summary
public LocalField addField(String javaType, String name, int modifiers)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.addField.

add a field to this class. Fields cannot be initialized here, they must be initialized in the static initializer code (static fields) or in the constructors.

static fields also added to this list, with the modifier set appropriately.

Parameters
javaType:String

Doc from org.apache.derby.iapi.services.compiler.ClassBuilder.addField.

The type of the field in java language.

name:String

Doc from org.apache.derby.iapi.services.compiler.ClassBuilder.addField.

The name of the field.

modifiers:int

Doc from org.apache.derby.iapi.services.compiler.ClassBuilder.addField.

The | of the modifier values such as public, static, etc.

addLimitExceededback to summary
pack-priv void addLimitExceeded(BCMethod mb, String limitName, int limit, int value)

Add the fact that some class limit was exceeded while generating the class. We create a set of them and report at the end, this allows the generated class file to still be dumped.

addLimitExceededback to summary
pack-priv void addLimitExceeded(String rawText)

Add the fact that some class limit was exceeded while generating the class. Text is the simple string passed in.

Parameters
rawText:String

Text to be reported.

See Also
BCClass#addLimitExceeded(BCMethod, String, int, int)
getClassBytecodeback to summary
public ByteArray getClassBytecode() throws StandardException

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.getClassBytecode.

At the time the class is completed and bytecode generated, if there are no constructors then the default no-arg constructor will be defined.

getClassFactoryback to summary
pack-priv ClassFactory getClassFactory()
getNameback to summary
public String getName()

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.getName.

the class's unqualified name

getSuperClassNameback to summary
pack-priv String getSuperClassName()
modifyback to summary
pack-priv ClassHolder modify()

Let those that need to get to the classModify tool to alter the class definition.

newConstructorBuilderback to summary
public MethodBuilder newConstructorBuilder(int modifiers)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.newConstructorBuilder.

a constructor. Once it is created, thrown exceptions, statements, and local variable declarations must be added to it. It is put into its defining class when it is created. Java: #modifiers #className() {} // modifiers is the | of the JVM constants for // the modifiers such as static, public, etc. // className is taken from definingClass.getName()

This is used to start a constructor as well; pass in null for the returnType when used in that manner.

See Modifiers

Parameters
modifiers:int

the | of the Modifiers constants representing the visibility and control of this method.

Returns:MethodBuilder

the method builder for the constructor.

newMethodBuilderback to summary
public MethodBuilder newMethodBuilder(int modifiers, String returnType, String methodName)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.newMethodBuilder.

a method. Once it is created, thrown exceptions, statements, and local variable declarations must be added to it. It is put into its defining class when it is created. Java: #modifiers #returnType #methodName() {} // modifiers is the | of the JVM constants for // the modifiers such as static, public, etc.

This is used to start a constructor as well; pass in null for the returnType when used in that manner. See java.lang.reflect.Modifiers

Parameters
modifiers:int

the | of the Modifiers constants representing the visibility and control of this method.

returnType:String

the return type of the method as its Java language type name.

methodName:String

the name of the method.

Returns:MethodBuilder

the method builder.

newMethodBuilderback to summary
public MethodBuilder newMethodBuilder(int modifiers, String returnType, String methodName, String[] parms)

Implements org.apache.derby.iapi.services.compiler.ClassBuilder.newMethodBuilder.

a method with parameters. Once it is created, thrown exceptions, statements, and local variable declarations must be added to it. It is put into its defining class when it is created. Java: #modifiers #returnType #methodName() {} // modifiers is the | of the JVM constants for // the modifiers such as static, public, etc.

This is used to start a constructor as well; pass in null for the returnType when used in that manner. See java.lang.reflect.Modifiers

Parameters
modifiers:int

the | of the Modifiers constants representing the visibility and control of this method.

returnType:String

the return type of the method as its Java language type name.

methodName:String

the name of the method.

parms:String[]

an array of ParameterDeclarations representing the method's parameters

Returns:MethodBuilder

the method builder.