public class PatternParameterConfigurator
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
PatternParameterConfigurator.ParameterElementPair |
Modifier and Type | Method and Description |
---|---|
<T> PatternParameterConfigurator |
byCondition(java.lang.Class<T> type,
java.util.function.Predicate<T> matchCondition) |
PatternParameterConfigurator |
byElement(CtElement... elements)
Elements will be substituted by parameter value
|
PatternParameterConfigurator |
byFieldAccessOnVariable(java.lang.String varName)
Add parameters for each field reference to variable named `variableName`
For example this pattern model
class Params {
int paramA;
int paramB;
}
void matcher(Params p) {
return p.paramA + p.paramB;
}
called with `byFieldRefOfVariable("p")` will create pattern parameters: `paramA` and `paramB`
|
PatternParameterConfigurator |
byFilter(Filter<?> filter)
All elements matched by
Filter will be substituted by parameter value |
PatternParameterConfigurator |
byInvocation(CtMethod<?> method)
each invocation of `method` will be replaces by parameter value
|
PatternParameterConfigurator |
byLocalType(CtType<?> searchScope,
java.lang.String localTypeSimpleName)
Searches for a type visible in scope `templateType`, whose simple name is equal to `localTypeSimpleName`
|
PatternParameterConfigurator |
byNamedElement(java.lang.String simpleName)
Any named element by it's simple name
|
PatternParameterConfigurator |
byParameterValues(java.util.Map<java.lang.String,java.lang.Object> parameterValues)
Creates pattern parameter for each key of parameterValues
Map . |
PatternParameterConfigurator |
byReferenceName(java.lang.String simpleName)
Any reference identified by it's simple name.
|
PatternParameterConfigurator |
byRole(CtRole role,
CtElement... elements)
Attribute defined by `role` of `element` will be substituted by parameter value
|
PatternParameterConfigurator |
byRole(CtRole role,
Filter<?> filter)
Attribute defined by `role` of all elements matched by
Filter will be substituted by parameter value |
PatternParameterConfigurator |
byString(java.lang.String stringMarker)
All spoon model string attributes whose value is equal to `stringMarker`
are subject for substitution by current parameter
|
PatternParameterConfigurator |
bySubstring(java.lang.String stringMarker)
All spoon model string attributes whose value contains whole string or a substring equal to `stringMarker`
are subject for substitution by current parameter.
|
PatternParameterConfigurator |
byTemplateParameter()
Creates pattern parameter for each field of type
TemplateParameter |
PatternParameterConfigurator |
byTemplateParameter(java.util.Map<java.lang.String,java.lang.Object> parameterValues)
Creates pattern parameter for each field of type
TemplateParameter .Note: This method is here for compatibility with obsolete legacy Template based concept. |
PatternParameterConfigurator |
byTemplateParameterReference(CtVariable<?> variable)
variable read/write of `variable` of type
TemplateParameter |
PatternParameterConfigurator |
byType(java.lang.Class<?> type)
`type` itself and all the references to the `type` are subject for substitution by current parameter
|
PatternParameterConfigurator |
byType(CtTypeReference<?> type)
type referred by
CtTypeReference `type` and all the references (with same actual type arguments)
to that type are subject for substitution by current parameter |
PatternParameterConfigurator |
byType(java.lang.String typeQualifiedName)
type identified by `typeQualifiedName` itself and all the references (with arbitrary actual type arguments)
to that type are subject for substitution by current parameter
|
PatternParameterConfigurator |
byVariable(CtVariable<?> variable)
variable read/write of `variable`
|
PatternParameterConfigurator |
byVariable(java.lang.String variableName)
variable read/write of `variable`
|
ConflictResolutionMode |
getConflictResolutionMode() |
ParameterInfo |
getCurrentParameter() |
boolean |
isSubstituted(java.lang.String paramName) |
PatternParameterConfigurator |
matchInlinedStatements()
marks a CtIf and CtForEach to be matched, even when inlined.
|
PatternParameterConfigurator |
parameter(java.lang.String paramName)
Creates a parameter with name `paramName` and assigns it into context, so next calls on builder will be applied to this parameter
|
CtQueryable |
queryModel() |
PatternParameterConfigurator |
setConflictResolutionMode(ConflictResolutionMode conflictResolutionMode)
|
PatternParameterConfigurator |
setContainerKind(ContainerKind containerKind)
Defines type of parameter value (List/Set/Map/single).
|
PatternParameterConfigurator |
setMatchingStrategy(Quantifier quantifier) |
PatternParameterConfigurator |
setMaxOccurrence(int maxOccurrence) |
PatternParameterConfigurator |
setMinOccurrence(int minOccurrence) |
PatternParameterConfigurator |
setValueType(java.lang.Class<?> valueType)
Set expected type of Parameter.
|
public ConflictResolutionMode getConflictResolutionMode()
ConflictResolutionMode
public PatternParameterConfigurator setConflictResolutionMode(ConflictResolutionMode conflictResolutionMode)
conflictResolutionMode
- to be applied modepublic CtQueryable queryModel()
public PatternParameterConfigurator parameter(java.lang.String paramName)
paramName
- to be build parameter namePatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator setMinOccurrence(int minOccurrence)
public PatternParameterConfigurator setMaxOccurrence(int maxOccurrence)
public PatternParameterConfigurator setMatchingStrategy(Quantifier quantifier)
public PatternParameterConfigurator setValueType(java.lang.Class<?> valueType)
ValueConvertor
, which provides conversion between matched element and expected parameter typevalueType
- a expected type of parameter valuePatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator setContainerKind(ContainerKind containerKind)
ContainerKind.SINGLE
containerKind
- to be used ContainerKind
PatternParameterConfigurator
to support fluent APIpublic ParameterInfo getCurrentParameter()
public PatternParameterConfigurator byType(java.lang.Class<?> type)
type
- to be substituted ClassPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byType(java.lang.String typeQualifiedName)
typeQualifiedName
- a fully qualified name of to be substituted ClassPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byType(CtTypeReference<?> type)
CtTypeReference
`type` and all the references (with same actual type arguments)
to that type are subject for substitution by current parametertype
- a fully qualified name of to be substituted ClassPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byLocalType(CtType<?> searchScope, java.lang.String localTypeSimpleName)
searchScope
- the Type which is searched for local TypelocalTypeSimpleName
- the simple name of to be returned TypePatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byVariable(java.lang.String variableName)
variableName
- a variable whose references will be substitutedpublic PatternParameterConfigurator byVariable(CtVariable<?> variable)
variable
- a variable whose references will be substitutedPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byInvocation(CtMethod<?> method)
method
- the method whose invocation has to be substitutedPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byFieldAccessOnVariable(java.lang.String varName)
varName
- the name of the variable referencePatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byTemplateParameter()
TemplateParameter
public PatternParameterConfigurator byTemplateParameter(java.util.Map<java.lang.String,java.lang.Object> parameterValues)
TemplateParameter
.Template
based concept.
We suggest to define each parameter individually using `byXxxx(...)` methods of this class instead.parameterValues
- pattern parameter values.
Note these values may influence the way how pattern parameters are created.
This unclear and ambiguous technique was used in legacy templatespublic PatternParameterConfigurator byParameterValues(java.util.Map<java.lang.String,java.lang.Object> parameterValues)
Map
.
The parameter is created only if doesn't exist yet.
If the parameter value is a CtTypeReference, then all local types whose simple name equals to parameter name are substituted
Then any name in source code which contains a parameter name will be converted to parameter
Note: This unclear and ambiguous technique was used in legacy templates
We suggest to define each parameter individually using `byXxxx(...)` methods of this class instead.parameterValues
- pattern parameter values or null if not knownpublic PatternParameterConfigurator byTemplateParameterReference(CtVariable<?> variable)
TemplateParameter
variable
- a variable whose references will be substitutedPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byString(java.lang.String stringMarker)
stringMarker
- a string value which has to be substitutedPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator bySubstring(java.lang.String stringMarker)
stringMarker
- a string value which has to be substitutedPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byNamedElement(java.lang.String simpleName)
simpleName
- simple name of CtNamedElement
PatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byReferenceName(java.lang.String simpleName)
getSubstitutedNodeOfElement(ParameterInfo, CtElement)
simpleName
- simple name of CtReference
PatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byFilter(Filter<?> filter)
Filter
will be substituted by parameter valuefilter
- Filter
, which defines to be substituted elementsPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byElement(CtElement... elements)
elements
- to be substituted elementsPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byRole(CtRole role, Filter<?> filter)
Filter
will be substituted by parameter valuerole
- CtRole
, which defines to be substituted elementsfilter
- Filter
, which defines to be substituted elementsPatternParameterConfigurator
to support fluent APIpublic PatternParameterConfigurator byRole(CtRole role, CtElement... elements)
role
- CtRole
, which defines to be substituted elementselements
- to be substituted elementPatternParameterConfigurator
to support fluent APIpublic <T> PatternParameterConfigurator byCondition(java.lang.Class<T> type, java.util.function.Predicate<T> matchCondition)
type
- a required type of the value which matches as value of this parametermatchCondition
- a Predicate
which selects matching valuespublic PatternParameterConfigurator matchInlinedStatements()
public boolean isSubstituted(java.lang.String paramName)
Copyright © 2007–2021 Inria. All rights reserved.