Skip to content

Commit

Permalink
JBRULES-3025: fixing support for nested bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
etirelli committed Jun 3, 2011
1 parent 8a92b6d commit 5fa10fe
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public boolean isUnification() {
}

public String toString() {
return "[Binding: " + this.variable + ( this.unification ? " := " : " : " ) + this.expression + "]";
return this.variable + ( this.unification ? " := " : " : " ) + this.expression;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ then
}exists( @includeNamed{"cedchildren"; list=base.descrs; connect=""} )@elseif{ base instanceof ForallDescr }@comment{
}forall( @includeNamed{"cedchildren"; list=base.descrs; connect=""} )@elseif{ base instanceof EvalDescr }@comment{
}eval( @{base.content} )@elseif{ base instanceof PatternDescr }@comment{
}@if{base.identifier!=null}@{base.identifier} : @end{}@{base.objectType}( @foreach{bind:base.bindings}@{bind.variable} : @{bind.expression}@end{", "}@if{!base.bindings.isEmpty()&&!base.descrs.isEmpty()}, @end{}@foreach{constr:base.descrs}@{constr}@end{", "} ) @foreach{b:base.behaviors}| @{b.type}:@{b.subType}(@foreach{p:b.params}@{p}@end{", "})@end{}@includeNamed{"psource";source=base.source}@end{}@end{}
}@if{base.identifier!=null}@{base.identifier} : @end{}@{base.objectType}( @foreach{constr:base.descrs}@{constr}@end{", "} ) @foreach{b:base.behaviors}| @{b.type}:@{b.subType}(@foreach{p:b.params}@{p}@end{", "})@end{}@includeNamed{"psource";source=base.source}@end{}@end{}

@comment{***************************************************************
CONDITIONAL ELEMENT CHILD TEMPLATE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,14 @@
</pattern>

<pattern object-type="Foo">
<field-constraint field-name="field1">
<field-binding field-name="field1" identifier="var1" />
<field-constraint field-name="field1">
<literal-restriction evaluator="==" value="value1" />
<return-value-restriction evaluator="==">1==1</return-value-restriction>
<variable-restriction evaluator="==" identifier="var1" />
</field-constraint>

<predicate field-name="field1" identifier="var1">1==1</predicate>

<field-binding field-name="field1" identifier="var1" />
</pattern>

<not>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,28 @@ private String visit(BaseDescr descr) {
visit((ConstraintConnectiveDescr) descr);
} else if (descr instanceof RelationalExprDescr) {
visit((RelationalExprDescr) descr);
} else if (descr instanceof BindingDescr) {
visit((BindingDescr) descr);
}

return "";
}

private void visit(BindingDescr descr) {
Field field = new Field();
field.setName(descr.getExpression());
field.setObjectTypeName(pattern.getName());
field.setObjectTypePath(pattern.getObjectTypePath());
data.add(field);

FieldVariable fieldVariable = new FieldVariable(pattern);
fieldVariable.setParentPath(field.getPath());
fieldVariable.setName(descr.getVariable());
fieldVariable.setOrderNumber(orderNumber.next());

data.add(fieldVariable);
}

private void visit(ConstraintConnectiveDescr descr) {
switch (descr.getConnective()) {
case AND:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,6 @@ private Pattern visitPatternDescr(PatternDescr descr,
pattern.setSourceType(workingMemory.getVerifierComponentType());
}

visit(descr.getBindings());

solvers.startPatternSolver(pattern);

visit(descr.getConstraint());
Expand Down

0 comments on commit 5fa10fe

Please sign in to comment.