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 |