[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="&gt;" value="60" />
+                                <literal-restriction evaluator="&lt;" value="70" />
+                            </and-restriction-connective>
+                            <and-restriction-connective>
+                                <literal-restriction evaluator="&lt;" value="50" />
+                                <literal-restriction evaluator="&gt;" 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="&gt;" 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