org.aspectj.asm.internal
Class ProgramElement

java.lang.Object
  extended by org.aspectj.asm.internal.ProgramElement
All Implemented Interfaces:
java.io.Serializable, IProgramElement

public class ProgramElement
extends java.lang.Object
implements IProgramElement

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.aspectj.asm.IProgramElement
IProgramElement.Accessibility, IProgramElement.ExtraInformation, IProgramElement.Kind, IProgramElement.Modifiers
 
Field Summary
 AsmManager asm
           
protected  java.util.List<IProgramElement> children
           
 java.util.Map<java.lang.String,java.lang.Object> kvpairs
           
 int modifiers
           
protected  java.lang.String name
           
protected  IProgramElement parent
           
static boolean shortITDNames
           
protected  ISourceLocation sourceLocation
           
 
Constructor Summary
ProgramElement()
          Used during deserialization
ProgramElement(AsmManager asm, java.lang.String name, IProgramElement.Kind kind, ISourceLocation sourceLocation, int modifiers, java.lang.String comment, java.util.List<IProgramElement> children)
           
ProgramElement(AsmManager asm, java.lang.String name, IProgramElement.Kind kind, java.util.List<IProgramElement> children)
          Use to create program element nodes that do not correspond to source locations
 
Method Summary
 void addChild(int position, IProgramElement child)
           
 void addChild(IProgramElement child)
           
 void addFullyQualifiedName(java.lang.String fqname)
           
 void addModifiers(IProgramElement.Modifiers newModifier)
          Convenience mechanism for setting new modifiers which do not require knowledge of the private internal representation
static IProgramElement.Accessibility genAccessibility(int modifiers)
           
 IProgramElement.Accessibility getAccessibility()
           
 java.lang.String getAnnotationType()
           
 java.lang.String getBytecodeName()
           
 java.lang.String getBytecodeSignature()
           
 java.util.List<IProgramElement> getChildren()
           
 java.lang.String getCorrespondingType()
          This correponds to both method return types and field types.
 java.lang.String getCorrespondingType(boolean getFullyQualifiedType)
           
 java.lang.String getCorrespondingTypeSignature()
           
 java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDeclareParentsMap()
           
 java.lang.String getDeclaringType()
           
 java.lang.String getDetails()
           
 IProgramElement.ExtraInformation getExtraInfo()
           
 java.lang.String getFormalComment()
           
 java.lang.String getFullyQualifiedName()
           
 java.lang.String getHandleIdentifier()
          The format of the string handle is not specified, but is stable across compilation sessions.
 java.lang.String getHandleIdentifier(boolean create)
           
 IProgramElement.Kind getKind()
           
 IMessage getMessage()
           
 AsmManager getModel()
           
 java.util.List<IProgramElement.Modifiers> getModifiers()
           
 java.lang.String getName()
           
 java.lang.String getPackageName()
           
 java.util.List<java.lang.String> getParameterNames()
           
 java.util.List<char[]> getParameterSignatures()
           
 java.util.List<java.lang.String> getParameterSignaturesSourceRefs()
           
 java.util.List<char[]> getParameterTypes()
           
 IProgramElement getParent()
           
 java.util.List<java.lang.String> getParentTypes()
           
 int getRawModifiers()
           
 java.lang.String[] getRemovedAnnotationTypes()
           
 ISourceLocation getSourceLocation()
           
 java.lang.String getSourceSignature()
           
 boolean isAnnotationRemover()
           
 boolean isAnnotationStyleDeclaration()
           
 boolean isCode()
           
 boolean isImplementor()
           
 boolean isMemberKind()
           
 boolean isOverrider()
           
 boolean isRunnable()
           
static java.lang.String nameToSignature(java.lang.String name)
           
 boolean removeChild(IProgramElement child)
           
 void setAnnotationRemover(boolean isRemover)
           
 void setAnnotationStyleDeclaration(boolean b)
           
 void setAnnotationType(java.lang.String fullyQualifiedAnnotationType)
          
 void setBytecodeName(java.lang.String s)
           
 void setBytecodeSignature(java.lang.String s)
           
 void setChildren(java.util.List<IProgramElement> children)
           
 void setCorrespondingType(java.lang.String s)
           
 void setDeclareParentsMap(java.util.Map<java.lang.String,java.util.List<java.lang.String>> newmap)
           
 void setDeclaringType(java.lang.String t)
           
 void setDetails(java.lang.String string)
           
 void setExtraInfo(IProgramElement.ExtraInformation info)
           
 void setFormalComment(java.lang.String txt)
           
 void setHandleIdentifier(java.lang.String handle)
           
 void setImplementor(boolean value)
           
 void setKind(IProgramElement.Kind kind)
           
 void setMessage(IMessage message)
           
 void setModifiers(int i)
           
 void setName(java.lang.String string)
           
 void setOverrider(boolean value)
           
 void setParameterNames(java.util.List<java.lang.String> list)
           
 void setParameterSignatures(java.util.List<char[]> list, java.util.List<java.lang.String> sourceRefs)
          Set the parameter signatures for this method/constructor.
 void setParent(IProgramElement parent)
           
 void setParentTypes(java.util.List<java.lang.String> ps)
           
 void setRunnable(boolean value)
           
 void setSourceLocation(ISourceLocation sourceLocation)
           
 void setSourceSignature(java.lang.String string)
           
 java.lang.String toLabelString()
          Includes name, parameter types (if any) and details (if any).
 java.lang.String toLabelString(boolean getFullyQualifiedArgTypes)
           
 java.lang.String toLinkLabelString()
          TODO: move the "parent != null"==>injar heuristic to more explicit
 java.lang.String toLinkLabelString(boolean getFullyQualifiedArgTypes)
           
 java.lang.String toLongString()
           
 java.lang.String toSignatureString()
           
 java.lang.String toSignatureString(boolean getFullyQualifiedArgTypes)
           
 java.lang.String toString()
           
static java.lang.String trim(java.lang.String fqname)
          Trim down fully qualified types to their short form (e.g.
 IProgramElement walk(HierarchyWalker walker)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

asm

public transient AsmManager asm

shortITDNames

public static boolean shortITDNames

name

protected java.lang.String name

parent

protected IProgramElement parent

children

protected java.util.List<IProgramElement> children

kvpairs

public java.util.Map<java.lang.String,java.lang.Object> kvpairs

sourceLocation

protected ISourceLocation sourceLocation

modifiers

public int modifiers
Constructor Detail

ProgramElement

public ProgramElement()
Used during deserialization


ProgramElement

public ProgramElement(AsmManager asm,
                      java.lang.String name,
                      IProgramElement.Kind kind,
                      java.util.List<IProgramElement> children)
Use to create program element nodes that do not correspond to source locations


ProgramElement

public ProgramElement(AsmManager asm,
                      java.lang.String name,
                      IProgramElement.Kind kind,
                      ISourceLocation sourceLocation,
                      int modifiers,
                      java.lang.String comment,
                      java.util.List<IProgramElement> children)
Method Detail

getModel

public AsmManager getModel()
Specified by:
getModel in interface IProgramElement

getRawModifiers

public int getRawModifiers()
Specified by:
getRawModifiers in interface IProgramElement

getModifiers

public java.util.List<IProgramElement.Modifiers> getModifiers()
Specified by:
getModifiers in interface IProgramElement

getAccessibility

public IProgramElement.Accessibility getAccessibility()
Specified by:
getAccessibility in interface IProgramElement

setDeclaringType

public void setDeclaringType(java.lang.String t)

getDeclaringType

public java.lang.String getDeclaringType()
Specified by:
getDeclaringType in interface IProgramElement

getPackageName

public java.lang.String getPackageName()
Specified by:
getPackageName in interface IProgramElement

getKind

public IProgramElement.Kind getKind()
Specified by:
getKind in interface IProgramElement

isCode

public boolean isCode()

getSourceLocation

public ISourceLocation getSourceLocation()
Specified by:
getSourceLocation in interface IProgramElement

setSourceLocation

public void setSourceLocation(ISourceLocation sourceLocation)
Specified by:
setSourceLocation in interface IProgramElement

getMessage

public IMessage getMessage()
Specified by:
getMessage in interface IProgramElement

setMessage

public void setMessage(IMessage message)
Specified by:
setMessage in interface IProgramElement

getParent

public IProgramElement getParent()
Specified by:
getParent in interface IProgramElement

setParent

public void setParent(IProgramElement parent)
Specified by:
setParent in interface IProgramElement

isMemberKind

public boolean isMemberKind()

setRunnable

public void setRunnable(boolean value)
Specified by:
setRunnable in interface IProgramElement

isRunnable

public boolean isRunnable()
Specified by:
isRunnable in interface IProgramElement

isImplementor

public boolean isImplementor()
Specified by:
isImplementor in interface IProgramElement

setImplementor

public void setImplementor(boolean value)
Specified by:
setImplementor in interface IProgramElement

isOverrider

public boolean isOverrider()
Specified by:
isOverrider in interface IProgramElement

setOverrider

public void setOverrider(boolean value)
Specified by:
setOverrider in interface IProgramElement

getFormalComment

public java.lang.String getFormalComment()
Specified by:
getFormalComment in interface IProgramElement
Returns:
the javadoc comment for this program element, null if not available

toString

public java.lang.String toString()
Specified by:
toString in interface IProgramElement
Overrides:
toString in class java.lang.Object

genAccessibility

public static IProgramElement.Accessibility genAccessibility(int modifiers)

getBytecodeName

public java.lang.String getBytecodeName()
Specified by:
getBytecodeName in interface IProgramElement

setBytecodeName

public void setBytecodeName(java.lang.String s)
Specified by:
setBytecodeName in interface IProgramElement

setBytecodeSignature

public void setBytecodeSignature(java.lang.String s)
Specified by:
setBytecodeSignature in interface IProgramElement

getBytecodeSignature

public java.lang.String getBytecodeSignature()
Specified by:
getBytecodeSignature in interface IProgramElement

getSourceSignature

public java.lang.String getSourceSignature()
Specified by:
getSourceSignature in interface IProgramElement
Returns:
the full signature of this element, as it appears in the source

setSourceSignature

public void setSourceSignature(java.lang.String string)
Specified by:
setSourceSignature in interface IProgramElement

setKind

public void setKind(IProgramElement.Kind kind)
Specified by:
setKind in interface IProgramElement

setCorrespondingType

public void setCorrespondingType(java.lang.String s)
Specified by:
setCorrespondingType in interface IProgramElement

setParentTypes

public void setParentTypes(java.util.List<java.lang.String> ps)
Specified by:
setParentTypes in interface IProgramElement

getParentTypes

public java.util.List<java.lang.String> getParentTypes()
Specified by:
getParentTypes in interface IProgramElement

setAnnotationType

public void setAnnotationType(java.lang.String fullyQualifiedAnnotationType)

Specified by:
setAnnotationType in interface IProgramElement
Parameters:
fullyQualifiedAnnotationType - the annotation type, eg. p.q.r.Foo

setAnnotationRemover

public void setAnnotationRemover(boolean isRemover)
Specified by:
setAnnotationRemover in interface IProgramElement

getAnnotationType

public java.lang.String getAnnotationType()
Specified by:
getAnnotationType in interface IProgramElement
Returns:
the fully qualified annotation type, eg. p.q.r.Foo

isAnnotationRemover

public boolean isAnnotationRemover()
Specified by:
isAnnotationRemover in interface IProgramElement

getRemovedAnnotationTypes

public java.lang.String[] getRemovedAnnotationTypes()
Specified by:
getRemovedAnnotationTypes in interface IProgramElement

getCorrespondingType

public java.lang.String getCorrespondingType()
Description copied from interface: IProgramElement
This correponds to both method return types and field types.

Specified by:
getCorrespondingType in interface IProgramElement

getCorrespondingTypeSignature

public java.lang.String getCorrespondingTypeSignature()
Specified by:
getCorrespondingTypeSignature in interface IProgramElement
Returns:
the return type of a method or type of a field in signature form (e.g. Ljava/lang/String;)

nameToSignature

public static java.lang.String nameToSignature(java.lang.String name)

getCorrespondingType

public java.lang.String getCorrespondingType(boolean getFullyQualifiedType)
Specified by:
getCorrespondingType in interface IProgramElement

trim

public static java.lang.String trim(java.lang.String fqname)
Trim down fully qualified types to their short form (e.g. a.b.c.D becomes D)


getName

public java.lang.String getName()
Specified by:
getName in interface IProgramElement

getChildren

public java.util.List<IProgramElement> getChildren()
Specified by:
getChildren in interface IProgramElement

setChildren

public void setChildren(java.util.List<IProgramElement> children)
Specified by:
setChildren in interface IProgramElement

addChild

public void addChild(IProgramElement child)
Specified by:
addChild in interface IProgramElement

addChild

public void addChild(int position,
                     IProgramElement child)

removeChild

public boolean removeChild(IProgramElement child)
Specified by:
removeChild in interface IProgramElement

setName

public void setName(java.lang.String string)
Specified by:
setName in interface IProgramElement

walk

public IProgramElement walk(HierarchyWalker walker)
Specified by:
walk in interface IProgramElement

toLongString

public java.lang.String toLongString()
Specified by:
toLongString in interface IProgramElement
Returns:
a string representation of this node and all of its children (recursive)

setModifiers

public void setModifiers(int i)
Specified by:
setModifiers in interface IProgramElement

addModifiers

public void addModifiers(IProgramElement.Modifiers newModifier)
Convenience mechanism for setting new modifiers which do not require knowledge of the private internal representation

Parameters:
newModifier -

toSignatureString

public java.lang.String toSignatureString()
Specified by:
toSignatureString in interface IProgramElement

toSignatureString

public java.lang.String toSignatureString(boolean getFullyQualifiedArgTypes)
Specified by:
toSignatureString in interface IProgramElement

toLinkLabelString

public java.lang.String toLinkLabelString()
TODO: move the "parent != null"==>injar heuristic to more explicit

Specified by:
toLinkLabelString in interface IProgramElement

toLinkLabelString

public java.lang.String toLinkLabelString(boolean getFullyQualifiedArgTypes)
Specified by:
toLinkLabelString in interface IProgramElement

toLabelString

public java.lang.String toLabelString()
Description copied from interface: IProgramElement
Includes name, parameter types (if any) and details (if any).

Specified by:
toLabelString in interface IProgramElement

toLabelString

public java.lang.String toLabelString(boolean getFullyQualifiedArgTypes)
Specified by:
toLabelString in interface IProgramElement

getHandleIdentifier

public java.lang.String getHandleIdentifier()
Description copied from interface: IProgramElement
The format of the string handle is not specified, but is stable across compilation sessions.

Specified by:
getHandleIdentifier in interface IProgramElement
Returns:
a string representation of this element

getHandleIdentifier

public java.lang.String getHandleIdentifier(boolean create)
Specified by:
getHandleIdentifier in interface IProgramElement

setHandleIdentifier

public void setHandleIdentifier(java.lang.String handle)
Specified by:
setHandleIdentifier in interface IProgramElement

getParameterNames

public java.util.List<java.lang.String> getParameterNames()
Specified by:
getParameterNames in interface IProgramElement

setParameterNames

public void setParameterNames(java.util.List<java.lang.String> list)
Specified by:
setParameterNames in interface IProgramElement

getParameterTypes

public java.util.List<char[]> getParameterTypes()
Specified by:
getParameterTypes in interface IProgramElement

getParameterSignatures

public java.util.List<char[]> getParameterSignatures()
Specified by:
getParameterSignatures in interface IProgramElement

getParameterSignaturesSourceRefs

public java.util.List<java.lang.String> getParameterSignaturesSourceRefs()
Specified by:
getParameterSignaturesSourceRefs in interface IProgramElement

setParameterSignatures

public void setParameterSignatures(java.util.List<char[]> list,
                                   java.util.List<java.lang.String> sourceRefs)
Set the parameter signatures for this method/constructor. The bit flags tell us if any were not singletypereferences in the the source. A singletypereference would be 'String' - whilst a qualifiedtypereference would be 'java.lang.String' - this has an effect on the handles.

Specified by:
setParameterSignatures in interface IProgramElement

getDetails

public java.lang.String getDetails()
Specified by:
getDetails in interface IProgramElement

setDetails

public void setDetails(java.lang.String string)
Specified by:
setDetails in interface IProgramElement

setFormalComment

public void setFormalComment(java.lang.String txt)
Specified by:
setFormalComment in interface IProgramElement

setExtraInfo

public void setExtraInfo(IProgramElement.ExtraInformation info)
Specified by:
setExtraInfo in interface IProgramElement

getExtraInfo

public IProgramElement.ExtraInformation getExtraInfo()
Specified by:
getExtraInfo in interface IProgramElement

isAnnotationStyleDeclaration

public boolean isAnnotationStyleDeclaration()
Specified by:
isAnnotationStyleDeclaration in interface IProgramElement

setAnnotationStyleDeclaration

public void setAnnotationStyleDeclaration(boolean b)
Specified by:
setAnnotationStyleDeclaration in interface IProgramElement

getDeclareParentsMap

public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDeclareParentsMap()
Specified by:
getDeclareParentsMap in interface IProgramElement

setDeclareParentsMap

public void setDeclareParentsMap(java.util.Map<java.lang.String,java.util.List<java.lang.String>> newmap)
Specified by:
setDeclareParentsMap in interface IProgramElement

addFullyQualifiedName

public void addFullyQualifiedName(java.lang.String fqname)
Specified by:
addFullyQualifiedName in interface IProgramElement

getFullyQualifiedName

public java.lang.String getFullyQualifiedName()
Specified by:
getFullyQualifiedName in interface IProgramElement