[jboss-svn-commits] JBL Code SVN: r31046 - in labs/jbossrules/trunk: drools-doc/src/main/java/org/drools/doc and 20 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jan 13 02:52:56 EST 2010
Author: Rikkola
Date: 2010-01-13 02:52:55 -0500 (Wed, 13 Jan 2010)
New Revision: 31046
Added:
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/MetaDataAgendaFilter.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlPackageParser.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlRuleParser.java
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/scope-knowledge-package.xml
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlPackageDataTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlRuleDataTest.java
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/DrlPackageTestData.drl
Removed:
labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlPackageData.java
labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlRuleData.java
labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlPackageDataTest.java
labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlRuleDataTest.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/DataTree.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java
Modified:
labs/jbossrules/trunk/drools-doc/.classpath
labs/jbossrules/trunk/drools-doc/.project
labs/jbossrules/trunk/drools-doc/pom.xml
labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsBuilder.java
labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsComponentFactory.java
labs/jbossrules/trunk/drools-verifier/.classpath
labs/jbossrules/trunk/drools-verifier/pom.xml
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/DefaultVerifierConfiguration.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfiguration.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfigurationImpl.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/RulePackage.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/reports/RangeCheckReports.drl
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
Log:
JBRULES-2311 : Group test rules for analysing just one rule, decision table, rule package and so on
Modified: labs/jbossrules/trunk/drools-doc/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-doc/.classpath 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/.classpath 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,18 +1,30 @@
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
- <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/bouncycastle/bcmail-jdk14/138/bcmail-jdk14-138.jar"/>
- <classpathentry kind="var" path="M2_REPO/bouncycastle/bcprov-jdk14/138/bcprov-jdk14-138.jar"/>
- <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/lowagie/itext/2.1.2/itext-2.1.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.6/junit-4.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/bouncycastle/bcmail-jdk14/138/bcmail-jdk14-138.jar"/>
+ <classpathentry kind="var" path="M2_REPO/bouncycastle/bcprov-jdk14/138/bcprov-jdk14-138.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="src" path="/drools-api"/>
+ <classpathentry kind="src" path="/drools-compiler"/>
+ <classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="src" path="/drools-verifier"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/lowagie/itext/2.1.2/itext-2.1.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.6/junit-4.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.12/mvel2-2.0.12.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-doc/.project
===================================================================
--- labs/jbossrules/trunk/drools-doc/.project 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/.project 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,13 +1,18 @@
-<projectDescription>
- <name>drools-doc</name>
- <comment>A rule production system</comment>
- <projects/>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
+<projectDescription>
+ <name>drools-doc</name>
+ <comment>A rule production system</comment>
+ <projects>
+ <project>drools-api</project>
+ <project>drools-compiler</project>
+ <project>drools-core</project>
+ <project>drools-verifier</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
</projectDescription>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-doc/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-doc/pom.xml 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/pom.xml 2010-01-13 07:52:55 UTC (rev 31046)
@@ -31,12 +31,17 @@
</build>
<dependencies>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-verifier</artifactId>
+ </dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.2</version>
</dependency>
-
+
</dependencies>
</project>
Deleted: labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlPackageData.java
===================================================================
--- labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlPackageData.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlPackageData.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,104 +0,0 @@
-package org.drools.doc;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class DrlPackageData {
- private static final String packageExpr = "(^\\s*#.*?\\n)?(^\\s*package.*?$)(.*?)";
- private static final Pattern finder = Pattern.compile( packageExpr,
- Pattern.DOTALL | Pattern.MULTILINE );
-
- private static final Pattern globalFinder = Pattern.compile( "(^\\s*global.*?$)",
- Pattern.DOTALL | Pattern.MULTILINE );
-
- final String packageName;
- final List<DrlRuleData> rules;
- final String description;
-
- public final List<String> metadata;
-
- public final Map<String, List<String>> otherInformation;
- public final List<String> globals;
-
- public DrlPackageData(String packageName,
- String description,
- List<DrlRuleData> rules,
- List<String> globals,
- List<String> metadata,
- Map<String, List<String>> otherInformation) {
- this.packageName = packageName;
- this.description = description;
- this.rules = rules;
- this.globals = globals;
- this.metadata = metadata;
- this.otherInformation = otherInformation;
- }
-
- public static DrlPackageData findPackageDataFromDrl(String drl) {
-
- final Matcher m = finder.matcher( drl );
- m.find();
-
- String packageNameRow = m.group( 2 );
-
- int indexOfPackage = packageNameRow.indexOf( "package" );
- String packageName = packageNameRow.substring( indexOfPackage + "package".length() ).trim();
-
- Comment comment = DrlRuleData.processComment( m.group( 1 ) );
-
- return new DrlPackageData( packageName,
- comment.description,
- DrlRuleData.findRulesDataFromDrl( drl ),
- findGlobals( drl ),
- comment.metadata,
- new HashMap<String, List<String>>() );
- }
-
- public static List<String> findGlobals(String drl) {
- List<String> globals = new ArrayList<String>();
- Matcher gm = globalFinder.matcher( drl );
-
- while ( gm.find() ) {
- String row = gm.group();
- globals.add( row.substring( row.indexOf( "global" ) + "global".length() ).trim() );
- }
-
- return globals;
- }
-
- static Comment processComment(String text) {
- Comment comment = new Comment();
-
- if ( text == null ) {
- comment.description = "";
- comment.metadata = new ArrayList<String>();
-
- return comment;
- }
-
- comment.description = text.replaceAll( "#",
- "" ).trim();
- comment.metadata = findMetaData( text );
-
- return comment;
- }
-
- private static List<String> findMetaData(String text) {
- List<String> list = new ArrayList<String>();
-
- while ( text.contains( "@" ) ) {
- int start = text.indexOf( '@' );
- text = text.substring( start + 1 );
- int end = text.indexOf( "\n" );
- list.add( text.substring( 0,
- end ) );
- text = text.substring( end );
- }
-
- return list;
- }
-}
Deleted: labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlRuleData.java
===================================================================
--- labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlRuleData.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlRuleData.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,167 +0,0 @@
-package org.drools.doc;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class DrlRuleData {
- private static final String rulesExpr = "(^\\s*#.*?\\n)?(^\\s*rule.*?$)(.*?)(when)(.*?)(then)(.*?)(^\\s*end)";
-
- private static final Pattern finder = Pattern.compile( rulesExpr,
- Pattern.DOTALL | Pattern.MULTILINE );
-
- public final Collection<String> header;
- public final Collection<String> lhs;
- public final Collection<String> rhs;
-
- public final String ruleName;
-
- public final String description;
-
- public final Collection<String> metadata;
-
- public final Map<String, List<String>> otherInformation;
-
- private DrlRuleData(String ruleName,
- String header,
- String lhs,
- String rhs,
- String description,
- List<String> metadata,
- Map<String, List<String>> otherInformation) {
- this.ruleName = ruleName;
- this.header = asList( header.split( "\n" ) );
- this.lhs = asList( lhs.split( "\n" ) );
- this.rhs = asList( rhs.split( "\n" ) );
- this.description = description;
- this.metadata = metadata;
- this.otherInformation = otherInformation;
- }
-
- private Collection<String> asList(String[] array) {
- Collection<String> list = new ArrayList<String>();
-
- for ( int i = 0; i < array.length; i++ ) {
- String string = array[i];
- if ( !string.trim().equals( "" ) ) {
- list.add( string );
- }
- }
-
- return list;
- }
-
- public static List<DrlRuleData> findRulesDataFromDrl(String drl) {
- final Matcher m = finder.matcher( drl );
- final List<DrlRuleData> list = new ArrayList<DrlRuleData>();
-
- while ( m.find() ) {
-
- // System.out.println( "1 " + m.group( 1 ) );
- // System.out.println( "2 " + m.group( 2 ) );
- // System.out.println( "3 " + m.group( 3 ) );
- // System.out.println( "4 " + m.group( 4 ) );
- // System.out.println( "5 " + m.group( 5 ) );
- // System.out.println( "6 " + m.group( 6 ) );
- // System.out.println( "7 " + m.group( 7 ) );
-
- Comment comment = processComment( m.group( 1 ) );
-
- String ruleName = m.group( 2 );
-
- ruleName = trimRuleName( ruleName );
-
- list.add( new DrlRuleData( ruleName,
- m.group( 3 ),
- m.group( 5 ),
- m.group( 7 ),
- comment.description,
- comment.metadata,
- new HashMap<String, List<String>>() ) );
- }
-
- return list;
- }
-
- private static String trimRuleName(String ruleName) {
- ruleName = ruleName.substring( ruleName.indexOf( "rule" ) + "rule".length() ).trim();
-
- if ( ruleName.indexOf( "\"" ) == 0 ) {
- ruleName = ruleName.substring( 1 );
- }
-
- if ( ruleName.lastIndexOf( "\"" ) == (ruleName.length() - 1) ) {
- ruleName = ruleName.substring( 0,
- ruleName.length() - 1 );
- }
-
- return ruleName;
- }
-
- static Comment processComment(String text) {
- Comment comment = new Comment();
-
- if ( text == null ) {
- comment.description = "";
- comment.metadata = new ArrayList<String>();
-
- return comment;
- }
-
- // Sometimes the first rule in a file gets the package imports and
- // comments included.
- // Checking for that and fixing the description if this did happen.
-
- StringBuilder description = new StringBuilder();
- String[] commentLines = text.split( "\n" );
- for ( int i = 0; i < commentLines.length; i++ ) {
- String line = commentLines[i].trim();
-
- if ( line.startsWith( "#" ) ) {
- while ( line.startsWith( "#" ) ) {
- line = line.substring( 1 );
- }
-
- line = line.trim();
-
- if ( !line.startsWith( "@" ) ) {
- description.append( line );
- description.append( "\n" );
- }
- } else {
- description.delete( 0,
- description.length() );
- }
-
- }
- comment.description = description.toString();
-
- comment.metadata = findMetaData( text );
-
- return comment;
- }
-
- private static List<String> findMetaData(String text) {
- List<String> list = new ArrayList<String>();
-
- while ( text.contains( "@" ) ) {
- int start = text.indexOf( '@' );
- text = text.substring( start + 1 );
- int end = text.indexOf( "\n" );
- list.add( text.substring( 0,
- end ) );
- text = text.substring( end );
- }
-
- return list;
- }
-}
-
-class Comment {
- String description;
- List<String> metadata;
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsBuilder.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsBuilder.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -5,6 +5,10 @@
import java.text.SimpleDateFormat;
import java.util.Date;
+import org.drools.verifier.misc.DrlPackageParser;
+import org.drools.verifier.misc.DrlRuleParser;
+
+
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
@@ -25,13 +29,13 @@
return new SimpleDateFormat( getDateFormatMask() );
}
- private final DrlPackageData packageData;
+ private final DrlPackageParser packageData;
protected DroolsDocsBuilder(String packageDrl) {
- this.packageData = DrlPackageData.findPackageDataFromDrl( packageDrl );
+ this.packageData = DrlPackageParser.findPackageDataFromDrl( packageDrl );
}
- protected DroolsDocsBuilder(DrlPackageData packageData) {
+ protected DroolsDocsBuilder(DrlPackageParser packageData) {
this.packageData = packageData;
}
@@ -39,7 +43,7 @@
return new DroolsDocsBuilder( packageDrl );
}
- public static DroolsDocsBuilder getInstance(DrlPackageData packageData) {
+ public static DroolsDocsBuilder getInstance(DrlPackageParser packageData) {
return new DroolsDocsBuilder( packageData );
}
@@ -53,11 +57,11 @@
PdfWriter.getInstance( document,
out );
- HeaderFooter footer = DroolsDocsComponentFactory.createFooter( packageData.packageName );
+ HeaderFooter footer = DroolsDocsComponentFactory.createFooter( packageData.getName() );
document.setFooter( footer );
- document.addTitle( packageData.packageName.toUpperCase() );
+ document.addTitle( packageData.getName().toUpperCase() );
document.open();
// First page, documentation info.
@@ -69,13 +73,13 @@
// List index of the rules
document.add( new Phrase( "Table of Contents" ) );
- document.add( DroolsDocsComponentFactory.createContents( packageData.rules ) );
+ document.add( DroolsDocsComponentFactory.createContents( packageData.getRules() ) );
document.newPage();
- for ( DrlRuleData ruleData : packageData.rules ) {
+ for ( DrlRuleParser ruleData : packageData.getRules() ) {
DroolsDocsComponentFactory.newRulePage( document,
- packageData.packageName,
+ packageData.getName(),
ruleData );
}
Modified: labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsComponentFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsComponentFactory.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DroolsDocsComponentFactory.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -4,6 +4,10 @@
import java.util.Collection;
import java.util.Map;
+import org.drools.verifier.misc.DrlPackageParser;
+import org.drools.verifier.misc.DrlRuleParser;
+
+
import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Chunk;
@@ -87,7 +91,7 @@
}
}
- public static Table newRuleTable(DrlRuleData drl) throws BadElementException,
+ public static Table newRuleTable(DrlRuleParser drl) throws BadElementException,
DocumentException {
Table table = newTable();
@@ -95,19 +99,19 @@
CATEGORIES_TEXT );
table.addCell( headerCell );
- for ( String s : drl.header ) {
+ for ( String s : drl.getHeader() ) {
table.addCell( newCell( INDENT + s.trim() ) );
}
table.addCell( newHeaderCell( INDENT + "WHEN",
BODY_TEXT ) );
- for ( String s : drl.lhs ) {
+ for ( String s : drl.getLhs() ) {
table.addCell( newCell( INDENT + INDENT + s.trim() ) );
}
table.addCell( newHeaderCell( INDENT + "THEN",
BODY_TEXT ) );
- for ( String s : drl.rhs ) {
+ for ( String s : drl.getRhs() ) {
table.addCell( newCell( INDENT + INDENT + s.trim() ) );
}
// table.addCell( newEmptyWhenThenCell( "END" ) );
@@ -135,11 +139,11 @@
return table;
}
- public static List createContents(java.util.List<DrlRuleData> rules) {
+ public static List createContents(java.util.List<DrlRuleParser> rules) {
List index = new List( true );
- for ( DrlRuleData drlRuleData : rules ) {
- Chunk chunk = new Chunk( drlRuleData.ruleName );
+ for ( DrlRuleParser drlRuleData : rules ) {
+ Chunk chunk = new Chunk( drlRuleData.getName() );
// chunk.setLocalGoto( item.getName() );
ListItem listItem = new ListItem( chunk );
index.add( listItem );
@@ -181,46 +185,46 @@
public static void newRulePage(Document document,
String packageName,
- DrlRuleData drlData) throws DocumentException {
+ DrlRuleParser drlData) throws DocumentException {
document.add( new Paragraph( packageName,
PACKAGE_NAME ) );
- document.add( new Paragraph( "Rule " + drlData.ruleName,
+ document.add( new Paragraph( "Rule " + drlData.getName(),
CHAPTER_TITLE ) );
// Extends
- int index = drlData.ruleName.lastIndexOf( "extends" );
+ int index = drlData.getName().lastIndexOf( "extends" );
if ( index > 0 ) {
document.add( new Paragraph( "Extends:",
BODY_TEXT ) );
- Paragraph ext = new Paragraph( drlData.ruleName.substring( "extends".length() + index ),
+ Paragraph ext = new Paragraph( drlData.getName().substring( "extends".length() + index ),
BODY_TEXT );
ext.setIndentationLeft( INTENTATION_LEFT );
document.add( ext );
}
// Description
- document.add( newDescription( drlData.description ) );
+ document.add( newDescription( drlData.getDescription() ) );
// DRL
document.add( newRuleTable( drlData ) );
// Meta data
document.add( newTable( "Meta Data",
- drlData.metadata ) );
+ drlData.getMetadata() ) );
// Other
createOtherItems( document,
- drlData.otherInformation );
+ drlData.getOtherInformation() );
document.newPage();
}
public static void createFirstPage(Document document,
String currentDate,
- DrlPackageData packageData) throws DocumentException {
- Paragraph title = new Paragraph( "\n\n\n\n\n" + packageData.packageName.toUpperCase(),
+ DrlPackageParser packageData) throws DocumentException {
+ Paragraph title = new Paragraph( "\n\n\n\n\n" + packageData.getName().toUpperCase(),
RULE_PACKAGE_TITLE );
title.setAlignment( Element.ALIGN_CENTER );
document.add( title );
@@ -230,14 +234,14 @@
date.setAlignment( Element.ALIGN_CENTER );
document.add( date );
- document.add( new Paragraph( "\n\n\n\n\n" + packageData.description,
+ document.add( new Paragraph( "\n\n\n\n\n" + packageData.getDescription(),
BODY_TEXT ) );
document.add( newTable( "Meta Data ",
- packageData.metadata ) );
+ packageData.getMetadata() ) );
document.add( newTable( "Globals ",
- packageData.globals ) );
+ packageData.getGlobals() ) );
createOtherItems( document,
- packageData.otherInformation );
+ packageData.getOtherInformation() );
}
}
Deleted: labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlPackageDataTest.java
===================================================================
--- labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlPackageDataTest.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlPackageDataTest.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,80 +0,0 @@
-package org.drools.doc;
-
-import java.util.List;
-
-import junit.framework.TestCase;
-
-public class DrlPackageDataTest extends TestCase {
- public void testHandleDrl() {
-
- String rule1 = "";
- rule1 += "package org.drools.test\n";
- rule1 += "global java.util.List list\n";
- rule1 += "rule rule1\n";
- rule1 += "when\n";
- rule1 += "then\n";
- rule1 += "list.add( drools.getRule().getName() );\n";
- rule1 += "end\n";
- rule1 += "rule rule2\n";
- rule1 += "when\n";
- rule1 += "then\n";
- rule1 += "list.add( drools.getRule().getName() );\n";
- rule1 += "end\n";
-
- DrlPackageData s = DrlPackageData.findPackageDataFromDrl(rule1);
-
- assertEquals("org.drools.test", s.packageName);
- assertEquals(2, s.rules.size());
- assertEquals("", s.description);
-
- }
-
- public void testHandleDrlWithComments() {
-
- String rule1 = "";
- rule1 += "# important information\n";
- rule1 += "# about this package\n";
- rule1 += "# it contains some rules\n";
- rule1 += "package org.drools.test\n";
- rule1 += "global java.util.List list\n";
- rule1 += "rule rule1\n";
- rule1 += " when\n";
- rule1 += " then\n";
- rule1 += " list.add( drools.getRule().getName() );\n";
- rule1 += "end\n";
- rule1 += "rule rule2\n";
- rule1 += " when\n";
- rule1 += " then\n";
- rule1 += " list.add( drools.getRule().getName() );\n";
- rule1 += "end\n";
-
- DrlPackageData data = DrlPackageData.findPackageDataFromDrl(rule1);
-
- assertEquals("org.drools.test", data.packageName);
- assertEquals(2, data.rules.size());
- assertEquals(1, data.globals.size());
- assertEquals("java.util.List list", data.globals.get(0));
- assertEquals(
- "important information\nabout this package\nit contains some rules\n",
- data.description);
-
- DrlRuleData rd1 = data.rules.get(0);
- assertEquals("rule1", rd1.ruleName);
- assertEquals("", rd1.description);
-
- DrlRuleData rd2 = data.rules.get(1);
- assertEquals("rule2", rd2.ruleName);
- assertEquals("", rd2.description);
- }
-
- public void testfindGlobals() {
-
- String header = "global LoanApplication gg";
-
- List<String> globals = DrlPackageData.findGlobals(header);
-
- assertEquals(1, globals.size());
- assertEquals("LoanApplication gg", globals.get(0));
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlRuleDataTest.java
===================================================================
--- labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlRuleDataTest.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-doc/src/test/java/org/drools/doc/DrlRuleDataTest.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,133 +0,0 @@
-package org.drools.doc;
-
-import java.util.List;
-
-import junit.framework.TestCase;
-
-public class DrlRuleDataTest extends TestCase {
- public void testHandleDrl() {
- String drl = "rule \"Something\" \n ";
- drl += "dialect \"Java\" \n ";
- drl += " when \n ";
- drl += " Person() \n ";
- drl += " Cheesery() \n ";
- drl += " then \n ";
- drl += " insert( new Person()) \n ";
- drl += " insert( new Car()) \n ";
- drl += " insert( new Cheese()) \n ";
- drl += "end ";
-
- DrlRuleData s = DrlRuleData.findRulesDataFromDrl(drl).get(0);
-
- assertEquals(1, s.header.size());
- assertEquals(2, s.lhs.size());
- assertEquals(3, s.rhs.size());
- assertEquals("", s.description);
-
- }
-
- public void testHandleDrlNoLineBreaks() {
- String drl = "rule \"CreditScoreApproval\" \n";
- drl += " dialect \"mvel\" \n";
- drl += " when then";
- drl += " applicant.setApproved(true) \n";
- drl += " applicant.setName( \"Toni\" ) \n";
- drl += " applicant.setAge( 10 ) \n";
- drl += "end";
- DrlRuleData s = DrlRuleData.findRulesDataFromDrl(drl).get(0);
-
- assertNotNull(s);
-
- assertEquals(1, s.header.size());
- assertEquals(0, s.lhs.size());
- assertEquals(3, s.rhs.size());
- assertEquals("", s.description);
-
- }
-
- public void testHandleDrlWithComment() {
- String drl = "# Really important information about this rule \n";
- drl += "# Another line because one was not enough \n";
- drl += "# \n";
- drl += "# @author: trikkola \n";
- drl += "rule \"First\" \n";
- drl += " dialect \"mvel\" \n";
- drl += " when \n ";
- drl += " Person() \n ";
- drl += " Cheesery() \n ";
- drl += " then \n ";
- drl += " applicant.setApproved(true) \n";
- drl += " applicant.setName( \"Toni\" ) \n";
- drl += " applicant.setAge( 10 ) \n";
- drl += "end \n";
- drl += "\n";
- drl += "# Really important information about this rule \n";
- drl += "# Another line because one was not enough \n";
- drl += "# \n";
- drl += "# @author: trikkola \n";
- drl += "# @created: 29.12.2001 \n";
- drl += "# @edited: 5.5.2005 \n";
- drl += "rule \"Second\" \n";
- drl += " dialect \"mvel\" \n";
- drl += " when \n ";
- drl += " Person() \n ";
- drl += " Cheesery() \n ";
- drl += " then \n ";
- drl += " applicant.setApproved(true) \n";
- drl += " applicant.setName( \"Toni\" ) \n";
- drl += " applicant.setAge( 10 ) \n";
- drl += "end";
- drl += "\n";
- drl += "rule \"Third\" \n";
- drl += " dialect \"mvel\" \n";
- drl += " when \n ";
- drl += " Person() \n ";
- drl += " Cheesery() \n ";
- drl += " then \n ";
- drl += " applicant.setApproved(true) \n";
- drl += " applicant.setName( \"Toni\" ) \n";
- drl += " applicant.setAge( 10 ) \n";
- drl += "end";
-
- List<DrlRuleData> list = DrlRuleData.findRulesDataFromDrl(drl);
-
- assertEquals(3, list.size());
-
- DrlRuleData rd = list.get(0);
-
- assertNotNull(rd);
-
- assertEquals(1, rd.header.size());
- assertEquals(2, rd.lhs.size());
- assertEquals(3, rd.rhs.size());
- assertEquals(1, rd.metadata.size());
- assertNotNull(rd.description);
- assertNotSame("", rd.description);
-
- DrlRuleData rd2 = list.get(1);
-
- assertNotNull(rd2);
-
- assertEquals(1, rd2.header.size());
- assertEquals(2, rd2.lhs.size());
- assertEquals(3, rd2.rhs.size());
- assertEquals(3, rd2.metadata.size());
- assertNotNull(rd2.description);
-
- String description = "Really important information about this rule\n";
- description += "Another line because one was not enough\n\n";
-
- assertEquals(description, rd2.description);
- assertNotSame("", rd2.description);
-
- DrlRuleData rd3 = list.get(2);
-
- assertNotNull(rd3);
-
- assertEquals(1, rd3.header.size());
- assertEquals(2, rd3.lhs.size());
- assertEquals(3, rd3.rhs.size());
- assertNotNull(rd3.description);
- assertEquals("", rd3.description);
- }
-}
Modified: labs/jbossrules/trunk/drools-verifier/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-verifier/.classpath 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/.classpath 2010-01-13 07:52:55 UTC (rev 31046)
@@ -11,6 +11,7 @@
<classpathentry kind="src" path="/drools-api"/>
<classpathentry kind="src" path="/drools-compiler"/>
<classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
Modified: labs/jbossrules/trunk/drools-verifier/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-verifier/pom.xml 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/pom.xml 2010-01-13 07:52:55 UTC (rev 31046)
@@ -42,6 +42,12 @@
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>com.google.collections</groupId>
+ <artifactId>google-collections</artifactId>
+ <version>0.8</version>
+ </dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/DefaultVerifierConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/DefaultVerifierConfiguration.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/DefaultVerifierConfiguration.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,11 +1,18 @@
package org.drools.verifier;
-import org.drools.verifier.misc.RuleLoader;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
public class DefaultVerifierConfiguration extends VerifierConfigurationImpl {
public DefaultVerifierConfiguration() {
- verifyingResources.putAll( RuleLoader.basicRulesForFullKnowledgeBase() );
+ verifyingResources.put( ResourceFactory.newClassPathResource( "scope-knowledge-package.xml",
+ getClass() ),
+ ResourceType.CHANGE_SET );
+ // verifyingResources.putAll( RuleLoader.basicRulesForFullKnowledgeBase( getClass() ) );
+ verifyingScopes.add( VERIFYING_SCOPE_SINGLE_RULE );
+ verifyingScopes.add( VERIFYING_SCOPE_DECISION_TABLE );
+ verifyingScopes.add( VERIFYING_SCOPE_KNOWLEDGE_PACKAGE );
}
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfiguration.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfiguration.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,5 +1,6 @@
package org.drools.verifier;
+import java.util.List;
import java.util.Map;
import org.drools.PropertiesConfiguration;
@@ -10,6 +11,10 @@
extends
PropertiesConfiguration {
+ public final static String VERIFYING_SCOPE_SINGLE_RULE = "single-rule";
+ public final static String VERIFYING_SCOPE_DECISION_TABLE = "decision-table";
+ public final static String VERIFYING_SCOPE_KNOWLEDGE_PACKAGE = "knowledge-package";
+
/**
* Add external analyzing rules to verifier.
*
@@ -19,4 +24,20 @@
* the resource type
*/
Map<Resource, ResourceType> getVerifyingResources();
+
+ /**
+ * Set verifying scope.<br>
+ * <br>
+ * single-rule - Verifies an single rule <br>
+ * decision-table - Verifies a decision table <br>
+ * knowledge-package - Verifies everything
+ *
+ */
+ public void addVerifyingScopes(String scope);
+
+ public List<String> getVerifyingScopes();
+
+ public void setAcceptRulesWithoutVerifiyingScope(boolean accept);
+
+ public boolean acceptRulesWithoutVerifiyingScope();
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfigurationImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfigurationImpl.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/VerifierConfigurationImpl.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -2,6 +2,8 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
import org.drools.builder.ResourceType;
import org.drools.io.Resource;
@@ -10,9 +12,12 @@
implements
VerifierConfiguration {
- protected Map<Resource, ResourceType> verifyingResources = new HashMap<Resource, ResourceType>();
- private Map<String, String> properties = new HashMap<String, String>();
+ protected Map<Resource, ResourceType> verifyingResources = new HashMap<Resource, ResourceType>();
+ private Map<String, String> properties = new HashMap<String, String>();
+ protected final List<String> verifyingScopes = new ArrayList<String>();
+ private boolean acceptRuleWithoutVerifyingScope = true;
+
public String getProperty(String name) {
return properties.get( name );
}
@@ -27,4 +32,20 @@
return verifyingResources;
}
+ public List<String> getVerifyingScopes() {
+ return verifyingScopes;
+ }
+
+ public void addVerifyingScopes(String scope) {
+ this.verifyingScopes.add( scope );
+ }
+
+ public boolean acceptRulesWithoutVerifiyingScope() {
+ return this.acceptRuleWithoutVerifyingScope;
+ }
+
+ public void setAcceptRulesWithoutVerifiyingScope(boolean accept) {
+ acceptRuleWithoutVerifyingScope = accept;
+ }
+
}
Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/MetaDataAgendaFilter.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/MetaDataAgendaFilter.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/MetaDataAgendaFilter.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,54 @@
+package org.drools.verifier.builder;
+
+import java.util.Collection;
+
+import org.drools.runtime.rule.Activation;
+import org.drools.runtime.rule.AgendaFilter;
+
+/**
+ *
+ * @author rikkola
+ *
+ */
+public class MetaDataAgendaFilter
+ implements
+ AgendaFilter {
+
+ private final boolean acceptEmpty;
+ private final String metadata;
+
+ private final Collection<String> validValues;
+
+ /**
+ *
+ * @param acceptEmpty true accepts rules that do not have metadata set.
+ * @param metadata Name of the meta data.
+ * @param validValues Valid values that the meta data can have.
+ */
+ public MetaDataAgendaFilter(boolean acceptEmpty,
+ String metadata,
+ Collection<String> validValues) {
+ this.acceptEmpty = acceptEmpty;
+ this.metadata = metadata;
+ this.validValues = validValues;
+ }
+
+ public boolean accept(Activation activation) {
+ if ( acceptEmpty && activation.getRule().listMetaAttributes().isEmpty() ) {
+ return true;
+ }
+
+ if ( activation.getRule().listMetaAttributes().contains( metadata ) ) {
+ String[] values = activation.getRule().getMetaAttribute( metadata ).split( "," );
+
+ for ( String value : values ) {
+ if ( validValues.contains( value.trim() ) ) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,11 +1,15 @@
package org.drools.verifier.builder;
+import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
@@ -16,10 +20,13 @@
import org.drools.verifier.Verifier;
import org.drools.verifier.VerifierConfiguration;
import org.drools.verifier.VerifierError;
+import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.VerifierRule;
import org.drools.verifier.data.VerifierReport;
import org.drools.verifier.data.VerifierReportFactory;
+import org.drools.verifier.misc.DrlPackageParser;
+import org.drools.verifier.misc.DrlRuleParser;
import org.drools.verifier.misc.PackageDescrVisitor;
-import org.drools.verifier.misc.RuleLoader;
/**
* This is the main user class for verifier. This will use rules to validate
@@ -102,7 +109,9 @@
// Object that returns the results.
ksession.setGlobal( "result",
result );
- ksession.fireAllRules();
+ ksession.fireAllRules( new MetaDataAgendaFilter( conf.acceptRulesWithoutVerifiyingScope(),
+ "verifying_scopes",
+ conf.getVerifyingScopes() ) );
} catch ( Throwable t ) {
t.printStackTrace();
@@ -134,7 +143,20 @@
verifierKnowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
- verifierKnowledgeBase.addKnowledgePackages( RuleLoader.loadPackages( conf.getVerifyingResources() ) );
+ KnowledgeBuilderConfiguration kbuilderConfiguration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
+ kbuilderConfiguration.setProperty( "drools.dialect.java.compiler",
+ "JANINO" );
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder( kbuilderConfiguration );
+
+ if ( conf.getVerifyingResources() != null ) {
+ for ( Resource resource : conf.getVerifyingResources().keySet() ) {
+ kbuilder.add( resource,
+ conf.getVerifyingResources().get( resource ) );
+ }
+ }
+
+ verifierKnowledgeBase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
}
/*
@@ -158,9 +180,28 @@
try {
+ BufferedReader reader = new BufferedReader( resource.getReader() );
+
+ StringBuffer drl = new StringBuffer( "" );
+ String line = null;
+ do {
+ line = reader.readLine();
+ if ( line != null ) {
+ drl.append( line );
+ drl.append( "\n" );
+
+ }
+ } while ( line != null );
+
PackageDescr pkg = p.parse( resource.getInputStream() );
+
addPackageDescr( pkg );
+ // TODO: Move this into a method
+ addDrlData( drl.toString() );
+
+ reader.close();
+
} catch ( DroolsParserException e ) {
errors.add( new VerifierError( e.getMessage() ) );
} catch ( IOException e ) {
@@ -169,6 +210,36 @@
}
}
+ /**
+ *
+ * Adds meta data from DRL to package and rule.
+ *
+ * @param drl Package DRL
+ */
+ private void addDrlData(String drl) {
+
+ DrlPackageParser pData = DrlPackageParser.findPackageDataFromDrl( drl );
+
+ RulePackage rPackage = this.result.getVerifierData().getPackageByName( pData.getName() );
+
+ rPackage.getGlobals().addAll( pData.getGlobals() );
+ rPackage.setDescription( pData.getDescription() );
+ rPackage.getMetadata().addAll( pData.getMetadata() );
+ rPackage.getOtherInfo().putAll( pData.getOtherInformation() );
+
+ for ( DrlRuleParser rData : pData.getRules() ) {
+ VerifierRule rule = this.result.getVerifierData().getRuleByName( rData.getName() );
+
+ rule.getHeader().addAll( rData.getHeader() );
+ rule.getLhsRows().addAll( rData.getLhs() );
+ rule.getRhsRows().addAll( rData.getRhs() );
+ rule.setDescription( rData.getDescription() );
+ rule.getCommentMetadata().addAll( rData.getMetadata() );
+ rule.getOtherInfo().putAll( rData.getOtherInformation() );
+
+ }
+ }
+
public List<VerifierError> getErrors() {
return errors;
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/RulePackage.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/RulePackage.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/RulePackage.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,6 +1,10 @@
package org.drools.verifier.components;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -9,9 +13,13 @@
*/
public class RulePackage extends PackageComponent {
- private int offset = 0;
- private String name;
- private Set<VerifierRule> rules = new HashSet<VerifierRule>();
+ private int offset = 0;
+ private String name;
+ private Set<VerifierRule> rules = new HashSet<VerifierRule>();
+ private List<String> globals = new ArrayList<String>();
+ private String description;
+ private List<String> metadata = new ArrayList<String>();
+ private Map<String, List<String>> otherInfo = new HashMap<String, List<String>>();
public int getOffset() {
offset++;
@@ -37,4 +45,24 @@
public VerifierComponentType getVerifierComponentType() {
return VerifierComponentType.RULE_PACKAGE;
}
+
+ public List<String> getGlobals() {
+ return globals;
+ }
+
+ public List<String> getMetadata() {
+ return metadata;
+ }
+
+ public Map<String, List<String>> getOtherInfo() {
+ return otherInfo;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,6 +1,9 @@
package org.drools.verifier.components;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.drools.verifier.components.Consequence.ConsequenceType;
@@ -15,14 +18,28 @@
implements
Cause {
- private Map<String, String> attributes = new HashMap<String, String>();
+ private Map<String, String> attributes = new HashMap<String, String>();
- private String consequenceGuid;
- private ConsequenceType consequenceType;
- private int lineNumber;
+ private String consequenceGuid;
+ private ConsequenceType consequenceType;
+ private int lineNumber;
- private int packageId;
+ private int packageId;
+ private Collection<String> header = new ArrayList<String>();
+
+ private Collection<String> lhsRows = new ArrayList<String>();
+
+ private Collection<String> rhsRows = new ArrayList<String>();
+
+ private String description;
+
+ private Map<String, String> metadata = new HashMap<String, String>();
+
+ private Collection<String> commentMetadata = new ArrayList<String>();
+
+ private Map<String, List<String>> otherInfo = new HashMap<String, List<String>>();
+
public CauseType getCauseType() {
return CauseType.RULE;
}
@@ -75,4 +92,36 @@
public VerifierComponentType getVerifierComponentType() {
return VerifierComponentType.RULE;
}
+
+ public Collection<String> getHeader() {
+ return header;
+ }
+
+ public Collection<String> getLhsRows() {
+ return lhsRows;
+ }
+
+ public Collection<String> getRhsRows() {
+ return rhsRows;
+ }
+
+ public Map<String, String> getMetadata() {
+ return metadata;
+ }
+
+ public Collection<String> getCommentMetadata() {
+ return commentMetadata;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public Map<String, List<String>> getOtherInfo() {
+ return otherInfo;
+ }
}
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/DataTree.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/DataTree.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/DataTree.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,64 +0,0 @@
-package org.drools.verifier.data;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-public class DataTree<K, V> {
- private Map<K, Set<V>> map = new TreeMap<K, Set<V>>();
-
- public void put(K key, V value) {
- if (map.containsKey(key)) {
- Set<V> set = map.get(key);
- set.add(value);
- } else {
- Set<V> set = new TreeSet<V>();
- set.add(value);
- map.put(key, set);
- }
- }
-
- public Set<K> keySet() {
- return map.keySet();
- }
-
- public Set<V> getBranch(K key) {
- Set<V> set = map.get(key);
- if (set != null) {
- return set;
- } else {
- return Collections.emptySet();
- }
- }
-
- public Collection<V> values() {
- Collection<V> values = new ArrayList<V>();
-
- for (Set<V> set : map.values()) {
- for (V value : set) {
- values.add(value);
- }
- }
-
- return values;
- }
-
- public boolean remove(K key, V value) {
- Set<V> set = map.get(key);
-
- if (set != null) {
- return set.remove(value);
- } else {
- return false;
- }
- }
-
- @Override
- public String toString() {
- return values().toString();
- }
-}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -36,6 +36,8 @@
public RulePackage getPackageByName(String name);
+ public VerifierRule getRuleByName(String name);
+
public Collection<VerifierRule> getRulesByFieldId(String guid);
public Collection<VerifierRule> getRulesByObjectTypeId(String guid);
@@ -46,4 +48,5 @@
public VerifierEntryPointDescr getEntryPointByEntryId(String entryId);
+ public Collection<VerifierRule> getRulesByCategoryName(String categoryName);
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -2,27 +2,17 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import javax.net.ssl.KeyStoreBuilderParameters;
-
import org.drools.ClassObjectFilter;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
-import org.drools.builder.ResourceType;
import org.drools.definition.KnowledgePackage;
-import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.verifier.components.Field;
import org.drools.verifier.components.FieldObjectTypeLink;
import org.drools.verifier.components.ObjectType;
-import org.drools.verifier.components.Pattern;
import org.drools.verifier.components.Restriction;
import org.drools.verifier.components.RulePackage;
import org.drools.verifier.components.Variable;
@@ -129,4 +119,14 @@
return null;
}
+ public VerifierRule getRuleByName(String name) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Collection<VerifierRule> getRulesByCategoryName(String categoryName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -19,6 +19,9 @@
import org.drools.verifier.components.VerifierEntryPointDescr;
import org.drools.verifier.components.VerifierRule;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.TreeMultimap;
+
/**
*
* @author Toni Rikkola
@@ -32,18 +35,20 @@
private Map<String, RulePackage> packagesByName = new TreeMap<String, RulePackage>();
private Map<String, ObjectType> objectTypesByName = new TreeMap<String, ObjectType>();
private Map<String, Field> fieldsByObjectTypeAndFieldName = new TreeMap<String, Field>();
- private DataTree<String, Field> fieldsByObjectTypeId = new DataTree<String, Field>();
+ private Multimap<String, Field> fieldsByObjectTypeId = new TreeMultimap<String, Field>();
private Map<String, FieldObjectTypeLink> fieldObjectTypeLinkByPath = new TreeMap<String, FieldObjectTypeLink>();
- private DataTree<String, Pattern> patternsByObjectTypeId = new DataTree<String, Pattern>();
- private DataTree<String, Pattern> patternsByRuleName = new DataTree<String, Pattern>();
- private DataTree<String, Restriction> restrictionsByFieldId = new DataTree<String, Restriction>();
+ private Multimap<String, Pattern> patternsByObjectTypeId = new TreeMultimap<String, Pattern>();
+ private Multimap<String, Pattern> patternsByRuleName = new TreeMultimap<String, Pattern>();
+ private Multimap<String, Restriction> restrictionsByFieldId = new TreeMultimap<String, Restriction>();
private Map<String, Variable> variablesByRuleAndVariableName = new TreeMap<String, Variable>();
private Map<String, VerifierEntryPointDescr> entryPointsByEntryId = new TreeMap<String, VerifierEntryPointDescr>();
+ private Map<String, VerifierRule> rulesByName = new TreeMap<String, VerifierRule>();
+ private Multimap<String, VerifierRule> rulesByCategory = new TreeMultimap<String, VerifierRule>();
public Collection<ObjectType> getObjectTypesByRuleName(String ruleName) {
Set<ObjectType> set = new HashSet<ObjectType>();
- for ( Pattern pattern : patternsByRuleName.getBranch( ruleName ) ) {
+ for ( Pattern pattern : patternsByRuleName.get( ruleName ) ) {
ObjectType objectType = (ObjectType) getVerifierObject( VerifierComponentType.OBJECT_TYPE,
pattern.getObjectTypeGuid() );
set.add( objectType );
@@ -82,13 +87,13 @@
}
public Collection<Field> getFieldsByObjectTypeId(String id) {
- return fieldsByObjectTypeId.getBranch( id );
+ return fieldsByObjectTypeId.get( id );
}
public Collection<VerifierRule> getRulesByObjectTypeId(String id) {
Set<VerifierRule> rules = new HashSet<VerifierRule>();
- for ( Pattern pattern : patternsByObjectTypeId.getBranch( id ) ) {
+ for ( Pattern pattern : patternsByObjectTypeId.get( id ) ) {
rules.add( (VerifierRule) getVerifierObject( VerifierComponentType.RULE,
pattern.getRuleGuid() ) );
@@ -101,7 +106,7 @@
Set<VerifierRule> rules = new HashSet<VerifierRule>();
- for ( Restriction restriction : restrictionsByFieldId.getBranch( id ) ) {
+ for ( Restriction restriction : restrictionsByFieldId.get( id ) ) {
rules.add( (VerifierRule) getVerifierObject( VerifierComponentType.RULE,
restriction.getRuleGuid() ) );
@@ -115,7 +120,7 @@
}
public Collection<Restriction> getRestrictionsByFieldGuid(String id) {
- return restrictionsByFieldId.getBranch( id );
+ return restrictionsByFieldId.get( id );
}
public void add(VerifierComponent object) {
@@ -128,6 +133,14 @@
fieldsByObjectTypeId.put( field.getObjectTypeGuid(),
field );
+ } else if ( VerifierComponentType.RULE.equals( object.getVerifierComponentType() ) ) {
+ VerifierRule rule = (VerifierRule) object;
+ rulesByName.put( rule.getRuleName(),
+ rule );
+ if ( rule.getMetadata().containsKey( "category" ) ) {
+ rulesByCategory.put( rule.getMetadata().get( "category" ),
+ rule );
+ }
} else if ( VerifierComponentType.VARIABLE.equals( object.getVerifierComponentType() ) ) {
Variable variable = (Variable) object;
variablesByRuleAndVariableName.put( variable.getRuleName() + "." + variable.getName(),
@@ -176,6 +189,10 @@
}
+ public Collection<VerifierRule> getRulesByCategoryName(String categoryName) {
+ return rulesByCategory.get( categoryName );
+ }
+
// public <T extends VerifierComponent> Collection<T> getAll(VerifierComponentType type) {
public Collection< ? extends VerifierComponent> getAll(VerifierComponentType type) {
return all.get( type ).values();
@@ -192,4 +209,8 @@
return entryPointsByEntryId.get( entryId );
}
+ public VerifierRule getRuleByName(String name) {
+ return rulesByName.get( name );
+ }
+
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -13,6 +13,9 @@
import org.drools.verifier.report.components.Severity;
import org.drools.verifier.report.components.VerifierMessageBase;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.TreeMultimap;
+
/**
*
* @author Toni Rikkola
@@ -23,12 +26,12 @@
private static final long serialVersionUID = -6207688526236713721L;
private Map<String, Gap> gapsById = new TreeMap<String, Gap>();
- private DataTree<String, Gap> gapsByFieldId = new DataTree<String, Gap>();
+ private Multimap<String, Gap> gapsByFieldId = new TreeMultimap<String, Gap>();
private Map<String, MissingNumberPattern> missingNumberPatternsById = new TreeMap<String, MissingNumberPattern>();
- private DataTree<String, MissingNumberPattern> missingNumberPatternsByFieldId = new DataTree<String, MissingNumberPattern>();
+ private Multimap<String, MissingNumberPattern> missingNumberPatternsByFieldId = new TreeMultimap<String, MissingNumberPattern>();
private List<VerifierMessageBase> messages = new ArrayList<VerifierMessageBase>();
- private DataTree<Severity, VerifierMessageBase> messagesBySeverity = new DataTree<Severity, VerifierMessageBase>();
+ private Multimap<Severity, VerifierMessageBase> messagesBySeverity = new TreeMultimap<Severity, VerifierMessageBase>();
private VerifierData data;
@@ -43,7 +46,7 @@
}
public Collection<VerifierMessageBase> getBySeverity(Severity severity) {
- Collection<VerifierMessageBase> result = messagesBySeverity.getBranch( severity );
+ Collection<VerifierMessageBase> result = messagesBySeverity.get( severity );
if ( result == null ) {
return Collections.emptyList();
@@ -69,7 +72,7 @@
}
public Collection<Gap> getGapsByFieldId(String fieldId) {
- return gapsByFieldId.getBranch( fieldId );
+ return gapsByFieldId.get( fieldId );
}
public Collection<RangeCheckCause> getRangeCheckCauses() {
@@ -93,9 +96,9 @@
public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(String id) {
Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
- result.addAll( gapsByFieldId.getBranch( id ) );
+ result.addAll( gapsByFieldId.get( id ) );
- result.addAll( missingNumberPatternsByFieldId.getBranch( id ) );
+ result.addAll( missingNumberPatternsByFieldId.get( id ) );
return result;
}
Copied: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlPackageParser.java (from rev 30433, labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlPackageData.java)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlPackageParser.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlPackageParser.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,141 @@
+package org.drools.verifier.misc;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class DrlPackageParser {
+ private static final String packageExpr = "(^\\s*#.*?\\n)?(^\\s*package.*?$)(.*?)";
+ private static final Pattern finder = Pattern.compile( packageExpr,
+ Pattern.DOTALL | Pattern.MULTILINE );
+
+ private static final Pattern globalFinder = Pattern.compile( "(^\\s*global.*?$)",
+ Pattern.DOTALL | Pattern.MULTILINE );
+
+ private final String name;
+ private final List<DrlRuleParser> rules;
+ private final String description;
+
+ private final List<String> metadata;
+
+ private final Map<String, List<String>> otherInformation;
+ private final List<String> globals;
+
+ public DrlPackageParser(String packageName,
+ String description,
+ List<DrlRuleParser> rules,
+ List<String> globals,
+ List<String> metadata,
+ Map<String, List<String>> otherInformation) {
+ this.name = packageName;
+ this.description = description;
+ this.rules = rules;
+ this.globals = globals;
+ this.metadata = metadata;
+ this.otherInformation = otherInformation;
+ }
+
+ public static DrlPackageParser findPackageDataFromDrl(String drl) {
+
+ // Remove block comments
+ int start = drl.indexOf( "/*" );
+ while ( start > 0 ) {
+ if ( start >= 0 ) {
+ drl = drl.replace( drl.substring( start,
+ drl.indexOf( "*/",
+ start ) ),
+ "" );
+
+ start = drl.indexOf( "/*" );
+ }
+ }
+
+ final Matcher m = finder.matcher( drl );
+ m.find();
+
+ String packageNameRow = m.group( 2 );
+
+ int indexOfPackage = packageNameRow.indexOf( "package" );
+ String packageName = packageNameRow.substring( indexOfPackage + "package".length() ).trim();
+
+ Comment comment = DrlRuleParser.processComment( m.group( 1 ) );
+
+ return new DrlPackageParser( packageName,
+ comment.description,
+ DrlRuleParser.findRulesDataFromDrl( drl ),
+ findGlobals( drl ),
+ comment.metadata,
+ new HashMap<String, List<String>>() );
+ }
+
+ public static List<String> findGlobals(String drl) {
+ List<String> globals = new ArrayList<String>();
+ Matcher gm = globalFinder.matcher( drl );
+
+ while ( gm.find() ) {
+ String row = gm.group();
+ globals.add( row.substring( row.indexOf( "global" ) + "global".length() ).trim() );
+ }
+
+ return globals;
+ }
+
+ static Comment processComment(String text) {
+ Comment comment = new Comment();
+
+ if ( text == null ) {
+ comment.description = "";
+ comment.metadata = new ArrayList<String>();
+
+ return comment;
+ }
+
+ comment.description = text.replaceAll( "#",
+ "" ).trim();
+ comment.metadata = findMetaData( text );
+
+ return comment;
+ }
+
+ private static List<String> findMetaData(String text) {
+ List<String> list = new ArrayList<String>();
+
+ while ( text.contains( "@" ) ) {
+ int start = text.indexOf( '@' );
+ text = text.substring( start + 1 );
+ int end = text.indexOf( "\n" );
+ list.add( text.substring( 0,
+ end ) );
+ text = text.substring( end );
+ }
+
+ return list;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public List<DrlRuleParser> getRules() {
+ return rules;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public List<String> getMetadata() {
+ return metadata;
+ }
+
+ public Map<String, List<String>> getOtherInformation() {
+ return otherInformation;
+ }
+
+ public List<String> getGlobals() {
+ return globals;
+ }
+}
Copied: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlRuleParser.java (from rev 30433, labs/jbossrules/trunk/drools-doc/src/main/java/org/drools/doc/DrlRuleData.java)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlRuleParser.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/DrlRuleParser.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,195 @@
+package org.drools.verifier.misc;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class DrlRuleParser {
+ private static final String rulesExpr = "(^\\s*#.*?\\n)?(^\\s*rule.*?$)(.*?)(when)(.*?)(then)(.*?)(^\\s*end)";
+
+ private static final Pattern finder = Pattern.compile( rulesExpr,
+ Pattern.DOTALL | Pattern.MULTILINE );
+
+ private final Collection<String> header;
+ private final Collection<String> lhs;
+ private final Collection<String> rhs;
+
+ private final String name;
+
+ private final String description;
+
+ private final Collection<String> metadata;
+
+ private final Map<String, List<String>> otherInformation;
+
+ private DrlRuleParser(String ruleName,
+ String header,
+ String lhs,
+ String rhs,
+ String description,
+ List<String> metadata,
+ Map<String, List<String>> otherInformation) {
+ this.name = ruleName;
+ this.header = asList( header.split( "\n" ) );
+ this.lhs = asList( lhs.split( "\n" ) );
+ this.rhs = asList( rhs.split( "\n" ) );
+ this.description = description;
+ this.metadata = metadata;
+ this.otherInformation = otherInformation;
+ }
+
+ private Collection<String> asList(String[] array) {
+ Collection<String> list = new ArrayList<String>();
+
+ for ( int i = 0; i < array.length; i++ ) {
+ String string = array[i];
+ if ( !string.trim().equals( "" ) ) {
+ list.add( string );
+ }
+ }
+
+ return list;
+ }
+
+ public static List<DrlRuleParser> findRulesDataFromDrl(String drl) {
+ final Matcher m = finder.matcher( drl );
+ final List<DrlRuleParser> list = new ArrayList<DrlRuleParser>();
+
+ while ( m.find() ) {
+
+ // System.out.println( "1 " + m.group( 1 ) );
+ // System.out.println( "2 " + m.group( 2 ) );
+ // System.out.println( "3 " + m.group( 3 ) );
+ // System.out.println( "4 " + m.group( 4 ) );
+ // System.out.println( "5 " + m.group( 5 ) );
+ // System.out.println( "6 " + m.group( 6 ) );
+ // System.out.println( "7 " + m.group( 7 ) );
+
+ Comment comment = processComment( m.group( 1 ) );
+
+ String ruleName = m.group( 2 );
+
+ ruleName = trimRuleName( ruleName );
+
+ list.add( new DrlRuleParser( ruleName,
+ m.group( 3 ),
+ m.group( 5 ),
+ m.group( 7 ),
+ comment.description,
+ comment.metadata,
+ new HashMap<String, List<String>>() ) );
+ }
+
+ return list;
+ }
+
+ private static String trimRuleName(String ruleName) {
+ ruleName = ruleName.substring( ruleName.indexOf( "rule" ) + "rule".length() ).trim();
+
+ if ( ruleName.indexOf( "\"" ) == 0 ) {
+ ruleName = ruleName.substring( 1 );
+ }
+
+ if ( ruleName.lastIndexOf( "\"" ) == (ruleName.length() - 1) ) {
+ ruleName = ruleName.substring( 0,
+ ruleName.length() - 1 );
+ }
+
+ return ruleName;
+ }
+
+ static Comment processComment(String text) {
+ Comment comment = new Comment();
+
+ if ( text == null ) {
+ comment.description = "";
+ comment.metadata = new ArrayList<String>();
+
+ return comment;
+ }
+
+ // Sometimes the first rule in a file gets the package imports and
+ // comments included.
+ // Checking for that and fixing the description if this did happen.
+
+ StringBuilder description = new StringBuilder();
+ String[] commentLines = text.split( "\n" );
+ for ( int i = 0; i < commentLines.length; i++ ) {
+ String line = commentLines[i].trim();
+
+ if ( line.startsWith( "#" ) ) {
+ while ( line.startsWith( "#" ) ) {
+ line = line.substring( 1 );
+ }
+
+ line = line.trim();
+
+ if ( !line.startsWith( "@" ) ) {
+ description.append( line );
+ description.append( "\n" );
+ }
+ } else {
+ description.delete( 0,
+ description.length() );
+ }
+
+ }
+ comment.description = description.toString();
+
+ comment.metadata = findMetaData( text );
+
+ return comment;
+ }
+
+ private static List<String> findMetaData(String text) {
+ List<String> list = new ArrayList<String>();
+
+ while ( text.contains( "@" ) ) {
+ int start = text.indexOf( '@' );
+ text = text.substring( start + 1 );
+ int end = text.indexOf( "\n" );
+ list.add( text.substring( 0,
+ end ) );
+ text = text.substring( end );
+ }
+
+ return list;
+ }
+
+ public Collection<String> getHeader() {
+ return header;
+ }
+
+ public Collection<String> getLhs() {
+ return lhs;
+ }
+
+ public Collection<String> getRhs() {
+ return rhs;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public Collection<String> getMetadata() {
+ return metadata;
+ }
+
+ public Map<String, List<String>> getOtherInformation() {
+ return otherInformation;
+ }
+}
+
+class Comment {
+ String description;
+ List<String> metadata;
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -531,6 +531,8 @@
Consequence consequence = visitConsequence( rule,
descr.getConsequence() );
+
+ rule.getMetadata().putAll( descr.getMetaAttributes() );
rule.setConsequenceGuid( consequence.getGuid() );
rule.setConsequenceType( consequence.getConsequenceType() );
rule.setLineNumber( descr.getLine() );
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,176 +0,0 @@
-package org.drools.verifier.misc;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderConfiguration;
-import org.drools.builder.KnowledgeBuilderFactory;
-import org.drools.builder.ResourceType;
-import org.drools.definition.KnowledgePackage;
-import org.drools.io.Resource;
-import org.drools.io.ResourceFactory;
-import org.drools.verifier.Verifier;
-
-public class RuleLoader {
-
- // public static Collection<KnowledgePackage> loadPackages() {
- // return loadPackages(Collections.<Resource, ResourceType> emptyMap());
- // }
-
- /**
- *
- * @param resources
- * Additional custom rules added by the user.
- * @return
- */
- public static Collection<KnowledgePackage> loadPackages(Map<Resource, ResourceType> resources) {
-
- KnowledgeBuilderConfiguration kbuilderConfiguration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
- kbuilderConfiguration.setProperty( "drools.dialect.java.compiler",
- "JANINO" );
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
- if ( resources != null ) {
- for ( Resource resource : resources.keySet() ) {
- kbuilder.add( resource,
- resources.get( resource ) );
- }
- }
-
- return kbuilder.getKnowledgePackages();
- }
-
- private static String[] defaultList = new String[]{
- //Missing consequence
- "Consequence.drl",
- // Always false
- "alwaysFalse/Patterns.drl",
- // Incoherence
- "incoherence/Patterns.drl", "incoherence/Restrictions.drl",
- // Incompatibility
- "incompatibility/Patterns.drl", "incompatibility/Restrictions.drl",
- // Missing equality
- "missingEquality/MissingEquality.drl",
- // Opposites
- "opposites/Patterns.drl", "opposites/Restrictions.drl", "opposites/Rules.drl",
- // Optimization
- "optimisation/PatternOrder.drl",
- // Overlaps
- "overlaps/Restrictions.drl",
- // Range checks
- "rangeChecks/Clean.drl", "rangeChecks/Dates.drl", "rangeChecks/Doubles.drl", "rangeChecks/Integers.drl",
- // Redundancy
- "redundancy/Redundancy.drl", "redundancy/Notes.drl", "redundancy/Warnings.drl",
- // Subsumption
- "subsumption/Consequences.drl", "subsumption/Restrictions.drl", "subsumption/SubPatterns.drl", "subsumption/SubRules.drl"};
-
- public static Map<Resource, ResourceType> basicRulesForFullKnowledgeBase() {
- Map<Resource, ResourceType> resources = new HashMap<Resource, ResourceType>();
-
- for ( int i = 0; i < defaultList.length; i++ ) {
- resources.put( ResourceFactory.newClassPathResource( defaultList[i],
- Verifier.class ),
- ResourceType.DRL );
- }
-
- // // Missing consequence
- // resources.put( ResourceFactory.newClassPathResource( "Consequence.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Always false
- // resources.put( ResourceFactory.newClassPathResource( "alwaysFalse/Patterns.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Incoherence
- // resources.put( ResourceFactory.newClassPathResource( "incoherence/Patterns.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "incoherence/Restrictions.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Incompatibility
- // resources.put( ResourceFactory.newClassPathResource( "incompatibility/Patterns.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "incompatibility/Restrictions.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Missing equality
- // resources.put( ResourceFactory.newClassPathResource( "missingEquality/MissingEquality.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Opposites
- // resources.put( ResourceFactory.newClassPathResource( "opposites/Patterns.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "opposites/Restrictions.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "opposites/Rules.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Optimization
- // resources.put( ResourceFactory.newClassPathResource( "optimisation/PatternOrder.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // TODO: The DRL needs more work
- // // resources.put( ResourceFactory.newClassPathResource( "optimisation/RestrictionOrder.drl",
- // // Verifier.class ),
- // // ResourceType.DRL );
- // // Overlaps
- // resources.put( ResourceFactory.newClassPathResource( "overlaps/Restrictions.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Range checks
- // resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Clean.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Dates.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Doubles.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Integers.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // resources.put( ResourceFactory.newClassPathResource( "rangeChecks/NumberPatterns.drl",
- // // Verifier.class ),
- // // ResourceType.DRL );
- // // resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Variables.drl",
- // // Verifier.class ),
- // // ResourceType.DRL );
- // // Redundancy
- // resources.put( ResourceFactory.newClassPathResource( "redundancy/Redundancy.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "redundancy/Notes.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "redundancy/Warnings.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Reporting
- // resources.put( ResourceFactory.newClassPathResource( "reports/RangeCheckReports.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // // Subsumption
- // resources.put( ResourceFactory.newClassPathResource( "subsumption/Consequences.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "subsumption/Restrictions.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "subsumption/SubPatterns.drl",
- // Verifier.class ),
- // ResourceType.DRL );
- // resources.put( ResourceFactory.newClassPathResource( "subsumption/SubRules.drl",
- // Verifier.class ),
- // ResourceType.DRL );
-
- return resources;
- }
-}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -1,7 +1,6 @@
package org.drools.verifier.report.components;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
/**
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -11,18 +11,20 @@
import org.drools.verifier.components.LiteralRestriction;
import org.drools.verifier.components.Restriction;
import org.drools.verifier.components.VerifierComponentType;
-import org.drools.verifier.data.DataTree;
import org.drools.verifier.data.VerifierData;
import org.drools.verifier.report.components.RangeCheckCause;
import org.drools.verifier.report.components.VerifierRangeCheckMessage;
import org.mvel2.templates.TemplateRuntime;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.TreeMultimap;
+
class MissingRangesReportVisitor extends ReportVisitor {
public static Collection<String> visitRestrictionsCollection(String sourceFolder,
Collection<Restriction> restrictions,
Collection<RangeCheckCause> causes) {
- DataTree<Object, DataRow> dt = new DataTree<Object, DataRow>();
+ Multimap<Object, DataRow> dt = new TreeMultimap<Object, DataRow>();
Collection<String> stringRows = new ArrayList<String>();
for ( RangeCheckCause cause : causes ) {
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -25,6 +25,7 @@
# Dependencies: None
#
rule "Find equivalent Rules"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Check that VerifierRule $left and $right have redundant fields.
$left :VerifierRule()
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -27,6 +27,7 @@
# Example: val != 10 when val == 10 is missing.
#
rule "Missing restriction in LiteralRestrictions"
+ @verifying_scopes(knowledge-package, decision-table)
when
#
# == and !=
@@ -101,6 +102,7 @@
# Example: val != $var when val == $var is missing.
#
rule "Missing restriction in VariableRestrictions"
+ @verifying_scopes(knowledge-package, decision-table)
when
#
# == and !=
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -40,6 +40,7 @@
# Example: missing ( x >= 10 ) and ( x <= 10 ). This is the same as ( x == 10 )
#
rule "Merge gaps"
+ @verifying_scopes(knowledge-package, decision-table)
when
$g1 :Gap(
operator == Operator.GREATER_OR_EQUAL
@@ -81,6 +82,7 @@
# reports that ( x < 50 ), ( x > 50 ) and ( x <= 70 ) is missing.
#
rule "Remove useless integer gaps lesser or lesser and equal"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Covered x > 10
$lower :LiteralRestriction(
@@ -133,6 +135,7 @@
# reports that ( x < 50 ), ( x > 50 ) and ( x >= 70 ) is missing.
#
rule "Remove useless integer gaps greater or greater and equal"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Covered x > 10
$lower :LiteralRestriction(
@@ -185,6 +188,7 @@
# reports that ( x < 50.0 ), ( x > 50.0 ) and ( x <= 70.0 ) is missing.
#
rule "Remove useless double gaps lesser or lesser and equal"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Covered x > 10.0
$lower :LiteralRestriction(
@@ -237,6 +241,7 @@
# reports that ( x < 50.0 ), ( x > 50.0 ) and ( x >= 70.0 ) is missing.
#
rule "Remove useless double gaps greater or greater and equal"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Covered x > 10.0
$lower :LiteralRestriction(
@@ -289,6 +294,7 @@
# reports that ( x < "10-Oct-2007" ), ( x > "10-Oct-2007" ) and ( x <= "15-Oct-2007" ) is missing.
#
rule "Remove useless date gaps lesser or lesser and equal"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Covered x > "01-Oct-2007"
$lower :LiteralRestriction(
@@ -341,6 +347,7 @@
# reports that ( x < "10-Oct-2007" ), ( x > "10-Oct-2007" ) and ( x >= "15-Oct-2007" ) is missing.
#
rule "Remove useless date gaps greater or greater and equal"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Covered x > "01-Oct-2007"
$lower :LiteralRestriction(
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -35,6 +35,7 @@
# and in Foo( <= "27-Oct-2007" || == "27-Oct-2007" ) is missing.
#
rule "Range check for dates, if smaller than or equal is missing"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DATE )
@@ -66,6 +67,7 @@
# and in Foo( >= "27-Oct-2007" || == "27-Oct-2007" ) is missing.
#
rule "Range check for dates, if greater than or equal is missing"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DATE )
@@ -98,6 +100,7 @@
# then Foo( bar > "27-Oct-2007" ) is missing.
#
rule "Range check for dates, equal and greater than"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DATE )
@@ -138,6 +141,7 @@
# then Foo( bar < "27-Oct-2007" ) is missing.
#
rule "Range check for dates, equal and smaller than"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DATE )
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -21,6 +21,7 @@
# and in Foo( <= 42 || == 42 ) is missing.
#
rule "Range check for doubles, if smaller than or equal is missing"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DOUBLE )
@@ -52,6 +53,7 @@
# and in Foo( >= 42 || == 42 ) is missing.
#
rule "Range check for doubles, if greater than or equal is missing"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DOUBLE )
@@ -84,6 +86,7 @@
# then Foo( bar > 42 ) is missing.
#
rule "Range check for doubles, equal and greater than"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DOUBLE )
@@ -116,6 +119,7 @@
# then Foo( bar < 42 ) is missing.
#
rule "Range check for doubles, equal and smaller than"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.DOUBLE )
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -19,6 +19,7 @@
# and Foo( <= 42 || == 42 ) is missing.
#
rule "Range check for integers, if smaller than or equal is missing"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.INT )
@@ -50,6 +51,7 @@
# and in Foo( >= 42 || == 42 ) is missing.
#
rule "Range check for integers, if greater than or equal is missing"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.INT )
@@ -82,6 +84,7 @@
# then Foo( bar > 42 ) is missing.
#
rule "Range check for integers, equal and greater than"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.INT )
@@ -122,6 +125,7 @@
# then Foo( bar < 42 ) is missing.
#
rule "Range check for integers, equal and smaller than"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field( fieldType == Field.FieldType.INT )
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -25,6 +25,7 @@
# Example: in "Rule 1" Foo( bar == 10 ) and in "Rule 2" Foo( bar == 20 ) and in "Rule 3" Foo( bar == 40 )
# then Foo( bar == 30 ) is missing.
rule "Range check for number patterns"
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field(
( fieldType == Field.FieldType.INT || == Field.FieldType.DOUBLE )
@@ -66,6 +67,7 @@
# Example: in "Rule 1" Foo( bar == 10 ) and in "Rule 2" Foo( bar == 20 ) and in "Rule 3" Foo( bar == 40 )
# then Foo( bar == 30 ) is missing.
rule "Range check for number patterns, !="
+ @verifying_scopes(knowledge-package, decision-table)
when
$f :Field(
( fieldType == Field.FieldType.INT || == Field.FieldType.DOUBLE )
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -26,6 +26,7 @@
rule "Find redundant LHS"
+ @verifying_scopes(knowledge-package, decision-table)
when
# Check that VerifierRule $left and $right have redundant fields.
$left :VerifierRule()
@@ -152,6 +153,7 @@
# rule "Find rule possibility redundancy"
#
rule "Find subsumptant rule possibilities from different rules"
+ @verifying_scopes(knowledge-package, decision-table)
salience -100
when
$subsumption:Subsumption(
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/reports/RangeCheckReports.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/reports/RangeCheckReports.drl 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/reports/RangeCheckReports.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -50,6 +50,7 @@
# rule "Remove useless date gaps greater or greater and equal"
#
rule "Collect gaps"
+ @verifying_scopes(knowledge-package, decision-table)
salience -100
when
$f :Field()
Added: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/scope-knowledge-package.xml
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/scope-knowledge-package.xml (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/scope-knowledge-package.xml 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,67 @@
+<change-set xmlns='http://drools.org/drools-5.0/change-set'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+ xs:schemaLocation='http://drools.org/drools-5.0/composition drools-composition-4.0.xsd'>
+ <add>
+ <resource source='classpath:org/drools/verifier/Consequence.drl'
+ type='DRL' />
+ <!-- Always false -->
+ <resource source='classpath:org/drools/verifier/alwaysFalse/Patterns.drl'
+ type='DRL' />
+ <!-- Incoherence -->
+ <resource source='classpath:org/drools/verifier/incoherence/Patterns.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/incoherence/Restrictions.drl'
+ type='DRL' />
+ <!-- Incompatibility -->
+ <resource source='classpath:org/drools/verifier/incompatibility/Patterns.drl'
+ type='DRL' />
+ <resource
+ source='classpath:org/drools/verifier/incompatibility/Restrictions.drl'
+ type='DRL' />
+ <!-- Missing equality -->
+ <resource
+ source='classpath:org/drools/verifier/missingEquality/MissingEquality.drl'
+ type='DRL' />
+ <!-- Opposites -->
+ <resource source='classpath:org/drools/verifier/opposites/Patterns.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/opposites/Restrictions.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/opposites/Rules.drl'
+ type='DRL' />
+ <!-- Opposites -->
+ <resource
+ source='classpath:org/drools/verifier/optimisation/PatternOrder.drl'
+ type='DRL' />
+ <!-- Overlaps -->
+ <resource source='classpath:org/drools/verifier/overlaps/Restrictions.drl'
+ type='DRL' />
+ <!-- Range checks -->
+ <resource source='classpath:org/drools/verifier/rangeChecks/Clean.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/rangeChecks/Dates.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/rangeChecks/Doubles.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/rangeChecks/Integers.drl'
+ type='DRL' />
+ <!-- Redundancy -->
+ <resource source='classpath:org/drools/verifier/redundancy/Redundancy.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/redundancy/Notes.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/redundancy/Warnings.drl'
+ type='DRL' />
+ <!-- Subsumption -->
+ <resource source='classpath:org/drools/verifier/subsumption/Consequences.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/subsumption/Restrictions.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/subsumption/SubPatterns.drl'
+ type='DRL' />
+ <resource source='classpath:org/drools/verifier/subsumption/SubRules.drl'
+ type='DRL' />
+ </add>
+
+
+</change-set>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -88,5 +88,4 @@
m.getMessage() );
}
}
-
}
Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,138 @@
+package org.drools.verifier;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Severity;
+
+public class VerifyingScopeTest extends TestCase {
+
+ public void testSingleRule() {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ VerifierConfiguration vConfiguration = vBuilder.newVerifierConfiguration();
+
+ // Check that the builder works.
+ assertFalse( vBuilder.hasErrors() );
+ assertEquals( 0,
+ vBuilder.getErrors().size() );
+
+ vConfiguration.getVerifyingResources().put( new ClassPathResource( "VerifyingScope.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ vConfiguration.addVerifyingScopes( VerifierConfiguration.VERIFYING_SCOPE_SINGLE_RULE );
+
+ Verifier verifier = vBuilder.newVerifier( vConfiguration );
+
+ verifier.addResourcesToVerify( new ClassPathResource( "Misc3.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ assertFalse( verifier.hasErrors() );
+ assertEquals( 0,
+ verifier.getErrors().size() );
+
+ boolean works = verifier.fireAnalysis();
+
+ assertTrue( works );
+
+ VerifierReport result = verifier.getResult();
+ assertNotNull( result );
+ assertEquals( 0,
+ result.getBySeverity( Severity.ERROR ).size() );
+ assertEquals( 0,
+ result.getBySeverity( Severity.WARNING ).size() );
+ assertEquals( 6,
+ result.getBySeverity( Severity.NOTE ).size() );
+
+ }
+
+ public void testNothing() {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ VerifierConfiguration vConfiguration = vBuilder.newVerifierConfiguration();
+
+ // Check that the builder works.
+ assertFalse( vBuilder.hasErrors() );
+ assertEquals( 0,
+ vBuilder.getErrors().size() );
+
+ vConfiguration.getVerifyingResources().put( new ClassPathResource( "VerifyingScope.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ Verifier verifier = vBuilder.newVerifier( vConfiguration );
+
+ verifier.addResourcesToVerify( new ClassPathResource( "Misc3.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ assertFalse( verifier.hasErrors() );
+ assertEquals( 0,
+ verifier.getErrors().size() );
+
+ boolean works = verifier.fireAnalysis();
+
+ assertTrue( works );
+
+ VerifierReport result = verifier.getResult();
+ assertNotNull( result );
+ assertEquals( 0,
+ result.getBySeverity( Severity.ERROR ).size() );
+ assertEquals( 0,
+ result.getBySeverity( Severity.WARNING ).size() );
+ assertEquals( 2,
+ result.getBySeverity( Severity.NOTE ).size() );
+
+ }
+
+ public void testDecisionTable() {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ VerifierConfiguration vConfiguration = vBuilder.newVerifierConfiguration();
+
+ // Check that the builder works.
+ assertFalse( vBuilder.hasErrors() );
+ assertEquals( 0,
+ vBuilder.getErrors().size() );
+
+ vConfiguration.getVerifyingResources().put( new ClassPathResource( "VerifyingScope.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ vConfiguration.addVerifyingScopes( VerifierConfiguration.VERIFYING_SCOPE_DECISION_TABLE );
+ vConfiguration.setAcceptRulesWithoutVerifiyingScope( false );
+
+ Verifier verifier = vBuilder.newVerifier( vConfiguration );
+
+ verifier.addResourcesToVerify( new ClassPathResource( "Misc3.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ assertFalse( verifier.hasErrors() );
+ assertEquals( 0,
+ verifier.getErrors().size() );
+
+ boolean works = verifier.fireAnalysis();
+
+ assertTrue( works );
+
+ VerifierReport result = verifier.getResult();
+ assertNotNull( result );
+ assertEquals( 0,
+ result.getBySeverity( Severity.ERROR ).size() );
+ assertEquals( 0,
+ result.getBySeverity( Severity.WARNING ).size() );
+ assertEquals( 2,
+ result.getBySeverity( Severity.NOTE ).size() );
+
+ }
+}
Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlPackageDataTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlPackageDataTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlPackageDataTest.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,118 @@
+package org.drools.verifier.misc;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class DrlPackageDataTest extends TestCase {
+ public void testHandleDrl() {
+
+ String rule1 = "";
+ rule1 += "package org.drools.test\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule rule1\n";
+ rule1 += "when\n";
+ rule1 += "then\n";
+ rule1 += "list.add( drools.getRule().getName() );\n";
+ rule1 += "end\n";
+ rule1 += "rule rule2\n";
+ rule1 += "when\n";
+ rule1 += "then\n";
+ rule1 += "list.add( drools.getRule().getName() );\n";
+ rule1 += "end\n";
+
+ DrlPackageParser s = DrlPackageParser.findPackageDataFromDrl( rule1 );
+
+ assertEquals( "org.drools.test",
+ s.getName() );
+ assertEquals( 2,
+ s.getRules().size() );
+ assertEquals( "",
+ s.getDescription() );
+
+ }
+
+ public void testHandleDrl2() throws IOException {
+ BufferedReader in = new BufferedReader( new InputStreamReader( getClass().getResourceAsStream( "DrlPackageTestData.drl" ) ) );
+ String rule = "";
+ String str;
+ while ( (str = in.readLine()) != null ) {
+ rule += str;
+ rule += "\n";
+ }
+ in.close();
+
+ DrlPackageParser s = DrlPackageParser.findPackageDataFromDrl( rule );
+
+ assertNotNull( s );
+
+ assertEquals( "org.drools.test",
+ s.getName() );
+ assertEquals( 5,
+ s.getRules().size() );
+ assertEquals( "",
+ s.getDescription() );
+
+ }
+
+ public void testHandleDrlWithComments() {
+
+ String rule1 = "";
+ rule1 += "# important information\n";
+ rule1 += "# about this package\n";
+ rule1 += "# it contains some rules\n";
+ rule1 += "package org.drools.test\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule rule1\n";
+ rule1 += " when\n";
+ rule1 += " then\n";
+ rule1 += " list.add( drools.getRule().getName() );\n";
+ rule1 += "end\n";
+ rule1 += "rule rule2\n";
+ rule1 += " when\n";
+ rule1 += " then\n";
+ rule1 += " list.add( drools.getRule().getName() );\n";
+ rule1 += "end\n";
+
+ DrlPackageParser data = DrlPackageParser.findPackageDataFromDrl( rule1 );
+
+ assertEquals( "org.drools.test",
+ data.getName() );
+ assertEquals( 2,
+ data.getRules().size() );
+ assertEquals( 1,
+ data.getGlobals().size() );
+ assertEquals( "java.util.List list",
+ data.getGlobals().get( 0 ) );
+ assertEquals( "important information\nabout this package\nit contains some rules\n",
+ data.getDescription() );
+
+ DrlRuleParser rd1 = data.getRules().get( 0 );
+ assertEquals( "rule1",
+ rd1.getName() );
+ assertEquals( "",
+ rd1.getDescription() );
+
+ DrlRuleParser rd2 = data.getRules().get( 1 );
+ assertEquals( "rule2",
+ rd2.getName() );
+ assertEquals( "",
+ rd2.getDescription() );
+ }
+
+ public void testfindGlobals() {
+
+ String header = "global LoanApplication gg";
+
+ List<String> globals = DrlPackageParser.findGlobals( header );
+
+ assertEquals( 1,
+ globals.size() );
+ assertEquals( "LoanApplication gg",
+ globals.get( 0 ) );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlRuleDataTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlRuleDataTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/DrlRuleDataTest.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,135 @@
+package org.drools.verifier.misc;
+
+import java.util.List;
+
+import org.drools.verifier.misc.DrlRuleParser;
+
+import junit.framework.TestCase;
+
+public class DrlRuleDataTest extends TestCase {
+ public void testHandleDrl() {
+ String drl = "rule \"Something\" \n ";
+ drl += "dialect \"Java\" \n ";
+ drl += " when \n ";
+ drl += " Person() \n ";
+ drl += " Cheesery() \n ";
+ drl += " then \n ";
+ drl += " insert( new Person()) \n ";
+ drl += " insert( new Car()) \n ";
+ drl += " insert( new Cheese()) \n ";
+ drl += "end ";
+
+ DrlRuleParser s = DrlRuleParser.findRulesDataFromDrl(drl).get(0);
+
+ assertEquals(1, s.getHeader().size());
+ assertEquals(2, s.getLhs().size());
+ assertEquals(3, s.getRhs().size());
+ assertEquals("", s.getDescription());
+
+ }
+
+ public void testHandleDrlNoLineBreaks() {
+ String drl = "rule \"CreditScoreApproval\" \n";
+ drl += " dialect \"mvel\" \n";
+ drl += " when then";
+ drl += " applicant.setApproved(true) \n";
+ drl += " applicant.setName( \"Toni\" ) \n";
+ drl += " applicant.setAge( 10 ) \n";
+ drl += "end";
+ DrlRuleParser s = DrlRuleParser.findRulesDataFromDrl(drl).get(0);
+
+ assertNotNull(s);
+
+ assertEquals(1, s.getHeader().size());
+ assertEquals(0, s.getLhs().size());
+ assertEquals(3, s.getRhs().size());
+ assertEquals("", s.getDescription());
+
+ }
+
+ public void testHandleDrlWithComment() {
+ String drl = "# Really important information about this rule \n";
+ drl += "# Another line because one was not enough \n";
+ drl += "# \n";
+ drl += "# @author: trikkola \n";
+ drl += "rule \"First\" \n";
+ drl += " dialect \"mvel\" \n";
+ drl += " when \n ";
+ drl += " Person() \n ";
+ drl += " Cheesery() \n ";
+ drl += " then \n ";
+ drl += " applicant.setApproved(true) \n";
+ drl += " applicant.setName( \"Toni\" ) \n";
+ drl += " applicant.setAge( 10 ) \n";
+ drl += "end \n";
+ drl += "\n";
+ drl += "# Really important information about this rule \n";
+ drl += "# Another line because one was not enough \n";
+ drl += "# \n";
+ drl += "# @author: trikkola \n";
+ drl += "# @created: 29.12.2001 \n";
+ drl += "# @edited: 5.5.2005 \n";
+ drl += "rule \"Second\" \n";
+ drl += " dialect \"mvel\" \n";
+ drl += " when \n ";
+ drl += " Person() \n ";
+ drl += " Cheesery() \n ";
+ drl += " then \n ";
+ drl += " applicant.setApproved(true) \n";
+ drl += " applicant.setName( \"Toni\" ) \n";
+ drl += " applicant.setAge( 10 ) \n";
+ drl += "end";
+ drl += "\n";
+ drl += "rule \"Third\" \n";
+ drl += " dialect \"mvel\" \n";
+ drl += " when \n ";
+ drl += " Person() \n ";
+ drl += " Cheesery() \n ";
+ drl += " then \n ";
+ drl += " applicant.setApproved(true) \n";
+ drl += " applicant.setName( \"Toni\" ) \n";
+ drl += " applicant.setAge( 10 ) \n";
+ drl += "end";
+
+ List<DrlRuleParser> list = DrlRuleParser.findRulesDataFromDrl(drl);
+
+ assertEquals(3, list.size());
+
+ DrlRuleParser rd = list.get(0);
+
+ assertNotNull(rd);
+
+ assertEquals(1, rd.getHeader().size());
+ assertEquals(2, rd.getLhs().size());
+ assertEquals(3, rd.getRhs().size());
+ assertEquals(1, rd.getMetadata().size());
+ assertNotNull(rd.getDescription());
+ assertNotSame("", rd.getDescription());
+
+ DrlRuleParser rd2 = list.get(1);
+
+ assertNotNull(rd2);
+
+ assertEquals(1, rd2.getHeader().size());
+ assertEquals(2, rd2.getLhs().size());
+ assertEquals(3, rd2.getRhs().size());
+ assertEquals(3, rd2.getMetadata().size());
+ assertNotNull(rd2.getDescription());
+
+ String description = "Really important information about this rule\n";
+ description += "Another line because one was not enough\n\n";
+
+ assertEquals(description, rd2.getDescription());
+ assertNotSame("", rd2.getDescription());
+
+ DrlRuleParser rd3 = list.get(2);
+
+ assertNotNull(rd3);
+
+ assertEquals(1, rd3.getHeader().size());
+ assertEquals(2, rd3.getLhs().size());
+ assertEquals(3, rd3.getRhs().size());
+ assertNotNull(rd3.getDescription());
+ assertEquals("", rd3.getDescription());
+ }
+}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java 2010-01-12 22:31:13 UTC (rev 31045)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java 2010-01-13 07:52:55 UTC (rev 31046)
@@ -40,7 +40,7 @@
int count = 0;
for ( Object object : subsumptionList ) {
- // System.out.println( " * " + ((Subsumption) object) );
+ // System.out.println( " * " + ((Subsumption) object) );
if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_RULE ) ) {
// System.out.println( " ** " + ((SubRule) ((Subsumption) object).getLeft()).getItems() + " - " + ((SubRule) ((Subsumption) object).getRight()).getItems() );
count++;
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,43 @@
+#created on: 18.12.2009
+package org.drools.verifier
+
+global VerifierReport result;
+
+import java.util.ArrayList;
+
+import org.drools.verifier.data.VerifierReport;
+
+import org.drools.verifier.components.VerifierRule;
+
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessage;
+import org.drools.verifier.report.components.MessageType;
+
+rule "Single"
+ @verifying_scopes(single-rule)
+ when
+ $a :VerifierRule()
+ then
+ result.add(new VerifierMessage(
+ Severity.NOTE, MessageType.EQUIVALANCE,
+ $a, "", new ArrayList() ) );
+end
+
+rule "single or dtable"
+ @verifying_scopes(single-rule, decision-table)
+ when
+ $a :VerifierRule()
+ then
+ result.add(new VerifierMessage(
+ Severity.NOTE, MessageType.EQUIVALANCE,
+ $a, "", new ArrayList() ) );
+end
+
+rule "no verifying scope set"
+ when
+ $a :VerifierRule()
+ then
+ result.add(new VerifierMessage(
+ Severity.NOTE, MessageType.EQUIVALANCE,
+ $a, "", new ArrayList() ) );
+end
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/DrlPackageTestData.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/DrlPackageTestData.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/DrlPackageTestData.drl 2010-01-13 07:52:55 UTC (rev 31046)
@@ -0,0 +1,57 @@
+package org.drools.test
+
+import com.sample.DroolsTest.Message;
+
+
+#
+# Something
+#
+rule "Test 1"
+ when
+ Foo(
+ a > 10
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 1 GG"
+ ruleflow-group "GG"
+ when
+ Foo(
+ a > 10
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2 GG"
+ ruleflow-group "GG"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 3"
+ when
+ Bar(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list