Author: mar...@jb...
Date: 2006-07-04 19:09:51 -0400 (Tue, 04 Jul 2006)
New Revision: 4905
Added:
labs/jbossrules/trunk/drools-jsr94/src/test/resources/org/drools/jsr94/rules/sisters.xml
Modified:
labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/admin/LocalRuleExecutionSetProviderImpl.java
labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/StatelessRuleSessionTest.java
Log:
JBRULES-355 Enable XML rule language support with createRuleExecutionSet JSR 94 API
-Changed the xml property key
-Streamlined the LocalExecutionSetProviderImpl
Modified: labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/admin/LocalRuleExecutionSetProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/admin/LocalRuleExecutionSetProviderImpl.java 2006-07-03 20:47:34 UTC (rev 4904)
+++ labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/admin/LocalRuleExecutionSetProviderImpl.java 2006-07-04 23:09:51 UTC (rev 4905)
@@ -73,30 +73,12 @@
* @return The created <code>RuleExecutionSet</code>.
*/
public RuleExecutionSet createRuleExecutionSet(final InputStream ruleExecutionSetStream,
- final Map properties) throws RuleExecutionSetCreateException {
- try {
- final PackageBuilder builder = new PackageBuilder();
- if ( properties != null && properties.containsKey( "dsl" ) ) {
- final Reader dsl = new StringReader( (String) properties.get( "dsl" ) );
- builder.addPackageFromDrl( new InputStreamReader( ruleExecutionSetStream ),
- dsl );
- } else if (properties != null && properties.containsKey( "xml" ) ) {
- builder.addPackageFromXml(new InputStreamReader( ruleExecutionSetStream ) );
- } else {
- builder.addPackageFromDrl( new InputStreamReader( ruleExecutionSetStream ) );
- }
- final Package pkg = builder.getPackage();
- return this.createRuleExecutionSet( pkg,
- properties );
- } catch ( final IOException e ) {
- throw new RuleExecutionSetCreateException( "cannot create rule execution set",
- e );
- } catch ( final DroolsParserException e ) {
- throw new RuleExecutionSetCreateException( "cannot create rule execution set",
- e );
- }
+ final Map properties) throws RuleExecutionSetCreateException {
+ return createRuleExecutionSet( new InputStreamReader( ruleExecutionSetStream ), properties);
}
+
+
/**
* Creates a <code>RuleExecutionSet</code> implementation using a supplied
* character stream Reader and additional Drools-specific properties. A
@@ -118,28 +100,48 @@
final Map properties) throws RuleExecutionSetCreateException {
try {
final PackageBuilder builder = new PackageBuilder();
- if ( properties != null && properties.containsKey( "dsl" ) ) {
- final Reader dsl = new StringReader( (String) properties.get( "dsl" ) );
- builder.addPackageFromDrl( ruleExecutionSetReader,
- dsl );
- } else if (properties != null && properties.containsKey( "xml" )) {
- builder.addPackageFromXml( ruleExecutionSetReader );
+ String dsl = null;
+ String source = null;
+
+ if ( properties != null ) {
+ dsl = ( String ) properties.get( "dsl" );
+ source = ( String ) properties.get( "source" );
+ }
+
+ if ( source == null ) {
+ source = "drl";
+ }
+
+
+ if ( dsl == null ) {
+ if ( source.equals( "xml" ) ) {
+ builder.addPackageFromXml( ruleExecutionSetReader );
+ } else {
+ builder.addPackageFromDrl( ruleExecutionSetReader );
+ }
} else {
- builder.addPackageFromDrl( ruleExecutionSetReader );
+ if ( source.equals( "xml" ) ) {
+ // xml cannot specify a dsl
+ builder.addPackageFromXml( ruleExecutionSetReader );
+ } else {
+ builder.addPackageFromDrl( ruleExecutionSetReader,
+ new StringReader( dsl ) );
+ }
}
-
+
final Package pkg = builder.getPackage();
- return this.createRuleExecutionSet( pkg,
- properties );
+ return createRuleExecutionSet( pkg,
+ properties );
} catch ( final IOException e ) {
throw new RuleExecutionSetCreateException( "cannot create rule execution set",
e );
} catch ( final DroolsParserException e ) {
throw new RuleExecutionSetCreateException( "cannot create rule execution set",
e );
- }
+ }
}
-
+
+
/**
* Creates a <code>RuleExecutionSet</code> implementation from a
* Drools-specific AST representation and Drools-specific properties.
Modified: labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/StatelessRuleSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/StatelessRuleSessionTest.java 2006-07-03 20:47:34 UTC (rev 4904)
+++ labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/StatelessRuleSessionTest.java 2006-07-04 23:09:51 UTC (rev 4905)
@@ -52,7 +52,7 @@
private final String bindUri = "sisters.drl";
private final String bindUri_drl = "sisters_expander.drl";
private final String bindUri_dsl = "sisters_expander.dsl";
- private final String bindUri_xml = "sisters.xml";
+ private final String bindUri_xml = "sisters.xml";
private final String bindUri_globals = "sisters_globals.drl";
/**
@@ -73,18 +73,18 @@
this.sessionBuilder.addRuleExecutionSet( this.bindUri_drl,
StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_drl ),
map );
+
final Map map_xml = new HashMap();
- map_xml.put( "xml", "xml" );
+ map_xml.put( "source",
+ "xml" );
this.sessionBuilder.addRuleExecutionSet( this.bindUri_xml,
- StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_xml ),
- map_xml );
+ StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_xml ),
+ map_xml );
-
this.sessionBuilder.addRuleExecutionSet( this.bindUri_globals,
StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_globals ) );
}
-
/*
* Taken from DRLParser
@@ -103,59 +103,63 @@
return text;
}
- public void testCreateRuleExecutionSetFromStreamWithXml(){
-
- try {
- final Map map_xml = new HashMap();
- map_xml.put( "xml", "xml" );
-
- RuleServiceProvider ruleServiceProvider;
- RuleServiceProviderManager.registerRuleServiceProvider( "http://drools.org/",
- RuleServiceProviderImpl.class );
+ public void testCreateRuleExecutionSetFromStreamWithXml() {
- ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider( "http://drools.org/" );
+ try {
+ final Map map = new HashMap();
+ map.put( "source",
+ "xml" );
- LocalRuleExecutionSetProvider ruleSetProvider = ruleServiceProvider.getRuleAdministrator().getLocalRuleExecutionSetProvider( null );
- final RuleExecutionSet ruleExecutionSet = ruleSetProvider.createRuleExecutionSet( StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_xml ),
- map_xml );
- assertNotNull(ruleExecutionSet);
- } catch (RemoteException e) {
- fail();
- } catch (ConfigurationException e) {
- fail();
- } catch (RuleExecutionSetCreateException e) {
- fail();
- } catch (IOException e) {
- fail();
- }
+ RuleServiceProvider ruleServiceProvider;
+ RuleServiceProviderManager.registerRuleServiceProvider( "http://drools.org/",
+ RuleServiceProviderImpl.class );
+
+ ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider( "http://drools.org/" );
+
+ LocalRuleExecutionSetProvider ruleSetProvider = ruleServiceProvider.getRuleAdministrator().getLocalRuleExecutionSetProvider( null );
+ final RuleExecutionSet ruleExecutionSet = ruleSetProvider.createRuleExecutionSet( StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_xml ),
+ map );
+ assertNotNull( ruleExecutionSet );
+ } catch ( RemoteException e ) {
+ fail();
+ } catch ( ConfigurationException e ) {
+ fail();
+ } catch ( RuleExecutionSetCreateException e ) {
+ fail();
+ } catch ( IOException e ) {
+ fail();
+ }
}
-public void testCreateRuleExecutionSetFromStreamReaderWithXml(){
- try {
- final Map map_xml = new HashMap();
- map_xml.put( "xml", "xml" );
-
- RuleServiceProvider ruleServiceProvider;
- RuleServiceProviderManager.registerRuleServiceProvider( "http://drools.org/",
- RuleServiceProviderImpl.class );
- ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider( "http://drools.org/" );
+ public void testCreateRuleExecutionSetFromStreamReaderWithXml() {
+ try {
+ final Map map = new HashMap();
+ map.put( "source",
+ "xml" );
- LocalRuleExecutionSetProvider ruleSetProvider = ruleServiceProvider.getRuleAdministrator().getLocalRuleExecutionSetProvider( null );
- final Reader ruleReader = new InputStreamReader( StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_xml ) );
- final RuleExecutionSet ruleExecutionSet = ruleSetProvider.createRuleExecutionSet( ruleReader,
- map_xml );
- assertNotNull(ruleExecutionSet);
+ RuleServiceProvider ruleServiceProvider;
+ RuleServiceProviderManager.registerRuleServiceProvider( "http://drools.org/",
+ RuleServiceProviderImpl.class );
- } catch (RemoteException e) {
- fail();
- } catch (ConfigurationException e) {
- fail();
- } catch (RuleExecutionSetCreateException e) {
- fail();
- } catch (IOException e) {
- fail();
- }
+ ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider( "http://drools.org/" );
+
+ LocalRuleExecutionSetProvider ruleSetProvider = ruleServiceProvider.getRuleAdministrator().getLocalRuleExecutionSetProvider( null );
+ final Reader ruleReader = new InputStreamReader( StatelessRuleSessionTest.class.getResourceAsStream( this.bindUri_xml ) );
+ final RuleExecutionSet ruleExecutionSet = ruleSetProvider.createRuleExecutionSet( ruleReader,
+ map );
+ assertNotNull( ruleExecutionSet );
+
+ } catch ( RemoteException e ) {
+ fail();
+ } catch ( ConfigurationException e ) {
+ fail();
+ } catch ( RuleExecutionSetCreateException e ) {
+ fail();
+ } catch ( IOException e ) {
+ fail();
+ }
}
+
/**
* Test executeRules with globals.
*/
@@ -263,6 +267,7 @@
statelessSession.release();
}
+
/**
* Test executeRules with normal drl.
*/
Added: labs/jbossrules/trunk/drools-jsr94/src/test/resources/org/drools/jsr94/rules/sisters.xml
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/src/test/resources/org/drools/jsr94/rules/sisters.xml 2006-07-03 20:47:34 UTC (rev 4904)
+++ labs/jbossrules/trunk/drools-jsr94/src/test/resources/org/drools/jsr94/rules/sisters.xml 2006-07-04 23:09:51 UTC (rev 4905)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package name="SistersRules"
+ xmlns="http://drools.org/drools-3.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-3.0 drools-3.0.xsd">
+
+ <import name="org.drools.jsr94.rules.Person" />
+
+ <rule name="FindSisters">
+ <lhs>
+ <column object-type="Person" identifier="$person1">
+ <field-binding field-name="name" identifier="$name1" />
+ </column>
+
+ <column object-type="Person" identifier="$person2">
+ <field-binding field-name="name" identifier="$name2" />
+ </column>
+ <eval>$person1.hasSister($person2)</eval>
+ </lhs>
+
+ <rhs>
+ System.out.println($person1.getName() + " and " + $person2.getName() +" are sisters");
+ assert( $person1.getName() + " and " + $person2.getName() +" are sisters");
+ </rhs>
+ </rule>
+</package>
\ No newline at end of file
|