[jboss-svn-commits] JBL Code SVN: r32455 - in labs/jbossrules/trunk/drools-verifier/src: main/java/org/drools/verifier/visitor and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Apr 7 05:07:59 EDT 2010
Author: Rikkola
Date: 2010-04-07 05:07:58 -0400 (Wed, 07 Apr 2010)
New Revision: 32455
Added:
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/visitor/NestedPatternsTest.java
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/visitor/NestedPatterns.drl
Modified:
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/PatternDescrVisitor.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/RuleDescrVisitor.java
Log:
JBRULES-2474 : Path to nested objects is broken
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java 2010-04-07 02:38:02 UTC (rev 32454)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java 2010-04-07 09:07:58 UTC (rev 32455)
@@ -27,9 +27,18 @@
@Override
public String getPath() {
- return String.format( "%s.pattern[%s]",
- getRulePath(),
- getOrderNumber() );
+ String parentPath = getParentPath();
+
+ if ( parentPath == null ) {
+ return String.format( "%s.pattern[%s]",
+ getRulePath(),
+ getOrderNumber() );
+
+ } else {
+ return String.format( "%s.pattern[%s]",
+ getParentPath(),
+ getOrderNumber() );
+ }
}
public boolean isPatternNot() {
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java 2010-04-07 02:38:02 UTC (rev 32454)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java 2010-04-07 09:07:58 UTC (rev 32455)
@@ -42,7 +42,7 @@
@Override
public String getPath() {
return String.format( "%s.restriction[%s]",
- getPatternPath(),
+ getParentPath(),
getOrderNumber() );
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/PatternDescrVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/PatternDescrVisitor.java 2010-04-07 02:38:02 UTC (rev 32454)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/PatternDescrVisitor.java 2010-04-07 09:07:58 UTC (rev 32455)
@@ -44,19 +44,27 @@
this.rule = rule;
}
- public void visitPatternDescr(PatternDescr descr,
- VerifierComponent parent,
- int orderNumber) throws UnknownDescriptionException {
- Pattern pattern = visitPatternDescr( descr,
- orderNumber );
+ public void visit(PatternDescr descr,
+ VerifierComponent parent,
+ int orderNumber) throws UnknownDescriptionException {
+ visitPatternDescr( descr,
+ parent,
+ orderNumber );
- pattern.setParentPath( parent.getPath() );
- pattern.setParentType( parent.getVerifierComponentType() );
}
- public Pattern visitPatternDescr(PatternDescr descr,
- int orderNumber) throws UnknownDescriptionException {
+ public void visit(PatternDescr descr,
+ int orderNumber) throws UnknownDescriptionException {
+ visitPatternDescr( descr,
+ null,
+ orderNumber );
+ }
+
+ private Pattern visitPatternDescr(PatternDescr descr,
+ VerifierComponent parent,
+ int orderNumber) throws UnknownDescriptionException {
+
objectType = data.getObjectTypeByFullName( descr.getObjectType() );
if ( objectType == null ) {
@@ -72,6 +80,10 @@
}
pattern = new Pattern( rule );
+ if ( parent != null ) {
+ pattern.setParentPath( parent.getPath() );
+ pattern.setParentType( parent.getVerifierComponentType() );
+ }
pattern.setObjectTypePath( objectType.getPath() );
pattern.setName( objectType.getName() );
pattern.setPatternNot( solvers.getRuleSolver().isChildNot() );
@@ -79,8 +91,6 @@
pattern.setPatternForall( solvers.getRuleSolver().isForall() );
pattern.setOrderNumber( orderNumber );
- data.add( pattern );
-
if ( descr.getIdentifier() != null ) {
Variable variable = new Variable( rule );
variable.setName( descr.getIdentifier() );
@@ -110,6 +120,8 @@
solvers.endPatternSolver();
+ data.add( pattern );
+
return pattern;
}
@@ -237,9 +249,9 @@
rule,
solvers );
- visitor.visitPatternDescr( descr.getInputPattern(),
- collect,
- 0 );
+ visitor.visit( descr.getInputPattern(),
+ collect,
+ 0 );
collect.setParentPath( rule.getPath() );
collect.setParentType( rule.getVerifierComponentType() );
@@ -255,6 +267,7 @@
rule,
solvers );
Pattern parentPattern = visitor.visitPatternDescr( descr.getInputPattern(),
+ null,
0 );
accumulate.setInitCode( descr.getInitCode() );
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/RuleDescrVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/RuleDescrVisitor.java 2010-04-07 02:38:02 UTC (rev 32454)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/visitor/RuleDescrVisitor.java 2010-04-07 09:07:58 UTC (rev 32455)
@@ -196,8 +196,8 @@
PatternDescrVisitor visitor = new PatternDescrVisitor( data,
rule,
solvers );
- visitor.visitPatternDescr( descr,
- orderNumber.next() );
+ visitor.visit( descr,
+ orderNumber.next() );
}
private void formPossibilities() {
Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/visitor/NestedPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/visitor/NestedPatternsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/visitor/NestedPatternsTest.java 2010-04-07 09:07:58 UTC (rev 32455)
@@ -0,0 +1,70 @@
+package org.drools.verifier.visitor;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Collection;
+import java.util.Collections;
+
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.DroolsParserException;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.data.VerifierComponent;
+import org.drools.verifier.data.VerifierData;
+import org.drools.verifier.data.VerifierReportFactory;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class NestedPatternsTest {
+
+ @Test
+ public void runVisitor() throws DroolsParserException,
+ UnknownDescriptionException {
+ VerifierData data = VerifierReportFactory.newVerifierData();
+ PackageDescrVisitor visitor = new PackageDescrVisitor( data,
+ Collections.EMPTY_LIST );
+
+ Assert.assertNotNull( data );
+
+ Reader drlReader = new InputStreamReader( getClass().getResourceAsStream( "NestedPatterns.drl" ) );
+ PackageDescr packageDescr = new DrlParser().parse( drlReader );
+
+ Assert.assertNotNull( packageDescr );
+
+ visitor.visitPackageDescr( packageDescr );
+
+ Collection<VerifierComponent> all = data.getAll();
+ int patternCount = 0;
+ for ( VerifierComponent verifierComponent : all ) {
+
+ if ( verifierComponent.getVerifierComponentType().equals( VerifierComponentType.PATTERN ) ) {
+ patternCount++;
+ }
+ }
+ Assert.assertEquals( 4,
+ patternCount );
+
+ Collection<Pattern> patterns = data.getAll( VerifierComponentType.PATTERN );
+
+// for ( Pattern pattern : patterns ) {
+// System.out.println( pattern.getPath() + " " + pattern );
+// }
+
+ Assert.assertNotNull( patterns );
+ Assert.assertEquals( 4,
+ patterns.size() );
+
+ Collection<Restriction> restrictions = data.getAll( VerifierComponentType.RESTRICTION );
+
+// for ( Restriction restriction : restrictions ) {
+// System.out.println( restriction.getPath() + " " + restriction );
+// }
+
+ Assert.assertNotNull( restrictions );
+ Assert.assertEquals( 3,
+ restrictions.size() );
+
+ }
+}
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/visitor/NestedPatterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/visitor/NestedPatterns.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/visitor/NestedPatterns.drl 2010-04-07 09:07:58 UTC (rev 32455)
@@ -0,0 +1,8 @@
+rule "rule5"
+ when
+ Person( age == "150" )
+ Person (age < 90)
+ java.util.HashSet( ) from collect ( Person( age == "2010" ))
+ then
+ System.out.println("Rule fired");
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list