[jboss-svn-commits] JBL Code SVN: r14494 - in labs/jbossrules/trunk: drools-ant/src/test/java/org/drools/contrib and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 23 14:09:06 EDT 2007


Author: fmeyer
Date: 2007-08-23 14:09:06 -0400 (Thu, 23 Aug 2007)
New Revision: 14494

Added:
   labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/
   labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/Person.brl
   labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/emptydir/
   labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/emptydir/Person.brl
   labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/rule.package
   labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/tmp.package
   labs/jbossrules/trunk/drools-ant/src/test/resources/rules/Person.xml
Modified:
   labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsAntTask.java
   labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java
   labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java
Log:
JBRULES-1118 - added support for xml and ruleflow file format

Modified: labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsAntTask.java
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsAntTask.java	2007-08-23 16:53:10 UTC (rev 14493)
+++ labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsAntTask.java	2007-08-23 18:09:06 UTC (rev 14494)
@@ -21,6 +21,7 @@
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -49,7 +50,12 @@
  * @author etirelli
  */
 public class DroolsAntTask extends MatchingTask {
-
+    
+    
+    public static String BRLFILEEXTENSION = ".brl";
+    public static String XMLFILEEXTENSION = ".xml";
+    public static String RULEFLOWFILEEXTENSION = ".rf";
+    
     private File srcdir;
     private File toFile;
     private Path classpath;
@@ -191,21 +197,31 @@
         InputStreamReader instream = null;
 
         try {
-            if ( fileName.endsWith( BRXMLPersistence.FILEEXTENSION ) ) {
+
+            if ( fileName.endsWith( DroolsAntTask.BRLFILEEXTENSION ) ) {
                 RuleModel model = BRXMLPersistence.getInstance().unmarshal( loadResource( fileName ) );
-                String packagefile = loadResource( "rule.package" );
-                model.name = fileName.replace( BRXMLPersistence.FILEEXTENSION, "" );
+                String packagefile = loadResource( getPackageFile( this.srcdir.getAbsolutePath() ) );
+                
+                model.name = fileName.replace( DroolsAntTask.BRLFILEEXTENSION,
+                                               "" );
+                
                 ByteArrayInputStream istream = new ByteArrayInputStream( (packagefile + BRDRLPersistence.getInstance().marshal( model )).getBytes() );
                 instream = new InputStreamReader( istream );
             } else {
-
                 File file = new File( this.srcdir,
                                       fileName );
-
+                
                 instream = new InputStreamReader( new FileInputStream( file ) );
             }
 
-            builder.addPackageFromDrl( instream );
+            if ( fileName.endsWith( DroolsAntTask.RULEFLOWFILEEXTENSION ) ) {
+                builder.addRuleFlow( instream );
+            } else if ( fileName.endsWith( DroolsAntTask.XMLFILEEXTENSION ) ) {
+                builder.addPackageFromXml( instream );
+            } else {
+                builder.addPackageFromDrl( instream );
+            }
+
         } finally {
             if ( instream != null ) {
                 instream.close();
@@ -213,6 +229,30 @@
         }
     }
 
+    private String getPackageFile(String dirname) {
+
+        File dir = new File( dirname );
+
+        FilenameFilter filter = new FilenameFilter() {
+            public boolean accept(File dir,
+                                  String name) {
+                return name.endsWith( ".package" );
+            }
+        };
+
+        String[] children = dir.list( filter );
+
+        if ( children.length > 1 ) {
+            throw new BuildException( "There are more than one package configuration file for this directory :" + dirname );
+        }
+
+        if ( children.length == 0 ) {
+            throw new BuildException( "There is no package configuration file for this directory:" + dirname );
+        }
+
+        return children[0];
+    }
+
     private String loadResource(final String name) throws IOException {
 
         final InputStream in = new FileInputStream( this.srcdir + "/" + name );

Modified: labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java	2007-08-23 16:53:10 UTC (rev 14493)
+++ labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java	2007-08-23 18:09:06 UTC (rev 14494)
@@ -24,23 +24,41 @@
 public class DroolsAntTaskTest extends BuildFileTest {
 
     public DroolsAntTaskTest() {
-        super("DroolsAntTest");
+        super( "DroolsAntTest" );
     }
 
     public void setUp() {
-        configureProject("src/test/resources/DroolsAntTask.xml");
+        configureProject( "src/test/resources/DroolsAntTask.xml" );
     }
 
     public void testRules() {
         try {
-            executeTarget("rules");
-        } catch( Exception e ) {
+            executeTarget( "rules" );
+        } catch ( Exception e ) {
             e.printStackTrace();
-            Assert.fail("Should not throw any exception: " + e.getMessage() );
+            Assert.fail( "Should not throw any exception: " + e.getMessage() );
         }
     }
 
+    public void testNoPackageFile() {
+        try {
+            executeTarget( "rulesnopackagefile" );
+            Assert.fail( "Should throw an exception " );
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void testManyPackageFiles() {
+        try {
+            executeTarget( "rulesmanypackagefile" );
+            Assert.fail( "Should throw an exception " );
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     public void tearDown() {
     }
-    
+
 }

Modified: labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml	2007-08-23 16:53:10 UTC (rev 14493)
+++ labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml	2007-08-23 18:09:06 UTC (rev 14494)
@@ -21,8 +21,29 @@
 			tofile="${eclipsepath}target/cheese.rules"
 			classpathref="cheese.classpath" > 
 			<include name="*.drl" />
+			<include name="*.brl" />
+			<include name="*.xml" />			
+		</rulebase>
+	</target>
+	
+	<target name="rulesnopackagefile" >
+		<rulebase 
+			srcdir="${eclipsepath}src/test/resources/packagefiletest/emptydir" 		
+			tofile="${eclipsepath}target/cheese.rules"
+			classpathref="cheese.classpath" > 
+			<include name="*.drl" />
 			<include name="*.brl" />			
 		</rulebase>
 	</target>
 
+	<target name="rulesmanypackagefile" >
+		<rulebase 
+			srcdir="${eclipsepath}src/test/resources/packagefiletest" 		
+			tofile="${eclipsepath}target/cheese.rules"
+			classpathref="cheese.classpath" > 
+			<include name="*.drl" />
+			<include name="*.brl" />
+		</rulebase>
+	</target>
+
 </project>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/Person.brl
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/Person.brl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/Person.brl	2007-08-23 18:09:06 UTC (rev 14494)
@@ -0,0 +1,49 @@
+<rule>
+  <modelVersion>1.0</modelVersion>
+  <attributes>
+    <attribute>
+      <attributeName>no-loop</attributeName>
+      <value>true</value>
+    </attribute>
+  </attributes>
+  <lhs>
+    <fact>
+     <constraintList>
+      <constraints>
+        <fieldConstraint>
+          <fieldBinding>f1</fieldBinding>
+          <fieldName>age</fieldName>
+          <operator>&lt;</operator>
+          <value>42</value>
+          <constraintValueType>0</constraintValueType>
+        </fieldConstraint>
+      </constraints>
+     </constraintList>
+      <factType>Person</factType>
+      <boundName>p1</boundName>
+    </fact>
+    <compositePattern>
+      <type>not</type>
+      <patterns>
+        <fact>
+          <factType>Cheese</factType>
+        </fact>
+      </patterns>
+    </compositePattern>
+  </lhs>
+  <rhs>
+    <modify>
+      <variable>p1</variable>
+      <fieldValues>
+        <fieldValue>
+          <field>status</field>
+          <value>rejected</value>
+          <type>String</type>
+        </fieldValue>
+      </fieldValues>
+    </modify>
+    <retract>
+      <variableName>p1</variableName>
+    </retract>
+  </rhs>
+</rule>

Added: labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/emptydir/Person.brl
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/emptydir/Person.brl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/emptydir/Person.brl	2007-08-23 18:09:06 UTC (rev 14494)
@@ -0,0 +1,49 @@
+<rule>
+  <modelVersion>1.0</modelVersion>
+  <attributes>
+    <attribute>
+      <attributeName>no-loop</attributeName>
+      <value>true</value>
+    </attribute>
+  </attributes>
+  <lhs>
+    <fact>
+     <constraintList>
+      <constraints>
+        <fieldConstraint>
+          <fieldBinding>f1</fieldBinding>
+          <fieldName>age</fieldName>
+          <operator>&lt;</operator>
+          <value>42</value>
+          <constraintValueType>0</constraintValueType>
+        </fieldConstraint>
+      </constraints>
+     </constraintList>
+      <factType>Person</factType>
+      <boundName>p1</boundName>
+    </fact>
+    <compositePattern>
+      <type>not</type>
+      <patterns>
+        <fact>
+          <factType>Cheese</factType>
+        </fact>
+      </patterns>
+    </compositePattern>
+  </lhs>
+  <rhs>
+    <modify>
+      <variable>p1</variable>
+      <fieldValues>
+        <fieldValue>
+          <field>status</field>
+          <value>rejected</value>
+          <type>String</type>
+        </fieldValue>
+      </fieldValues>
+    </modify>
+    <retract>
+      <variableName>p1</variableName>
+    </retract>
+  </rhs>
+</rule>

Added: labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/rule.package
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/rule.package	                        (rev 0)
+++ labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/rule.package	2007-08-23 18:09:06 UTC (rev 14494)
@@ -0,0 +1,8 @@
+//This is a package configuration file
+//Add imports, globals etc here which will be used by all the rule assets in thise folder.
+
+package org.drools.test;
+
+import org.drools.contrib.Person;
+import org.drools.contrib.Cheese;
+

Added: labs/jbossrules/trunk/drools-ant/src/test/resources/packagefiletest/tmp.package
===================================================================

Added: labs/jbossrules/trunk/drools-ant/src/test/resources/rules/Person.xml
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/resources/rules/Person.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-ant/src/test/resources/rules/Person.xml	2007-08-23 18:09:06 UTC (rev 14494)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<package name="org.drools.test"
+         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="org.drools.contrib.Person" />
+	<import name="org.drools.contrib.Cheese" />
+
+<rule name="simple_rule">
+	<rule-attribute name="salience" value="10" />
+	<rule-attribute name="no-loop" value="true" />
+
+	<lhs>
+	
+		<pattern identifier="p" object-type="Person" >
+			<field-binding field-name="status" identifier="s" />		
+			<field-constraint field-name="name">
+            	<literal-restriction evaluator="==" value="bob" />
+            </field-constraint>		
+		</pattern>
+			
+	</lhs>
+	<rhs>
+		s = "DONE";
+	</rhs>
+</rule>
+
+</package>


Property changes on: labs/jbossrules/trunk/drools-ant/src/test/resources/rules/Person.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java	2007-08-23 16:53:10 UTC (rev 14493)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java	2007-08-23 18:09:06 UTC (rev 14494)
@@ -29,7 +29,6 @@
 
     private XStream                     xt;
     private static final BRLPersistence INSTANCE = new BRXMLPersistence();
-    public static String FILEEXTENSION = ".brl";
 
     private BRXMLPersistence() {
         this.xt = new XStream( new DomDriver() );

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-08-23 16:53:10 UTC (rev 14493)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-08-23 18:09:06 UTC (rev 14494)
@@ -42,6 +42,8 @@
  * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
  */
 public class ProcessBuilder {
+    
+    
 	
 	private PackageBuilder packageBuilder;
     private final List processes = new ArrayList();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java	2007-08-23 16:53:10 UTC (rev 14493)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java	2007-08-23 18:09:06 UTC (rev 14494)
@@ -57,7 +57,7 @@
         final RuleModel m = getComplexModel();
 
         final String xml = p.marshal( m );
-        //System.out.println( xml );
+        System.out.println( xml );
 
         assertTrue( xml.indexOf( "org.drools" ) == -1 );
 




More information about the jboss-svn-commits mailing list