[jboss-svn-commits] JBL Code SVN: r12784 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/xml and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jun 23 03:52:37 EDT 2007
Author: fmeyer
Date: 2007-06-23 03:52:37 -0400 (Sat, 23 Jun 2007)
New Revision: 12784
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.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/xml/AndHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml
Log:
JBRULES-880
- Updated XML dumper to handle with new language features
- Corrected a bug in patterHandler
- Recfactored DumperTest for easily add more source tests
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 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -19,6 +19,7 @@
import java.util.Iterator;
import java.util.List;
+import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.CollectDescr;
@@ -27,6 +28,7 @@
import org.drools.lang.descr.FieldBindingDescr;
import org.drools.lang.descr.FieldConstraintDescr;
import org.drools.lang.descr.ForallDescr;
+import org.drools.lang.descr.FromDescr;
import org.drools.lang.descr.FunctionDescr;
import org.drools.lang.descr.GlobalDescr;
import org.drools.lang.descr.ImportDescr;
@@ -142,12 +144,18 @@
tmpstr += this.template.substring( 2 );
this.template = tmpstr + ");";
}
-
+
//TODO FM: FIXME
- public void visitAccumulateDescr() {
-
+ public void visitAccumulateDescr(final AccumulateDescr descr) {
+ System.out.println( "Accumulate DRL" );
}
+
+ //TODO FM: FIXME
+ public void visitFromDescr(final FromDescr descr) {
+ System.out.println( "From DRL" );
+ }
+
public void visitForallDescr(final ForallDescr descr) {
this.template = new String();
this.template += "\t\tforall ( ";
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -61,7 +61,6 @@
this.validPeers.add( EvalDescr.class );
this.validPeers.add( PatternDescr.class );
this.validPeers.add( ForallDescr.class );
-
this.allowNesting = true;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -58,7 +58,6 @@
this.validPeers.add( EvalDescr.class );
this.validPeers.add( PatternDescr.class );
this.validPeers.add( ForallDescr.class );
-
this.allowNesting = true;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -59,7 +59,6 @@
this.validPeers.add( EvalDescr.class );
this.validPeers.add( PatternDescr.class );
this.validPeers.add( ForallDescr.class );
-
this.allowNesting = true;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -84,6 +84,7 @@
try {
final DeclarativeInvokerDescr declarativeInvoker = parser.from_source( fromSource );
+ declarativeInvoker.setText( expression );
fromSource.setDataSource( declarativeInvoker );
} catch ( final RecognitionException e ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -35,7 +35,7 @@
this.validPeers = new HashSet();
this.validPeers.add( null );
-
+
this.validPeers.add( AndDescr.class );
this.validPeers.add( OrDescr.class );
this.validPeers.add( NotDescr.class );
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -60,11 +60,13 @@
Object parent = it.previous();
final PatternDescr patternDescr = (PatternDescr) parent;
-
fromDescr.setPattern( patternDescr );
-
parent = it.previous();
+ final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
+
+ if ( config.getChild( "accumulate" ) != null || config.getChild( "collect" ) != null ) return null;
+
((ConditionalElementDescr) parent).addDescr( fromDescr );
return null;
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -17,9 +17,7 @@
*/
import java.util.HashSet;
-import java.util.Iterator;
import java.util.LinkedList;
-import java.util.List;
import java.util.ListIterator;
import org.drools.lang.descr.AccumulateDescr;
@@ -29,7 +27,6 @@
import org.drools.lang.descr.EvalDescr;
import org.drools.lang.descr.ExistsDescr;
import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.FromDescr;
import org.drools.lang.descr.NotDescr;
import org.drools.lang.descr.OrDescr;
import org.drools.lang.descr.PatternDescr;
@@ -115,13 +112,9 @@
final PatternProcessorCeDescr parentDescr = (PatternProcessorCeDescr) parent;
parentDescr.setSourcePattern( patternDescr );
} else {
+ if ( config.getChild( "from" ) != null ) return null;
final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
- final List conditionalDescriptors = parentDescr.getDescrs();
- for ( final Iterator iterator = conditionalDescriptors.iterator(); iterator.hasNext(); ) {
- final Object obj = iterator.next();
- if ( obj instanceof PatternProcessorCeDescr || FromDescr.class.getName().equals( obj.getClass().getName() ) ) return null;
- }
parentDescr.addDescr( patternDescr );
}
return null;
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -20,10 +20,12 @@
import java.util.Iterator;
import java.util.List;
+import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.CollectDescr;
import org.drools.lang.descr.ForallDescr;
+import org.drools.lang.descr.FromDescr;
import org.drools.lang.descr.PatternDescr;
import org.drools.lang.descr.EvalDescr;
import org.drools.lang.descr.ExistsDescr;
@@ -123,11 +125,36 @@
}
//TODO FM: FIXME
- public void visitAccumulateDescr() {
- System.out.println( "Collect Descr" );
+ public void visitAccumulateDescr(final AccumulateDescr descr) {
+ String tmpstr = new String();
+ visit( descr.getResultPattern() );
+ this.template = this.template.substring( 0,
+ this.template.indexOf( "</pattern>" ) );
+ tmpstr += this.template + " <from> <accumulate> ";
+ visit( descr.getSourcePattern() );
+ tmpstr += this.template;
+
+ tmpstr += "<init>" + descr.getInitCode() + "</init><action>" + descr.getActionCode() + "</action><result>" + descr.getResultCode() + "</result>";
+
+ this.template = tmpstr + " </accumulate> </from> ";
+ this.template += "</pattern>";
}
//TODO FM: FIXME
+ public void visitFromDescr(final FromDescr descr) {
+
+ String tmpstr = new String();
+ visitPatternDescr( descr.getReturnedPattern() );
+ this.template = this.template.substring( 0,
+ this.template.indexOf( "</pattern>" ) );
+ tmpstr += this.template + " <from> <expression> ";
+ tmpstr += descr.getDataSource().getText().trim();
+
+ this.template = tmpstr + " </expression> </from> ";
+ this.template += "</pattern>";
+ }
+
+ //TODO FM: FIXME
public void visitForallDescr(final ForallDescr descr) {
this.template = "<forall>" + processDescrList( descr.getDescrs() ) + "</forall>";
}
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 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -1,138 +1,75 @@
package org.drools.xml;
import junit.framework.TestCase;
-import org.drools.compiler.DrlParser;
-import org.drools.lang.DrlDumper;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.RuleDescr;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-
/**
* Test the dump/convert format utilities.
+ *
* @author Michael Neale
+ * @author Fernando Meyer
*/
+
public class DumperTest extends TestCase {
- public void testRoundTripXml() throws Exception {
- XmlPackageReader xmlPackageReader = new XmlPackageReader();
- xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRule.xml" ) ) );
- final PackageDescr pkgOriginal = xmlPackageReader.getPackageDescr();
+ // Xml Dumper test
+
+ public void testRoundTripAccumulateXml() throws Exception {
+ DumperTestHelper.XmlFile( "test_ParseAccumulate.xml" );
+ }
- final XmlDumper dumper = new XmlDumper();
-
- final String result = dumper.dump( pkgOriginal );
-
- System.out.println(result);
+ public void testRoundTripCollectXml() throws Exception {
+ DumperTestHelper.XmlFile( "test_ParseCollect.xml" );
+ }
- final DrlDumper drldumper = new DrlDumper();
- final String drlresult = drldumper.dump( pkgOriginal );
-
- String buffer = readFile("test_ParseRule.xml");
-
- assertEqualsIgnoreWhitespace( buffer, result );
- assertNotNull( result );
+ public void testRoundTripExistsXml() throws Exception {
+ DumperTestHelper.XmlFile( "test_ParseExists.xml" );
+ }
- //now lest slurp it back up
- xmlPackageReader = new XmlPackageReader();
- final PackageDescr pkgDumped = xmlPackageReader.read( new StringReader( result ) );
+ public void testRoundTripForallXml() throws Exception {
+ DumperTestHelper.XmlFile( "test_ParseForall.xml" );
+ }
- assertEquals( pkgOriginal.getName(),
- pkgDumped.getName() );
- assertEquals( pkgOriginal.getFunctions().size(),
- pkgDumped.getFunctions().size() );
- assertEquals( pkgOriginal.getRules().size(),
- pkgDumped.getRules().size() );
- assertEquals( pkgOriginal.getGlobals().size(),
- pkgDumped.getGlobals().size() );
-
- final RuleDescr ruleOriginal = (RuleDescr) pkgOriginal.getRules().get( 0 );
- final RuleDescr ruleDumped = (RuleDescr) pkgDumped.getRules().get( 0 );
-
- assertEquals( ruleOriginal.getName(),
- ruleDumped.getName() );
-
- assertEquals( ruleOriginal.getLhs().getDescrs().size(),
- ruleDumped.getLhs().getDescrs().size() );
- assertEquals( ruleOriginal.getConsequence(),
- ruleDumped.getConsequence() );
-
+ public void testRoundTripFromXml() throws Exception {
+ DumperTestHelper.XmlFile( "test_ParseFrom.xml" );
}
- public void testRoundTripDrl() throws Exception {
-
- DrlParser parser = new DrlParser();
- final PackageDescr pkgOriginal = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "test_Dump.drl" ) ) );
- final DrlDumper dumper = new DrlDumper();
- final XmlDumper XMLdumper = new XmlDumper();
- final String XMLresult = XMLdumper.dump( pkgOriginal );
-
- final String result = dumper.dump( pkgOriginal );
-
- System.out.println(result);
-
- assertNotNull( result );
-
- parser = new DrlParser();
- final PackageDescr pkgDumped = parser.parse( new StringReader( result ) );
-
- assertEquals( pkgOriginal.getName(),
- pkgDumped.getName() );
- assertEquals( pkgOriginal.getFunctions().size(),
- pkgDumped.getFunctions().size() );
- assertEquals( pkgOriginal.getRules().size(),
- pkgDumped.getRules().size() );
- assertEquals( pkgOriginal.getGlobals().size(),
- pkgDumped.getGlobals().size() );
-
- final RuleDescr ruleOriginal = (RuleDescr) pkgOriginal.getRules().get( 0 );
- final RuleDescr ruleDumped = (RuleDescr) pkgDumped.getRules().get( 0 );
-
- assertEquals( ruleOriginal.getName(),
- ruleDumped.getName() );
-
- assertEquals( ruleOriginal.getLhs().getDescrs().size(),
- ruleDumped.getLhs().getDescrs().size() );
- assertEquals( ruleOriginal.getConsequence(),
- ruleDumped.getConsequence() );
-
-
- // Now double check the contents are the same
-
- String buffer = readFile( "test_Dump.drl" );
-
- assertEqualsIgnoreWhitespace( buffer.toString(), result );
-
+ public void testRoundTripSimpleRuleXml() throws Exception {
+ DumperTestHelper.XmlFile( "test_ParseAccumulate.xml" );
}
- private void assertEqualsIgnoreWhitespace(final String expected,
- final String actual) {
- final String cleanExpected = expected.replaceAll( "\\s+",
- "" );
- final String cleanActual = actual.replaceAll( "\\s+",
- "" );
-
- assertEquals( cleanExpected,
- cleanActual );
+ public void testRoundTripComplexRuleXml() throws Exception {
+ DumperTestHelper.XmlFile( "test_RoundTrip.xml" );
}
- private String readFile(final String file) throws IOException {
- final InputStreamReader reader = new InputStreamReader( getClass().getResourceAsStream( file ) );
+ // Drl Dumper test
- final StringBuffer text = new StringBuffer();
-
- final char[] buf = new char[1024];
- int len = 0;
-
- while ( (len = reader.read( buf )) >= 0 ) {
- text.append( buf,
- 0,
- len );
- }
- return text.toString();
+ public void testRoundTripComplexRuleDrl() throws Exception {
+ DumperTestHelper.DrlFile( "test_RoundTrip.drl" );
}
-
-}
+
+ public void testRoundTripCollectDrl() throws Exception {
+ DumperTestHelper.DrlFile( "../integrationtests/test_Collect.drl" );
+ }
+
+ //FIXME: FM Correct Drl Dumper
+// public void testRoundTripAccumulateDrl() throws Exception {
+// DumperTestHelper.DrlFile( "../integrationtests/test_Accumulate.drl" );
+// }
+//
+// public void testRoundTripExistsDrl() throws Exception {
+// DumperTestHelper.DrlFile( "../integrationtests/test_exists.drl" );
+// }
+//
+// public void testRoundTripForallDrl() throws Exception {
+// DumperTestHelper.DrlFile( "../integrationtests/test_Forall.drl" );
+// }
+//
+// public void testRoundTripFromDrl() throws Exception {
+// DumperTestHelper.DrlFile( "../integrationtests/test_From.drl" );
+// }
+//
+// public void testRoundTripSimpleRuleDrl() throws Exception {
+// DumperTestHelper.DrlFile( "../lang/simple_rule.drl" );
+// }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java 2007-06-23 07:52:37 UTC (rev 12784)
@@ -0,0 +1,80 @@
+/**
+ *
+ */
+package org.drools.xml;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import junit.framework.Assert;
+
+import org.drools.compiler.DrlParser;
+import org.drools.lang.DrlDumper;
+import org.drools.lang.descr.PackageDescr;
+
+/**
+ * Helper Class for both xml and drl Dump Tests
+ *
+ * @author fernandomeyer
+ */
+public class DumperTestHelper extends Assert {
+
+ public static void XmlFile(String filename) throws Exception {
+
+ XmlPackageReader xmlPackageReader = new XmlPackageReader();
+ xmlPackageReader.read( new InputStreamReader( DumperTestHelper.class.getResourceAsStream( filename ) ) );
+ final PackageDescr pkgOriginal = xmlPackageReader.getPackageDescr();
+
+ final XmlDumper dumper = new XmlDumper();
+ final String result = dumper.dump( pkgOriginal );
+
+
+ System.out.println(result);
+
+ String buffer = readFile( filename );
+
+ System.out.println( buffer);
+
+ assertEqualsIgnoreWhitespace( buffer,
+ result );
+ assertNotNull( result );
+ }
+
+ public static void DrlFile(String filename) throws Exception {
+
+ DrlParser parser = new DrlParser();
+ final PackageDescr pkgOriginal = parser.parse( new InputStreamReader( DumperTestHelper.class.getResourceAsStream( filename ) ) );
+ final DrlDumper dumper = new DrlDumper();
+ final String result = dumper.dump( pkgOriginal );
+
+ parser = new DrlParser();
+ String buffer = readFile( filename );
+ assertEqualsIgnoreWhitespace( buffer.toString(),
+ result );
+
+ }
+
+ private static void assertEqualsIgnoreWhitespace(final String expected,
+ final String actual) {
+ final String cleanExpected = expected.replaceAll( "\\s+",
+ "" );
+ final String cleanActual = actual.replaceAll( "\\s+",
+ "" );
+ assertEquals( cleanExpected,
+ cleanActual );
+ }
+
+ private static String readFile(final String file) throws IOException {
+ final InputStreamReader reader = new InputStreamReader( DumperTestHelper.class.getResourceAsStream( file ) );
+ final StringBuffer text = new StringBuffer();
+ final char[] buf = new char[1024];
+ int len = 0;
+
+ while ( (len = reader.read( buf )) >= 0 ) {
+ text.append( buf,
+ 0,
+ len );
+ }
+ return text.toString();
+ }
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml 2007-06-22 21:17:53 UTC (rev 12783)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml 2007-06-23 07:52:37 UTC (rev 12784)
@@ -21,7 +21,7 @@
<pattern identifier="cheese" object-type="Cheese" >
<from>
<expression>
- cheesery.getCheeses();
+ cheesery.getCheeses(i+4);
</expression>
</from>
</pattern>
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl 2007-06-23 07:52:37 UTC (rev 12784)
@@ -0,0 +1,24 @@
+package foo;
+
+rule "simple_rule"
+ salience 10
+ no-loop true
+ agenda-group "agenda-group"
+ activation-group "activation-group"
+ when
+ foo2 : Bar( a ( > 60 && < 70 ) || ( > 50 && < 55 ) && a3 == "black" || a == 40 && a3 == "pink" || a == 12 && a3 == "yellow" || a3 == "blue")
+ foo3 : Bar( a == 3 || == 4, a3 == "hello", a4 == null )
+ foo4 : Bar( a4 : a != 4 && != 5)
+ foo5 : Bar( b == (a4 + 1) || > a4)
+ foo6 : Bar( a4 : a, b == 6)
+ foo7 : Bar( a4 : a, b4 : b)
+ $cheeseList : ArrayList(size > 2) from collect( Cheese( type == $likes ) );
+ Baz()
+ then
+ if ( a == b ) {
+ assert( foo3 );
+ } else {
+ retract( foo4 );
+ }
+ System.out.println( a4 );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.xml (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.xml 2007-06-23 07:52:37 UTC (rev 12784)
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<package name="com.sample"
+ xmlns="http://drools.org/drools-4.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
+
+ <import name="java.util.HashMap" />
+ <import name="org.drools.*" />
+
+ <global identifier="x" type="com.sample.X" />
+ <global identifier="yada" type="com.sample.Yada" />
+
+ <function return-type="void" name="myFunc">
+ <parameter identifier="foo" type="Bar" />
+ <parameter identifier="bada" type="Bing" />
+
+ <body>
+ System.out.println("hello world");
+ </body>
+ </function>
+
+<rule name="simple_rule">
+ <rule-attribute name="salience" value="10" />
+ <rule-attribute name="no-loop" value="true" />
+ <rule-attribute name="agenda-group" value="agenda-group" />
+ <rule-attribute name="activation-group" value="activation-group" />
+
+ <lhs>
+ <pattern identifier="cheese" object-type="Cheese" >
+ <field-constraint field-name="type">
+ <literal-restriction evaluator="==" value="1"/>
+ </field-constraint>
+ <from>
+ <collect>
+ <pattern object-type="Person">
+ <field-constraint field-name="hair">
+ <literal-restriction evaluator="==" value="pink" />
+ </field-constraint>
+ </pattern>
+ </collect>
+ </from>
+ </pattern>
+
+ <pattern identifier="cheese" object-type="Cheese">
+ <from>
+ <accumulate>
+ <pattern object-type="Person"></pattern>
+ <init>
+ int total = 0;
+ </init>
+ <action>
+ total += $cheese.getPrice();
+ </action>
+ <result>
+ new Integer( total ) );
+ </result>
+ </accumulate>
+ </from>
+ </pattern>
+
+ <pattern identifier="foo2" object-type="Bar" >
+ <or-constraint-connective>
+ <and-constraint-connective>
+ <field-constraint field-name="a">
+ <or-restriction-connective>
+ <and-restriction-connective>
+ <literal-restriction evaluator=">" value="60" />
+ <literal-restriction evaluator="<" value="70" />
+ </and-restriction-connective>
+ <and-restriction-connective>
+ <literal-restriction evaluator="<" value="50" />
+ <literal-restriction evaluator=">" value="55" />
+ </and-restriction-connective>
+ </or-restriction-connective>
+ </field-constraint>
+
+ <field-constraint field-name="a3">
+ <literal-restriction evaluator="==" value="black" />
+ </field-constraint>
+ </and-constraint-connective>
+
+ <and-constraint-connective>
+ <field-constraint field-name="a">
+ <literal-restriction evaluator="==" value="40" />
+ </field-constraint>
+
+ <field-constraint field-name="a3">
+ <literal-restriction evaluator="==" value="pink" />
+ </field-constraint>
+ </and-constraint-connective>
+
+ <and-constraint-connective>
+ <field-constraint field-name="a">
+ <literal-restriction evaluator="==" value="12"/>
+ </field-constraint>
+
+ <field-constraint field-name="a3">
+ <or-restriction-connective>
+ <literal-restriction evaluator="==" value="yellow"/>
+ <literal-restriction evaluator="==" value="blue" />
+ </or-restriction-connective>
+ </field-constraint>
+ </and-constraint-connective>
+ </or-constraint-connective>
+ </pattern>
+
+ <forall>
+ <pattern object-type="State">
+ <field-binding field-name="state" identifier="state" />
+ </pattern>
+
+ <pattern object-type="Person">
+ <field-constraint field-name="status">
+ <variable-restriction evaluator="==" identifier="state" />
+ </field-constraint>
+ <field-binding field-name="likes" identifier="likes" />
+ </pattern>
+
+ <pattern object-type="Cheese">
+ <field-binding field-name="type" identifier="likes" />
+ </pattern>
+ </forall>
+
+ <not>
+ <pattern object-type="Person">
+ <field-constraint field-name="likes">
+ <variable-restriction evaluator="==" identifier="type"/>
+ </field-constraint>
+ </pattern>
+
+ <exists>
+ <pattern object-type="Person">
+ <field-constraint field-name="likes">
+ <variable-restriction evaluator="==" identifier="type"/>
+ </field-constraint>
+ </pattern>
+ </exists>
+ </not>
+
+ <exists>
+ <pattern object-type="Person">
+ <field-constraint field-name="likes">
+ <variable-restriction evaluator="==" identifier="type"/>
+ </field-constraint>
+ </pattern>
+ </exists>
+
+ <or-conditional-element>
+ <pattern identifier="foo3" object-type="Bar" >
+ <field-constraint field-name="a">
+ <or-restriction-connective>
+ <literal-restriction evaluator="==" value="3" />
+ <literal-restriction evaluator="==" value="4" />
+ </or-restriction-connective>
+ </field-constraint>
+ <field-constraint field-name="a3">
+ <literal-restriction evaluator="==" value="hello" />
+ </field-constraint>
+ <field-constraint field-name="a4">
+ <literal-restriction evaluator="==" value="null" />
+ </field-constraint>
+ </pattern>
+
+ <pattern identifier="foo4" object-type="Bar" >
+ <field-binding field-name="a" identifier="a4" />
+ <field-constraint field-name="a">
+ <literal-restriction evaluator="!=" value="4" />
+ <literal-restriction evaluator="!=" value="5" />
+ </field-constraint>
+ </pattern>
+ </or-conditional-element>
+
+ <pattern identifier="foo5" object-type="Bar" >
+ <field-constraint field-name="b">
+ <or-restriction-connective>
+ <return-value-restriction evaluator="==" >a4 + 1</return-value-restriction>
+ <variable-restriction evaluator=">" identifier="a4" />
+ <qualified-identifier-restriction evaluator="==">
+ org.drools.Bar.BAR_ENUM_VALUE
+ </qualified-identifier-restriction>
+ </or-restriction-connective>
+ </field-constraint>
+ </pattern>
+
+ <pattern identifier="foo6" object-type="Bar" >
+ <field-binding field-name="a" identifier="a4" />
+ <field-constraint field-name="b">
+ <literal-restriction evaluator="==" value="6" />
+ </field-constraint>
+ </pattern>
+
+ <pattern identifier="foo7" object-type="Bar" >
+ <field-binding field-name="a" identifier="a4" />
+ <field-binding field-name="b" identifier="b4" />
+ </pattern>
+ <pattern object-type="Baz" > </pattern>
+ </lhs>
+ <rhs>
+ if ( a == b ) {
+ assert( foo3 );
+ } else {
+ retract( foo4 );
+ }
+ System.out.println( a4 );
+ </rhs>
+</rule>
+
+</package>
More information about the jboss-svn-commits
mailing list