Package spoon.pattern.internal.node
Class ParameterNode
- java.lang.Object
-
- spoon.pattern.internal.node.AbstractNode
-
- spoon.pattern.internal.node.ParameterNode
-
- All Implemented Interfaces:
Matchers
,PrimitiveMatcher
,RepeatableMatcher
,RootNode
public class ParameterNode extends AbstractNode
Represents pattern model variable Delivers/Matches 0, 1 or more values of defined parameter. The values may have type which extendsCtElement
or any other type of some SpoonModel attribute. E.g. String
-
-
Field Summary
-
Fields inherited from interface spoon.pattern.internal.node.RootNode
MATCH_ALL, MATCH_PART
-
-
Constructor Summary
Constructors Constructor Description ParameterNode(ParameterInfo parameterInfo)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
forEachParameterInfo(BiConsumer<ParameterInfo,RootNode> consumer)
Calls consumer for each pair of parameter definition (ParameterInfo
) andRootNode
, which uses it<T> void
generateTargets(DefaultGenerator generator, ResultHolder<T> result, ImmutableMap parameters)
Generates zero, one or more target depending on kind of thisRootNode
, expected `result` and input `parameters`Quantifier
getMatchingStrategy()
If twoRepeatableMatcher
s in a list are matching the same element, then returnedQuantifier
defines how resolve this conflictParameterInfo
getParameterInfo()
boolean
isMandatory(ImmutableMap parameters)
boolean
isRepeatable()
boolean
isTryNextMatch(ImmutableMap parameters)
TobeMatched
matchAllWith(TobeMatched tobeMatched)
Matches all matchers of thisMatchers
instance with `targets`ImmutableMap
matchTarget(Object target, ImmutableMap parameters)
TobeMatched
matchTargets(TobeMatched targets, Matchers next)
boolean
replaceNode(RootNode oldNode, RootNode newNode)
Call it to modify Pattern structure.String
toString()
-
Methods inherited from class spoon.pattern.internal.node.AbstractNode
isSimplifyGenerated, setSimplifyGenerated
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface spoon.pattern.internal.node.RootNode
isSimplifyGenerated, matchTargets, setSimplifyGenerated
-
-
-
-
Constructor Detail
-
ParameterNode
public ParameterNode(ParameterInfo parameterInfo)
-
-
Method Detail
-
replaceNode
public boolean replaceNode(RootNode oldNode, RootNode newNode)
Description copied from interface:RootNode
Call it to modify Pattern structure. It is actually called mainly by PatternBuilder. TODO: May be we can move this method into some internal interface?
-
generateTargets
public <T> void generateTargets(DefaultGenerator generator, ResultHolder<T> result, ImmutableMap parameters)
Description copied from interface:RootNode
Generates zero, one or more target depending on kind of thisRootNode
, expected `result` and input `parameters`- Parameters:
generator
-Generator
which drives generation processresult
- holder for the generated objectsparameters
- aImmutableMap
holding parameters
-
matchTarget
public ImmutableMap matchTarget(Object target, ImmutableMap parameters)
- Parameters:
target
- - to be matched elementparameters
- will receive the matching parameter values- Returns:
- true if `element` matches with pattern of this matcher
-
getParameterInfo
public ParameterInfo getParameterInfo()
-
isRepeatable
public boolean isRepeatable()
- Returns:
- true if this matcher can be applied more then once in the same container of targets Note: even if false, it may be applied again to another container and to match EQUAL value
-
isMandatory
public boolean isMandatory(ImmutableMap parameters)
- Parameters:
parameters
- matching parameters- Returns:
- true if this ValueResolver MUST match with next target in the state defined by current `parameters`. false if match is optional
-
isTryNextMatch
public boolean isTryNextMatch(ImmutableMap parameters)
- Parameters:
parameters
- matching parameters- Returns:
- true if this ValueResolver should be processed again to match next target in the state defined by current `parameters`.
-
getMatchingStrategy
public Quantifier getMatchingStrategy()
Description copied from interface:RepeatableMatcher
If twoRepeatableMatcher
s in a list are matching the same element, then returnedQuantifier
defines how resolve this conflict- Returns:
Quantifier
-
forEachParameterInfo
public void forEachParameterInfo(BiConsumer<ParameterInfo,RootNode> consumer)
Description copied from interface:RootNode
Calls consumer for each pair of parameter definition (ParameterInfo
) andRootNode
, which uses it- Parameters:
consumer
- the receiver of pairs ofParameterInfo
andRootNode
-
toString
public String toString()
- Overrides:
toString
in classAbstractNode
-
matchAllWith
public TobeMatched matchAllWith(TobeMatched tobeMatched)
Description copied from interface:Matchers
Matches all matchers of thisMatchers
instance with `targets`- Specified by:
matchAllWith
in interfaceMatchers
- Specified by:
matchAllWith
in interfaceRootNode
- Parameters:
tobeMatched
- to be matched target nodes and input parameters- Returns:
TobeMatched
with targets which remained after allRootNode
s were matched + matched parameters
-
matchTargets
public TobeMatched matchTargets(TobeMatched targets, Matchers next)
- Specified by:
matchTargets
in interfaceRootNode
- Parameters:
targets
- to be matched target nodes and input parametersnext
- Chain of matchers which has to be processed after thisRootNode
- Returns:
- new parameters and container with remaining targets
-
-