Author: mar...@jb...
Date: 2006-06-28 21:39:53 -0400 (Wed, 28 Jun 2006)
New Revision: 4862
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
Log:
JBRULES-293 NullPointer for DrlDumper when using Agenda Groups
-Fixed DrlDumper by putting quotes around agenda and activation groups
-Added a more complex integration test case for drl and xml
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java 2006-06-29 01:22:22 UTC (rev 4861)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java 2006-06-29 01:39:53 UTC (rev 4862)
@@ -40,6 +40,8 @@
import org.drools.lang.descr.RuleDescr;
import org.drools.util.ReflectiveVisitor;
+import sun.security.krb5.internal.at;
+
/**
*
* @author <a href="mailto:jay...@gm...">Author Jayaram C S</a>
@@ -69,7 +71,15 @@
public void visitAttributeDescr(final AttributeDescr attributeDescr) {
this.template = new String();
- this.template = "\t " + attributeDescr.getName() + " " + attributeDescr.getValue() + DrlDumper.eol;
+ String name = attributeDescr.getName();
+ String value = null;
+ if ( name.equals( "agenda-group" ) || name.equals( "activation-group" ) ) {
+ // These attributes may need quotes around them, if they have spaces, so add anyway
+ value = "\"" + attributeDescr.getValue() + "\"";
+ } else {
+ value = attributeDescr.getValue();
+ }
+ this.template = "\t " + name + " " + value + DrlDumper.eol;
}
public void visitBoundVariableDescr(final BoundVariableDescr descr) {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-06-29 01:22:22 UTC (rev 4861)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-06-29 01:39:53 UTC (rev 4862)
@@ -25,6 +25,7 @@
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Reader;
+import java.io.StringReader;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -64,11 +65,13 @@
import org.drools.event.DebugWorkingMemoryEventListener;
import org.drools.event.DefaultAgendaEventListener;
import org.drools.integrationtests.helloworld.Message;
+import org.drools.lang.DrlDumper;
import org.drools.lang.descr.PackageDescr;
import org.drools.rule.Package;
import org.drools.rule.Rule;
import org.drools.spi.ActivationGroup;
import org.drools.spi.AgendaGroup;
+import org.drools.xml.XmlDumper;
/**
* This contains the test cases for each engines implementation to execute.
@@ -1290,7 +1293,91 @@
assertEquals( "group2",
list.get( 7 ) );
}
+
+ public void testDumper() throws Exception {
+ final DrlParser parser = new DrlParser();
+ final PackageDescr pkg = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "test_Dumpers.drl" ) ) );
+
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackage(pkg );
+ RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+ WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+
+ List list = new ArrayList();
+ workingMemory.setGlobal( "list",
+ list );
+
+ final Cheese brie = new Cheese( "brie",
+ 12 );
+ workingMemory.assertObject( brie );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 3,
+ list.size() );
+ assertEquals( "3 1",
+ list.get( 0 ) );
+ assertEquals( "MAIN",
+ list.get( 1 ) );
+ assertEquals( "1 1",
+ list.get( 2 ) );
+
+ final DrlDumper drlDumper = new DrlDumper();
+ final String drlResult = drlDumper.dump( pkg );
+ builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( drlResult ) );
+
+ ruleBase = getRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+ workingMemory = ruleBase.newWorkingMemory();
+
+ list = new ArrayList();
+ workingMemory.setGlobal( "list",
+ list );
+
+ workingMemory.assertObject( brie );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 3,
+ list.size() );
+ assertEquals( "3 1",
+ list.get( 0 ) );
+ assertEquals( "MAIN",
+ list.get( 1 ) );
+ assertEquals( "1 1",
+ list.get( 2 ) );
+
+ final XmlDumper xmlDumper = new XmlDumper();
+ final String xmlResult = xmlDumper.dump( pkg );
+ builder = new PackageBuilder();
+ builder.addPackageFromXml( new StringReader( xmlResult ) );
+
+ ruleBase = getRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+ workingMemory = ruleBase.newWorkingMemory();
+
+ list = new ArrayList();
+ workingMemory.setGlobal( "list",
+ list );
+
+ workingMemory.assertObject( brie );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 3,
+ list.size() );
+ assertEquals( "3 1",
+ list.get( 0 ) );
+ assertEquals( "MAIN",
+ list.get( 1 ) );
+ assertEquals( "1 1",
+ list.get( 2 ) );
+ }
+
+
public void testXorGroups() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ActivationGroups.drl" ) ) );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java 2006-06-29 01:22:22 UTC (rev 4861)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java 2006-06-29 01:39:53 UTC (rev 4862)
@@ -3,13 +3,20 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
import junit.framework.TestCase;
+import org.drools.Cheese;
+import org.drools.RuleBase;
+import org.drools.WorkingMemory;
import org.drools.compiler.DrlParser;
+import org.drools.compiler.PackageBuilder;
import org.drools.lang.DrlDumper;
import org.drools.lang.descr.PackageDescr;
import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.Package;
/**
* Test the dump/convert format utilities.
@@ -85,7 +92,7 @@
ruleDumped.getConsequence() );
}
-
+
private void assertEqualsIgnoreWhitespace(final String expected,
final String actual) {
final String cleanExpected = expected.replaceAll( "\\s+",
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl 2006-06-29 01:22:22 UTC (rev 4861)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl 2006-06-29 01:39:53 UTC (rev 4862)
@@ -0,0 +1,43 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+
+global java.util.List list;
+
+rule "test MAIN 1"
+ salience 10
+ when
+ Cheese( )
+ then
+ list.add( "MAIN" );
+ drools.setFocus( "agenda group 1" );
+end
+
+rule "test group1 1"
+ agenda-group "agenda group 1"
+ when
+ Cheese( )
+ then
+ list.add( "1 1" );
+end
+
+rule "test group3 1"
+ salience 5
+ agenda-group "agenda group 3"
+ activation-group "activation group 3"
+ auto-focus true
+ when
+ Cheese( )
+ then
+ list.add( "3 1" );
+end
+
+
+rule "test group3 2"
+ agenda-group "agenda group 3"
+ activation-group "activation group 3"
+ when
+ Cheese( )
+ then
+ list.add( "3 2" );
+end
\ No newline at end of file
|