[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><</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><</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