[jboss-svn-commits] JBL Code SVN: r26834 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/lang and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 4 16:35:26 EDT 2009
Author: tirelli
Date: 2009-06-04 16:35:26 -0400 (Thu, 04 Jun 2009)
New Revision: 26834
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
Log:
JBRULES-2111: fixing parser to properly construct the descriptor model
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java 2009-06-04 19:03:28 UTC (rev 26833)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java 2009-06-04 20:35:26 UTC (rev 26834)
@@ -33,10 +33,24 @@
public void addDescr(final BaseDescr baseDescr) {
this.descrs.add( baseDescr );
+ if( baseDescr instanceof FieldBindingDescr ) {
+ FieldBindingDescr fbd = (FieldBindingDescr) baseDescr;
+ if( fbd.getFieldConstraint() != null ) {
+ this.descrs.add( fbd.getFieldConstraint() );
+ fbd.setFieldConstraint( null );
+ }
+ }
}
public void insertDescr(int index,
final BaseDescr baseDescr) {
+ if( baseDescr instanceof FieldBindingDescr ) {
+ FieldBindingDescr fbd = (FieldBindingDescr) baseDescr;
+ if( fbd.getFieldConstraint() != null ) {
+ this.descrs.add(index, fbd.getFieldConstraint() );
+ fbd.setFieldConstraint( null );
+ }
+ }
this.descrs.add( index,
baseDescr );
}
@@ -65,7 +79,9 @@
public void addOrMerge(final BaseDescr baseDescr) {
if ( baseDescr instanceof AndDescr ) {
- this.descrs.addAll( ((AndDescr) baseDescr).getDescrs() );
+ for( BaseDescr descr : (List<BaseDescr>)((AndDescr) baseDescr).getDescrs() ) {
+ addDescr( descr );
+ }
} else {
addDescr( baseDescr );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2009-06-04 19:03:28 UTC (rev 26833)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2009-06-04 20:35:26 UTC (rev 26834)
@@ -935,28 +935,10 @@
if (null != exprList && exprList.size() > 0) {
if (exprList.size() == 1) {
- if (exprList.get(0) instanceof FieldBindingDescr
- && ((FieldBindingDescr) exprList.get(0))
- .getFieldConstraint().getRestriction()
- .getRestrictions().size() > 0) {
- pattern.getConstraint().addDescr(exprList.get(0));
- pattern.getConstraint().addDescr(
- ((FieldBindingDescr) exprList.get(0))
- .getFieldConstraint());
- } else {
- pattern.getConstraint().addOrMerge(exprList.get(0));
- }
+ pattern.getConstraint().addOrMerge(exprList.get(0));
} else {
for (BaseDescr constraint : exprList) {
pattern.getConstraint().addDescr(constraint);
- if (constraint instanceof FieldBindingDescr
- && ((FieldBindingDescr) constraint)
- .getFieldConstraint().getRestriction()
- .getRestrictions().size() > 0) {
- pattern.getConstraint().addDescr(
- ((FieldBindingDescr) constraint)
- .getFieldConstraint());
- }
}
}
pattern.setEndCharacter(exprList.get(exprList.size() - 1)
@@ -1051,7 +1033,9 @@
FieldConstraintDescr fieldConstraint = (FieldConstraintDescr) descr;
fieldBiding.setIdentifier(label.getText());
fieldBiding.setFieldName(fieldConstraint.getFieldName());
- fieldBiding.setFieldConstraint(fieldConstraint);
+ if( ! fieldConstraint.getRestrictions().isEmpty() ) {
+ fieldBiding.setFieldConstraint(fieldConstraint);
+ }
return fieldBiding;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java 2009-06-04 19:03:28 UTC (rev 26833)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java 2009-06-04 20:35:26 UTC (rev 26834)
@@ -48,11 +48,26 @@
}
public void insertDescr(int index, final BaseDescr baseDescr) {
- this.descrs.add( index, baseDescr );
+ if( baseDescr instanceof FieldBindingDescr ) {
+ FieldBindingDescr fbd = (FieldBindingDescr) baseDescr;
+ if( fbd.getFieldConstraint() != null ) {
+ this.descrs.add(index, fbd.getFieldConstraint() );
+ fbd.setFieldConstraint( null );
+ }
+ }
+ this.descrs.add( index,
+ baseDescr );
}
public void addDescr(final BaseDescr baseDescr) {
this.descrs.add( baseDescr );
+ if( baseDescr instanceof FieldBindingDescr ) {
+ FieldBindingDescr fbd = (FieldBindingDescr) baseDescr;
+ if( fbd.getFieldConstraint() != null ) {
+ this.descrs.add( fbd.getFieldConstraint() );
+ fbd.setFieldConstraint( null );
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java 2009-06-04 19:03:28 UTC (rev 26833)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java 2009-06-04 20:35:26 UTC (rev 26834)
@@ -4008,6 +4008,54 @@
qualifiedIdentifierRestrictionDescr.getText() );
}
+ public void testAndRestrictionConnective() throws Exception {
+ final String source = "rule \"Test\" when ( $r :Person( $n : name == 'Bob' && $a : age == 20) ) then end";
+
+ parse( "compilation_unit",
+ "compilation_unit",
+ source );
+
+ RuleDescr rule = (RuleDescr) this.walker.getPackageDescr().getRules().get( 0 );
+ assertFalse( parser.hasErrors() );
+
+ assertEquals( "Test",
+ rule.getName() );
+ assertEquals( 1,
+ rule.getLhs().getDescrs().size() );
+ PatternDescr patternDescr = (PatternDescr) rule.getLhs().getDescrs().get( 0 );
+ assertEquals( "$r",
+ patternDescr.getIdentifier() );
+ assertEquals( 4,
+ patternDescr.getDescrs().size() );
+ FieldBindingDescr nameBind = (FieldBindingDescr) patternDescr.getDescrs().get( 0 );
+ assertEquals( "$n", nameBind.getIdentifier() );
+ assertEquals( "name", nameBind.getFieldName() );
+ FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) patternDescr.getDescrs().get( 1 );
+ assertEquals( "name",
+ fieldConstraintDescr.getFieldName() );
+ assertEquals( 1,
+ fieldConstraintDescr.getRestriction().getRestrictions().size() );
+ LiteralRestrictionDescr literalRestrictionDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestriction().getRestrictions().get( 0 );
+ assertEquals( "==",
+ literalRestrictionDescr.getEvaluator() );
+ assertEquals( "Bob",
+ literalRestrictionDescr.getText() );
+
+ FieldBindingDescr ageBind = (FieldBindingDescr) patternDescr.getDescrs().get( 2 );
+ assertEquals( "$a", ageBind.getIdentifier() );
+ assertEquals( "age", ageBind.getFieldName() );
+ fieldConstraintDescr = (FieldConstraintDescr) patternDescr.getDescrs().get( 3 );
+ assertEquals( "age",
+ fieldConstraintDescr.getFieldName() );
+ assertEquals( 1,
+ fieldConstraintDescr.getRestriction().getRestrictions().size() );
+ literalRestrictionDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestriction().getRestrictions().get( 0 );
+ assertEquals( "==",
+ literalRestrictionDescr.getEvaluator() );
+ assertEquals( "20",
+ literalRestrictionDescr.getText() );
+ }
+
public void testTypeWithMetaData() throws Exception {
parseResource( "compilation_unit",
More information about the jboss-svn-commits
mailing list