public abstract class AbstractTransformer
extends java.lang.Object
Static methods that can be used in any transformer are defined in this class. It is also safe to call them in non-transformer classes to modify the AST.
This abstract class has no protected methods that need to be overridden by subclasses. It is stateless. States may be introduced by subclasses.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ASSIGN_PREFIX
The prefix of assignment methods.
|
static java.lang.String |
BACKUP_PREFIX
The prefix of backup functions.
|
static java.lang.String |
CHECKPOINT_NAME
The name of the checkpoint object.
|
static java.lang.String |
CHECKPOINT_RECORD_NAME
The name of the checkpoint record.
|
static java.lang.String |
GET_CHECKPOINT_NAME
The name of the method to get the checkpoint.
|
static java.lang.String |
SET_CHECKPOINT_NAME
The name of the method to set a checkpoint.
|
Constructor and Description |
---|
AbstractTransformer() |
Modifier and Type | Method and Description |
---|---|
protected java.lang.String |
_getAssignMethodName(java.lang.String fieldName,
boolean special)
Get the name of the assignment method.
|
protected java.lang.String |
_getBackupMethodName(java.lang.String fieldName)
Get the name of the backup method.
|
static <K,V> void |
addToLists(java.util.Hashtable<K,java.util.List<V>> lists,
K key,
V value)
Given a table of lists, add a value to the list associated with a key.
|
static org.eclipse.jdt.core.dom.Name |
createName(org.eclipse.jdt.core.dom.AST ast,
java.lang.String name)
Create an AST name node with a name string (possibly partitioned with
".").
|
static org.eclipse.jdt.core.dom.Type |
createType(org.eclipse.jdt.core.dom.AST ast,
java.lang.String type)
Create an AST type node with a type string (possibly partitioned with
"." and "[]").
|
static java.lang.String |
getClassName(java.lang.Class c,
TypeAnalyzerState state,
org.eclipse.jdt.core.dom.CompilationUnit root)
Get the shortest possible name of the a class.
|
static java.lang.String |
getClassName(java.lang.String name,
TypeAnalyzerState state,
org.eclipse.jdt.core.dom.CompilationUnit root)
Get the shortest possible name of the a class.
|
static boolean |
hasMethod(java.lang.Class c,
java.lang.String methodName,
java.lang.Class[] parameters)
Test if a method exists in a class or its superclasses.
|
static boolean |
hasMethod(java.lang.Class c,
java.lang.String methodName,
java.lang.Class[] parameters,
boolean thisClassOnly)
Test if a method exists in a class.
|
static int |
indexOf(java.lang.String s,
char[] chars,
int startPos)
Find the first appearance of any of the given characters in a string.
|
static boolean |
isFieldDuplicated(java.lang.Class c,
java.lang.String fieldName)
Test if a field to be added already exists.
|
static int |
lastIndexOf(java.lang.String s,
char[] chars)
Find the last appearance of any of the given characters in a string.
|
static void |
removeNode(org.eclipse.jdt.core.dom.ASTNode node)
Remove an AST node from the its parent.
|
static void |
replaceNode(org.eclipse.jdt.core.dom.ASTNode node,
org.eclipse.jdt.core.dom.ASTNode newNode)
Replace an AST node with another one by substituting the corresponding
child of its parent.
|
public static final java.lang.String ASSIGN_PREFIX
public static final java.lang.String BACKUP_PREFIX
public static final java.lang.String CHECKPOINT_NAME
public static final java.lang.String CHECKPOINT_RECORD_NAME
public static final java.lang.String GET_CHECKPOINT_NAME
public static final java.lang.String SET_CHECKPOINT_NAME
public static <K,V> void addToLists(java.util.Hashtable<K,java.util.List<V>> lists, K key, V value)
lists
- The table of lists.key
- The key.value
- The value to be added.public static org.eclipse.jdt.core.dom.Name createName(org.eclipse.jdt.core.dom.AST ast, java.lang.String name)
ast
- The AST
object.name
- The name.public static org.eclipse.jdt.core.dom.Type createType(org.eclipse.jdt.core.dom.AST ast, java.lang.String type)
ast
- The AST
object.type
- The type.public static java.lang.String getClassName(java.lang.Class c, TypeAnalyzerState state, org.eclipse.jdt.core.dom.CompilationUnit root)
c
- The class.state
- The state of the type analyzer.root
- The root of the AST. If there is no conflict and the class
has not been imported yet, a new ImportDeclaration
is added to
it.public static java.lang.String getClassName(java.lang.String name, TypeAnalyzerState state, org.eclipse.jdt.core.dom.CompilationUnit root)
name
- The full class name.state
- The state of the type analyzer.root
- The root of the AST. If there is no conflict and
the class has not been imported yet, a new ImportDeclaration
is added to it.public static boolean hasMethod(java.lang.Class c, java.lang.String methodName, java.lang.Class[] parameters)
c
- The current class.methodName
- The method name.parameters
- The types of parameters for the method.public static boolean hasMethod(java.lang.Class c, java.lang.String methodName, java.lang.Class[] parameters, boolean thisClassOnly)
c
- The current class.methodName
- The method name.thisClassOnly
- Whether to test the given class only (but not
test its superclasses).parameters
- The types of parameters for the method.public static int indexOf(java.lang.String s, char[] chars, int startPos)
s
- The string.chars
- The array of characters.startPos
- The starting position from which the search begins.public static boolean isFieldDuplicated(java.lang.Class c, java.lang.String fieldName)
c
- The current class.fieldName
- The field name.public static int lastIndexOf(java.lang.String s, char[] chars)
s
- The string.chars
- The array of characters.public static void removeNode(org.eclipse.jdt.core.dom.ASTNode node)
node
- The node to be removed.public static void replaceNode(org.eclipse.jdt.core.dom.ASTNode node, org.eclipse.jdt.core.dom.ASTNode newNode)
node
- The node to be replace.newNode
- The new node.protected java.lang.String _getAssignMethodName(java.lang.String fieldName, boolean special)
fieldName
- The field name.special
- Whether the method handles special assign operators.protected java.lang.String _getBackupMethodName(java.lang.String fieldName)
fieldName
- The field name.