org.openarchitectureware.expression.debug
Class ExpressionElementAdapter

java.lang.Object
  extended by org.openarchitectureware.expression.debug.ExpressionElementAdapter
All Implemented Interfaces:
IElementAdapter
Direct Known Subclasses:
XpandElementAdapter

public class ExpressionElementAdapter
extends java.lang.Object
implements IElementAdapter

The IElementAdapter implementation for expressions.

Author:
Bernd Kolb, Clemens Kadura (zAJKa)

Field Summary
protected  ExecutionContext context
           
protected  ExpressionModelPresentation pres
           
protected  java.util.Set<BaseSpecialTreatment> specials
           
static java.lang.String TYPE
           
 
Constructor Summary
ExpressionElementAdapter()
           
 
Method Summary
 boolean canHandle(java.lang.Object element)
          returns true, if the implementation handles the element type
 boolean checkVariableHasMembers(java.lang.Object element)
          check if the variable representation of this element shall show members
 SyntaxElementTO createElementTO(java.lang.Object element)
          computes a SyntaxElementTO for a specific element type
the containerName should be the name of the underlying file name
the element name should be the name of the surrounding element (e.g. in Java we highlight the line to be debugged, but show the surrounding method name in the Launch view)
start, end and line should point to the text that shall be highlighted for the element
 SyntaxElementTO createEndElementTO(java.lang.Object element)
          computes a SyntaxElementTO for a surrounding element representing the end position to be highlighted before returning
the containerName should be the name of the file that holds the element
the element name should be a description of the end element
start, end and line should point to the end text to be highlighted
 java.lang.Object findElement(SyntaxElementTO se, java.lang.Object actual, int flag)
          find the element that corresponds to the given syntax element information
 java.lang.String getAdapterType()
          a unique type must be provided for each implementation
 java.util.Set<Callable> getAllFeatures(Type type)
           
protected  java.util.ArrayList<NameValuePair> getAllVisibleVariables()
           
 ExecutionContext getContext()
           
 java.lang.String getVariableDetailRep(java.lang.Object element)
          compute the string representation of the element ready to display in the variables detail view.
 java.util.List<NameValuePair> getVariables(java.lang.Object element)
          collect all available variables for a given element.
 java.lang.String getVariableSimpleRep(java.lang.Object element)
          compute a shorter string representation of the element ready to display in the variables view.
 boolean isSurroundingElement(java.lang.Object element)
          returns whether the element has a body and debugger shall stop again at the end of the execution of that element
 void setContext(java.lang.Object context)
          set the current execution context
the context should be cached and can be used to collect information about elements
 boolean shallHandle(java.lang.Object element)
          this method is called from the DebugMonitor prior to all other suspension activities (e.g. breakpoint check, subroutine level check)
this provides the opportunity to handle specific elements individually
Normal return value should be true
 boolean shallSuspend(java.lang.Object element, int flag)
          this method is called from the DebugMonitor after all other suspension activities (e.g. breakpoint check, subroutine level check)
this provides the opportunity for a last call by the adapter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TYPE

public static final java.lang.String TYPE
See Also:
Constant Field Values

context

protected ExecutionContext context

pres

protected ExpressionModelPresentation pres

specials

protected java.util.Set<BaseSpecialTreatment> specials
Constructor Detail

ExpressionElementAdapter

public ExpressionElementAdapter()
Method Detail

getContext

public ExecutionContext getContext()
Specified by:
getContext in interface IElementAdapter

setContext

public void setContext(java.lang.Object context)
Description copied from interface: IElementAdapter
set the current execution context
the context should be cached and can be used to collect information about elements

Specified by:
setContext in interface IElementAdapter
Parameters:
context - the context

getAdapterType

public java.lang.String getAdapterType()
Description copied from interface: IElementAdapter
a unique type must be provided for each implementation

Specified by:
getAdapterType in interface IElementAdapter
Returns:
the adapterType

canHandle

public boolean canHandle(java.lang.Object element)
Description copied from interface: IElementAdapter
returns true, if the implementation handles the element type

Specified by:
canHandle in interface IElementAdapter
Parameters:
element - the element that is going to be debugged
Returns:
true, if this class handles the element type

shallHandle

public boolean shallHandle(java.lang.Object element)
Description copied from interface: IElementAdapter
this method is called from the DebugMonitor prior to all other suspension activities (e.g. breakpoint check, subroutine level check)
this provides the opportunity to handle specific elements individually
Normal return value should be true

Specified by:
shallHandle in interface IElementAdapter
Parameters:
element - the element that is going to be debugged
Returns:
whether or not to suspend the debugger process for the element

shallSuspend

public boolean shallSuspend(java.lang.Object element,
                            int flag)
Description copied from interface: IElementAdapter
this method is called from the DebugMonitor after all other suspension activities (e.g. breakpoint check, subroutine level check)
this provides the opportunity for a last call by the adapter.
Implementations can *avoid* suspension, although it would suspend otherwise, if the return value is set to false here

Specified by:
shallSuspend in interface IElementAdapter
Parameters:
element - the element that is going to be debugged
flag - one of the values IProcessHandler.PUSH or IProcessHandler.POP
Returns:
whether or not to suspend the debugger process for the element

createElementTO

public SyntaxElementTO createElementTO(java.lang.Object element)
Description copied from interface: IElementAdapter
computes a SyntaxElementTO for a specific element type
the containerName should be the name of the underlying file name
the element name should be the name of the surrounding element (e.g. in Java we highlight the line to be debugged, but show the surrounding method name in the Launch view)
start, end and line should point to the text that shall be highlighted for the element

Specified by:
createElementTO in interface IElementAdapter
Parameters:
element - the element that is going to be debugged
Returns:
a SyntaxElementTO that contains the information to be shown in the debugger views in a common neutral way

isSurroundingElement

public boolean isSurroundingElement(java.lang.Object element)
Description copied from interface: IElementAdapter
returns whether the element has a body and debugger shall stop again at the end of the execution of that element

Specified by:
isSurroundingElement in interface IElementAdapter
Parameters:
element - the element that is debugged currently
Returns:
whether the element has a body

createEndElementTO

public SyntaxElementTO createEndElementTO(java.lang.Object element)
Description copied from interface: IElementAdapter
computes a SyntaxElementTO for a surrounding element representing the end position to be highlighted before returning
the containerName should be the name of the file that holds the element
the element name should be a description of the end element
start, end and line should point to the end text to be highlighted

Specified by:
createEndElementTO in interface IElementAdapter
Parameters:
element - the element that is going to be debugged
Returns:
a SyntaxElementTO that contains the information to be shown in the debugger views in a common neutral way

getVariableDetailRep

public java.lang.String getVariableDetailRep(java.lang.Object element)
Description copied from interface: IElementAdapter
compute the string representation of the element ready to display in the variables detail view.

Specified by:
getVariableDetailRep in interface IElementAdapter
Parameters:
element - the element to be considered
Returns:
the String representation of this element

getVariableSimpleRep

public java.lang.String getVariableSimpleRep(java.lang.Object element)
Description copied from interface: IElementAdapter
compute a shorter string representation of the element ready to display in the variables view.

Specified by:
getVariableSimpleRep in interface IElementAdapter
Parameters:
element - the element to be considered
Returns:
a string representation of this element

checkVariableHasMembers

public boolean checkVariableHasMembers(java.lang.Object element)
Description copied from interface: IElementAdapter
check if the variable representation of this element shall show members

Specified by:
checkVariableHasMembers in interface IElementAdapter
Parameters:
element - the element to be considered
Returns:
the decision

getVariables

public java.util.List<NameValuePair> getVariables(java.lang.Object element)
Description copied from interface: IElementAdapter
collect all available variables for a given element. With this method only the variables themselfs are collected, not their members.
Implementations must consider that elementcan be both a syntax element or an arbitrary java element to collect the member variables from!!

Specified by:
getVariables in interface IElementAdapter
Parameters:
element - the current element
Returns:
a name/value list that contains the variables

findElement

public java.lang.Object findElement(SyntaxElementTO se,
                                    java.lang.Object actual,
                                    int flag)
Description copied from interface: IElementAdapter
find the element that corresponds to the given syntax element information

Specified by:
findElement in interface IElementAdapter
Parameters:
se - the syntax element transfer object
Returns:
the corresponding element

getAllVisibleVariables

protected java.util.ArrayList<NameValuePair> getAllVisibleVariables()

getAllFeatures

public final java.util.Set<Callable> getAllFeatures(Type type)