[jboss-svn-commits] JBL Code SVN: r17179 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/xml and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Dec 11 09:14:28 EST 2007
Author: mark.proctor at jboss.com
Date: 2007-12-11 09:14:28 -0500 (Tue, 11 Dec 2007)
New Revision: 17179
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ProcessSemanticModule.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RulesSemanticModule.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/StoreHandler.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXmlDsl.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/
labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/mydsl.conf
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/XmlDslTest.xml
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExtensibleXmlParser.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModules.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/ActionNodeTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTestHelper.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/XmlPackageReaderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/processes/ActionNodeTest.xml
Log:
JBRULES-1375 Create initial ePDL language parser implementation
-Merged with CEP changed in trunk
-XML DSLs are now discoverable
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -80,9 +80,7 @@
private Dialect dialect;
- private DialectRegistry dialectRegistry;
-
- private SemanticModules semanticModules;
+ private DialectRegistry dialectRegistry;
/**
* Use this when package is starting from scratch.
@@ -180,10 +178,7 @@
*/
public void addPackageFromXml(final Reader reader) throws DroolsParserException,
IOException {
- if ( semanticModules == null ) {
- semanticModules = new SemanticModules();
- }
- final XmlPackageReader xmlReader = new XmlPackageReader( semanticModules );
+ final XmlPackageReader xmlReader = new XmlPackageReader( this.configuration.getSemanticModules() );
try {
xmlReader.read( reader );
@@ -235,13 +230,9 @@
this.results = this.dialectRegistry.addResults( this.results );
}
- public void addProcessFromXml(Reader reader) {
- if ( semanticModules == null ) {
- semanticModules = new SemanticModules();
- }
-
+ public void addProcessFromXml(Reader reader) {
ProcessBuilder processBuilder = new ProcessBuilder( this );
- XmlProcessReader xmlReader = new XmlProcessReader( semanticModules );
+ XmlProcessReader xmlReader = new XmlProcessReader( this.configuration.getSemanticModules() );
try {
Process process = xmlReader.read( reader );
processBuilder.buildProcess( process );
@@ -483,7 +474,7 @@
if ( this.pkg != null && this.pkg.getPackageCompilationData() != null && this.pkg.getPackageCompilationData().isDirty() ) {
this.pkg.getPackageCompilationData().reload();
}
- if ( hasErrors() ) {
+ if ( hasErrors() && this.pkg != null ) {
this.pkg.setError( getErrors().toString() );
}
return this.pkg;
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -34,6 +34,10 @@
import org.drools.base.evaluators.EvaluatorDefinition;
import org.drools.base.evaluators.EvaluatorRegistry;
import org.drools.util.ChainedProperties;
+import org.drools.xml.DefaultSemanticModule;
+import org.drools.xml.Handler;
+import org.drools.xml.ProcessSemanticModule;
+import org.drools.xml.RulesSemanticModule;
import org.drools.xml.SemanticModule;
import org.drools.xml.SemanticModules;
@@ -61,7 +65,7 @@
public class PackageBuilderConfiguration {
private static final String ACCUMULATE_FUNCTION_PREFIX = "drools.accumulate.function.";
-
+
private static final String EVALUATOR_DEFINITION_PREFIX = "drools.evaluator.";
private Map dialectConfigurations;
@@ -82,7 +86,7 @@
* Constructor that sets the parent class loader for the package being built/compiled
* @param classLoader
*/
- public PackageBuilderConfiguration(ClassLoader classLoader ) {
+ public PackageBuilderConfiguration(ClassLoader classLoader) {
init( classLoader,
null );
}
@@ -128,9 +132,9 @@
if ( properties != null ) {
this.chainedProperties.addProperties( properties );
}
-
+
this.dialectConfigurations = new HashMap();
-
+
buildDialectConfigurationMap();
buildAccumulateFunctionsMap();
@@ -149,42 +153,46 @@
"drools.dialect",
false );
setDefaultDialect( (String) dialectProperties.remove( "drools.dialect.default" ) );
-
+
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
for ( Iterator it = dialectProperties.entrySet().iterator(); it.hasNext(); ) {
Entry entry = (Entry) it.next();
String str = (String) entry.getKey();
String dialectName = str.substring( str.lastIndexOf( "." ) + 1 );
String dialectClass = (String) entry.getValue();
- addDialect( dialectName, dialectClass);
+ addDialect( dialectName,
+ dialectClass );
}
}
-
- public void addDialect(String dialectName, String dialectClass) {
+
+ public void addDialect(String dialectName,
+ String dialectClass) {
try {
Class cls = classLoader.loadClass( dialectClass );
DialectConfiguration dialectConf = (DialectConfiguration) cls.newInstance();
dialectConf.init( this );
- addDialect( dialectName,
- dialectConf);
+ addDialect( dialectName,
+ dialectConf );
} catch ( Exception e ) {
throw new RuntimeDroolsException( "Unable to load dialect '" + dialectClass + ":" + dialectName + "'",
e );
- }
+ }
}
- public void addDialect(String dialectName, DialectConfiguration dialectConf) {
+ public void addDialect(String dialectName,
+ DialectConfiguration dialectConf) {
dialectConfigurations.put( dialectName,
- dialectConf );
+ dialectConf );
}
-
+
public DialectRegistry buildDialectRegistry() {
- DialectRegistry registry = new DialectRegistry();
- for ( Iterator it = this.dialectConfigurations.values().iterator(); it.hasNext(); ) {
- DialectConfiguration conf = ( DialectConfiguration ) it.next();
- Dialect dialect = conf.getDialect();
- registry.addDialect( conf.getDialect().getId(), dialect );
- }
+ DialectRegistry registry = new DialectRegistry();
+ for ( Iterator it = this.dialectConfigurations.values().iterator(); it.hasNext(); ) {
+ DialectConfiguration conf = (DialectConfiguration) it.next();
+ Dialect dialect = conf.getDialect();
+ registry.addDialect( conf.getDialect().getId(),
+ dialect );
+ }
return registry;
}
@@ -216,129 +224,206 @@
this.classLoader = classLoader;
}
}
-
-// public void addSemanticModule(SemanticModule module) {
-// if ( this.semanticModules == null ) {
-// initSemanticModules();
-// }
-// this.semanticModules.addSemanticModule( module );
-// }
-//
-// public SemanticModules getSemanticModules() {
-// if ( this.semanticModules == null ) {
-// initSemanticModules();
-// }
-// return this.semanticModules;
-// }
-//
-// public void initSemanticModules() {
-// this.semanticModules = new SemanticModules();
-// // split on each space
-// String locations[] = this.chainedProperties.getProperty( "semanticModues", "" ).split( "\\s" );
-//
-// int i = 0;
-// // load each SemanticModule
-// for ( String moduleLocation : locations ) {
-// // trim leading/trailing spaces and quotes
-// moduleLocation = moduleLocation.trim();
-// if ( moduleLocation.startsWith( "\"" ) ) {
-// moduleLocation = moduleLocation.substring( 1 );
-// }
-// if ( moduleLocation.endsWith( "\"" ) ) {
-// moduleLocation = moduleLocation.substring( 0, moduleLocation.length() -1 );
-// }
-// loadSemanticModule(moduleLocation);
-// }
-// }
-//
-// public void loadSemanticModule(String moduleLocation) {
-// ChainedProperties properties = new ChainedProperties(this.classLoader, moduleLocation );
-// String uri = properties.getProperty( "uri", null );
-// if ( uri == null || uri.trim().equals( "" ) ) {
-// throw new RuntimeException( "Semantic Module URI property must not be empty" );
-// }
-//
-// if ( classLoader == null ) {
-// classLoader = Thread.currentThread().getContextClassLoader();
-// if ( classLoader == null ) {
-// classLoader = this.getClass().getClassLoader();
-// }
-// }
-//
-//
-// // User home properties file
-// loadProperties( System.getProperty( "user.home" ) + moduleLocation );
-//
-// // Working directory properties file
-// loadProperties( moduleLocation );
-//
-// // check META-INF directories for all known ClassLoaders
-// ClassLoader confClassLoader = classLoader;
-// if ( confClassLoader != null ) {
-// loadProperties( getResources( "META-INF/" + moduleLocation,
-// confClassLoader ) );
-// }
-//
-// confClassLoader = getClass().getClassLoader();
-// if ( confClassLoader != null && confClassLoader != classLoader ) {
-// loadProperties( getResources( "META-INF/drools." + moduleLocation,
-// confClassLoader ),
-// this.props );
-// }
-//
-// confClassLoader = Thread.currentThread().getContextClassLoader();
-// if ( confClassLoader != null && confClassLoader != classLoader ) {
-// loadProperties( getResources( "META-INF/drools." + confFileName,
-// confClassLoader ),
-// this.props );
-// }
-//
-// confClassLoader = ClassLoader.getSystemClassLoader();
-// if ( confClassLoader != null && confClassLoader != classLoader ) {
-// loadProperties( getResources( "META-INF/drools." + confFileName,
-// confClassLoader ),
-// this.props );
-// }
-// }
-//
-// private Properties loadProperties(String fileName) {
-// Properties properties = null;
-// if ( fileName != null ) {
-// File file = new File( fileName );
-// if ( file != null && file.exists() ) {
-// try {
-// properties = loadProperties( file.toURL() );
-// } catch ( MalformedURLException e ) {
-// throw new IllegalArgumentException( "file.toURL() failed for drools.packagebuilder.conf properties value '" + file + "'" );
-// }
-// } else {
-// throw new IllegalArgumentException( fileName + " is specified but cannot be found '" + file + "'" );
-// }
-// }
-// return properties;
-// }
-//
-// private Properties loadProperties(URL confURL) {
-// Properties properties = new Properties();
-// try {
-// properties.load( confURL.openStream() );
-// } catch ( IOException e ) {
-// throw new IllegalArgumentException( "Invalid URL to properties file '" + confURL.toExternalForm() + "'" );
-// }
-// return properties;
-// }
-//
-// private Enumeration getResources(String name,
-// ClassLoader classLoader) {
-// Enumeration enumeration = null;
-// try {
-// enumeration = classLoader.getResources( name );
-// } catch ( IOException e ) {
-// e.printStackTrace();
-// }
-// return enumeration;
-// }
+ public void addSemanticModule(SemanticModule module) {
+ if ( this.semanticModules == null ) {
+ initSemanticModules();
+ }
+ this.semanticModules.addSemanticModule( module );
+ }
+
+ public SemanticModules getSemanticModules() {
+ if ( this.semanticModules == null ) {
+ initSemanticModules();
+ }
+ return this.semanticModules;
+ }
+
+ public void initSemanticModules() {
+ this.semanticModules = new SemanticModules();
+
+ this.semanticModules.addSemanticModule( new ProcessSemanticModule() );
+ this.semanticModules.addSemanticModule( new RulesSemanticModule() );
+
+ // split on each space
+ String locations[] = this.chainedProperties.getProperty( "semanticModules",
+ "" ).split( "\\s" );
+
+ int i = 0;
+ // load each SemanticModule
+ for ( String moduleLocation : locations ) {
+ // trim leading/trailing spaces and quotes
+ moduleLocation = moduleLocation.trim();
+ if ( moduleLocation.startsWith( "\"" ) ) {
+ moduleLocation = moduleLocation.substring( 1 );
+ }
+ if ( moduleLocation.endsWith( "\"" ) ) {
+ moduleLocation = moduleLocation.substring( 0,
+ moduleLocation.length() - 1 );
+ }
+ if ( !moduleLocation.equals( "" ) ) {
+ loadSemanticModule( moduleLocation );
+ }
+ }
+ }
+
+ public void loadSemanticModule(String moduleLocation) {
+ // initialise default classloader, if it does not exist
+ if ( classLoader == null ) {
+ classLoader = Thread.currentThread().getContextClassLoader();
+ if ( classLoader == null ) {
+ classLoader = this.getClass().getClassLoader();
+ }
+ }
+
+ Properties properties = null;
+
+ // User home
+ String userHome = System.getProperty( "user.home" );
+ if ( userHome.endsWith( "\\" ) || userHome.endsWith( "/" ) ) {
+ properties = loadProperties( userHome + moduleLocation );
+ } else {
+ properties = loadProperties( userHome + "/" + moduleLocation );
+ }
+
+ if ( properties == null ) {
+ // Working directory
+ properties = loadProperties( moduleLocation );
+ }
+
+ // check META-INF directories for all known ClassLoaders
+
+ if ( properties == null ) {
+ ClassLoader confClassLoader = classLoader;
+ if ( confClassLoader != null ) {
+ properties = loadProperties( confClassLoader.getResource( "META-INF/" + moduleLocation ) );
+ }
+ }
+
+ if ( properties == null ) {
+ ClassLoader confClassLoader = getClass().getClassLoader();
+ if ( confClassLoader != null && confClassLoader != classLoader ) {
+ properties = loadProperties( confClassLoader.getResource( "META-INF/" + moduleLocation ) );
+ }
+ }
+
+ if ( properties == null ) {
+ ClassLoader confClassLoader = Thread.currentThread().getContextClassLoader();
+ if ( confClassLoader != null && confClassLoader != classLoader ) {
+ properties = loadProperties( confClassLoader.getResource( "META-INF/" + moduleLocation ) );
+ }
+ }
+
+ if ( properties == null ) {
+ ClassLoader confClassLoader = ClassLoader.getSystemClassLoader();
+ if ( confClassLoader != null && confClassLoader != classLoader ) {
+ properties = loadProperties( confClassLoader.getResource( "META-INF/" + moduleLocation ) );
+ }
+ }
+
+ if ( properties == null ) {
+ throw new IllegalArgumentException( moduleLocation + " is specified but cannot be found.'" );
+ }
+
+ loadSemanticModule( properties );
+ }
+
+ public void loadSemanticModule(Properties properties) {
+ String uri = properties.getProperty( "uri",
+ null );
+ if ( uri == null || uri.trim().equals( "" ) ) {
+ throw new RuntimeException( "Semantic Module URI property must not be empty" );
+ }
+
+ DefaultSemanticModule module = new DefaultSemanticModule( uri );
+
+ for ( Entry<Object, Object> entry : properties.entrySet() ) {
+ String elementName = (String) entry.getKey();
+
+ //uri is processed above, so skip
+ if ( "uri".equals( elementName ) ) {
+ continue;
+ }
+
+ if ( elementName == null || elementName.trim().equals( "" ) ) {
+ throw new RuntimeException( "Element name must be specified for Semantic Module handler" );
+ }
+ String handlerName = (String) entry.getValue();
+ if ( handlerName == null || handlerName.trim().equals( "" ) ) {
+ throw new RuntimeException( "Handler name must be specified for Semantic Module" );
+ }
+
+ Handler handler = null;
+
+ try {
+ handler = (Handler) this.classLoader.loadClass( handlerName ).newInstance();
+ } catch ( Exception e ) {
+ //swallow
+ }
+
+ if ( handler == null ) {
+ try {
+ handler = (Handler) getClass().getClassLoader().loadClass( handlerName ).newInstance();
+ } catch ( Exception e ) {
+ //swallow
+ }
+ }
+
+ if ( handler == null ) {
+ try {
+ handler = (Handler) Thread.currentThread().getContextClassLoader().loadClass( handlerName ).newInstance();
+ } catch ( Exception e ) {
+ //swallow
+ }
+ }
+
+ if ( handler == null ) {
+ try {
+ handler = (Handler) ClassLoader.getSystemClassLoader().loadClass( handlerName ).newInstance();
+ } catch ( Exception e ) {
+ //swallow
+ }
+ }
+
+ if ( handler == null ) {
+ throw new RuntimeException( "Unable to load Semantic Module handler '" + elementName + ":" + handlerName + "'" );
+ } else {
+ module.addHandler( elementName,
+ handler );
+ }
+ }
+ this.semanticModules.addSemanticModule( module );
+ }
+
+ private Properties loadProperties(String fileName) {
+ Properties properties = null;
+ if ( fileName != null ) {
+ File file = new File( fileName );
+ if ( file != null && file.exists() ) {
+ try {
+ properties = loadProperties( file.toURL() );
+ } catch ( MalformedURLException e ) {
+ throw new IllegalArgumentException( "file.toURL() failed for '" + file + "'" );
+ }
+ }
+ }
+ return properties;
+ }
+
+ private Properties loadProperties(URL confURL) {
+ if ( confURL == null ) {
+ return null;
+ }
+
+ Properties properties = new Properties();
+ try {
+ properties.load( confURL.openStream() );
+ } catch ( IOException e ) {
+ throw new IllegalArgumentException( "Invalid URL to properties file '" + confURL.toExternalForm() + "'" );
+ }
+ return properties;
+ }
+
private void buildAccumulateFunctionsMap() {
this.accumulateFunctions = new HashMap<String, String>();
Map temp = new HashMap();
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExtensibleXmlParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExtensibleXmlParser.java 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExtensibleXmlParser.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -474,7 +474,12 @@
Handler getHandler(final String uri,
final String localName) {
- return (Handler) this.modules.getSemanticModule( uri ).getHandler( localName );
+ SemanticModule module = this.modules.getSemanticModule( uri );
+ if ( module != null ) {
+ return module.getHandler( localName );
+ } else {
+ return null;
+ }
}
/**
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ProcessSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ProcessSemanticModule.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ProcessSemanticModule.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -0,0 +1,30 @@
+package org.drools.xml;
+
+import org.drools.xml.processes.ActionNodeHandler;
+import org.drools.xml.processes.ConnectionHandler;
+import org.drools.xml.processes.EndNodeHandler;
+import org.drools.xml.processes.GlobalHandler;
+import org.drools.xml.processes.ImportHandler;
+import org.drools.xml.processes.ProcessHandler;
+import org.drools.xml.processes.StartNodeHandler;
+
+public class ProcessSemanticModule extends DefaultSemanticModule implements SemanticModule {
+ public ProcessSemanticModule() {
+ super ( "http://drools.org/drools-4.0/process" );
+
+ addHandler( "process",
+ new ProcessHandler() );
+ addHandler( "start",
+ new StartNodeHandler() );
+ addHandler( "end",
+ new EndNodeHandler() );
+ addHandler( "action",
+ new ActionNodeHandler() );
+ addHandler( "connection",
+ new ConnectionHandler() );
+ addHandler( "import",
+ new ImportHandler() );
+ addHandler( "global",
+ new GlobalHandler() );
+ }
+}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RulesSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RulesSemanticModule.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RulesSemanticModule.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -0,0 +1,120 @@
+package org.drools.xml;
+
+import org.drools.xml.rules.AccumulateHandler;
+import org.drools.xml.rules.AccumulateHelperHandler;
+import org.drools.xml.rules.AndHandler;
+import org.drools.xml.rules.CollectHandler;
+import org.drools.xml.rules.EvalHandler;
+import org.drools.xml.rules.ExistsHandler;
+import org.drools.xml.rules.ExpressionHandler;
+import org.drools.xml.rules.FieldBindingHandler;
+import org.drools.xml.rules.FieldConstraintHandler;
+import org.drools.xml.rules.ForallHandler;
+import org.drools.xml.rules.FromHandler;
+import org.drools.xml.rules.FunctionHandler;
+import org.drools.xml.rules.LiteralRestrictionHandler;
+import org.drools.xml.rules.NotHandler;
+import org.drools.xml.rules.OrHandler;
+import org.drools.xml.rules.PackageHandler;
+import org.drools.xml.rules.PatternHandler;
+import org.drools.xml.rules.PredicateHandler;
+import org.drools.xml.rules.QualifiedIdentifierRestrictionHandler;
+import org.drools.xml.rules.QueryHandler;
+import org.drools.xml.rules.RestrictionConnectiveHandler;
+import org.drools.xml.rules.ReturnValueRestrictionHandler;
+import org.drools.xml.rules.RuleHandler;
+import org.drools.xml.rules.VariableRestrictionsHandler;
+
+public class RulesSemanticModule extends DefaultSemanticModule
+ implements
+ SemanticModule {
+ public RulesSemanticModule() {
+ super( "http://drools.org/drools-4.0" );
+
+ addHandler( "package",
+ new PackageHandler() );
+ addHandler( "rule",
+ new RuleHandler() );
+ addHandler( "query",
+ new QueryHandler() );
+ addHandler( "attribute",
+ null );
+ addHandler( "function",
+ new FunctionHandler() );
+
+ // Conditional Elements
+ addHandler( "lhs",
+ new AndHandler() );
+
+ addHandler( "and-restriction-connective",
+ new RestrictionConnectiveHandler() );
+
+ addHandler( "or-restriction-connective",
+ new RestrictionConnectiveHandler() );
+
+ addHandler( "and-conditional-element",
+ new AndHandler() );
+
+ addHandler( "or-conditional-element",
+ new OrHandler() );
+
+ addHandler( "and-constraint-connective",
+ new AndHandler() );
+ addHandler( "or-constraint-connective",
+ new OrHandler() );
+
+ addHandler( "not",
+ new NotHandler() );
+ addHandler( "exists",
+ new ExistsHandler() );
+ addHandler( "eval",
+ new EvalHandler() );
+ addHandler( "pattern",
+ new PatternHandler() );
+
+ addHandler( "from",
+ new FromHandler() );
+ addHandler( "forall",
+ new ForallHandler() );
+ addHandler( "collect",
+ new CollectHandler() );
+ addHandler( "accumulate",
+ new AccumulateHandler() );
+
+ // Field Constraints
+ addHandler( "field-constraint",
+ new FieldConstraintHandler() );
+ addHandler( "literal-restriction",
+ new LiteralRestrictionHandler() );
+ addHandler( "variable-restriction",
+ new VariableRestrictionsHandler() );
+ addHandler( "predicate",
+ new PredicateHandler() );
+
+ addHandler( "return-value-restriction",
+ new ReturnValueRestrictionHandler() );
+ addHandler( "qualified-identifier-restriction",
+ new QualifiedIdentifierRestrictionHandler() );
+
+ addHandler( "field-binding",
+ new FieldBindingHandler() );
+
+ addHandler( "field-binding",
+ new FieldBindingHandler() );
+
+ addHandler( "init",
+ new AccumulateHelperHandler() );
+ addHandler( "action",
+ new AccumulateHelperHandler() );
+ addHandler( "result",
+ new AccumulateHelperHandler() );
+ addHandler( "reverse",
+ new AccumulateHelperHandler() );
+
+ addHandler( "external-function",
+ new AccumulateHelperHandler() );
+
+ addHandler( "expression",
+ new ExpressionHandler() );
+ }
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModules.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModules.java 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModules.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -1,3 +1,4 @@
+
package org.drools.xml;
import java.util.HashMap;
@@ -3,43 +4,9 @@
import java.util.Map;
-import org.drools.xml.processes.ActionNodeHandler;
-import org.drools.xml.processes.ConnectionHandler;
-import org.drools.xml.processes.EndNodeHandler;
-import org.drools.xml.processes.GlobalHandler;
-import org.drools.xml.processes.ImportHandler;
-import org.drools.xml.processes.ProcessHandler;
-import org.drools.xml.processes.StartNodeHandler;
-import org.drools.xml.rules.AccumulateHandler;
-import org.drools.xml.rules.AccumulateHelperHandler;
-import org.drools.xml.rules.AndHandler;
-import org.drools.xml.rules.CollectHandler;
-import org.drools.xml.rules.EvalHandler;
-import org.drools.xml.rules.ExistsHandler;
-import org.drools.xml.rules.ExpressionHandler;
-import org.drools.xml.rules.FieldBindingHandler;
-import org.drools.xml.rules.FieldConstraintHandler;
-import org.drools.xml.rules.ForallHandler;
-import org.drools.xml.rules.FromHandler;
-import org.drools.xml.rules.FunctionHandler;
-import org.drools.xml.rules.LiteralRestrictionHandler;
-import org.drools.xml.rules.NotHandler;
-import org.drools.xml.rules.OrHandler;
-import org.drools.xml.rules.PackageHandler;
-import org.drools.xml.rules.PatternHandler;
-import org.drools.xml.rules.PredicateHandler;
-import org.drools.xml.rules.QualifiedIdentifierRestrictionHandler;
-import org.drools.xml.rules.QueryHandler;
-import org.drools.xml.rules.RestrictionConnectiveHandler;
-import org.drools.xml.rules.ReturnValueRestrictionHandler;
-import org.drools.xml.rules.RuleHandler;
-import org.drools.xml.rules.VariableRestrictionsHandler;
-
public class SemanticModules {
public Map<String, SemanticModule> modules;
public SemanticModules() {
this.modules = new HashMap<String, SemanticModule>();
- initDrl();
- initProcess();
}
@@ -52,116 +19,8 @@
public SemanticModule getSemanticModule(String uri) {
return this.modules.get( uri );
}
-
- private void initProcess() {
- SemanticModule module = new DefaultSemanticModule( "http://drools.org/drools-4.0/process" );
-
- module.addHandler( "process",
- new ProcessHandler() );
- module.addHandler( "start",
- new StartNodeHandler() );
- module.addHandler( "end",
- new EndNodeHandler() );
- module.addHandler( "action",
- new ActionNodeHandler() );
- module.addHandler( "connection",
- new ConnectionHandler() );
- module.addHandler( "import",
- new ImportHandler() );
- module.addHandler( "global",
- new GlobalHandler() );
- addSemanticModule( module );
+
+ public String toString() {
+ return this.modules.toString();
}
-
- private void initDrl() {
- SemanticModule module = new DefaultSemanticModule( "http://drools.org/drools-4.0" );
-
- module.addHandler( "package",
- new PackageHandler() );
- module.addHandler( "rule",
- new RuleHandler() );
- module.addHandler( "query",
- new QueryHandler() );
- module.addHandler( "attribute",
- null );
- module.addHandler( "function",
- new FunctionHandler() );
-
- // Conditional Elements
- module.addHandler( "lhs",
- new AndHandler() );
-
- module.addHandler( "and-restriction-connective",
- new RestrictionConnectiveHandler() );
-
- module.addHandler( "or-restriction-connective",
- new RestrictionConnectiveHandler() );
-
- module.addHandler( "and-conditional-element",
- new AndHandler() );
-
- module.addHandler( "or-conditional-element",
- new OrHandler() );
-
- module.addHandler( "and-constraint-connective",
- new AndHandler() );
- module.addHandler( "or-constraint-connective",
- new OrHandler() );
-
- module.addHandler( "not",
- new NotHandler() );
- module.addHandler( "exists",
- new ExistsHandler() );
- module.addHandler( "eval",
- new EvalHandler() );
- module.addHandler( "pattern",
- new PatternHandler() );
-
- module.addHandler( "from",
- new FromHandler() );
- module.addHandler( "forall",
- new ForallHandler() );
- module.addHandler( "collect",
- new CollectHandler() );
- module.addHandler( "accumulate",
- new AccumulateHandler() );
-
- // Field Constraints
- module.addHandler( "field-constraint",
- new FieldConstraintHandler() );
- module.addHandler( "literal-restriction",
- new LiteralRestrictionHandler() );
- module.addHandler( "variable-restriction",
- new VariableRestrictionsHandler() );
- module.addHandler( "predicate",
- new PredicateHandler() );
-
- module.addHandler( "return-value-restriction",
- new ReturnValueRestrictionHandler() );
- module.addHandler( "qualified-identifier-restriction",
- new QualifiedIdentifierRestrictionHandler() );
-
- module.addHandler( "field-binding",
- new FieldBindingHandler() );
-
- module.addHandler( "field-binding",
- new FieldBindingHandler() );
-
- module.addHandler( "init",
- new AccumulateHelperHandler() );
- module.addHandler( "action",
- new AccumulateHelperHandler() );
- module.addHandler( "result",
- new AccumulateHelperHandler() );
- module.addHandler( "reverse",
- new AccumulateHelperHandler() );
-
- module.addHandler( "external-function",
- new AccumulateHelperHandler() );
-
- module.addHandler( "expression",
- new ExpressionHandler() );
-
- addSemanticModule( module );
- }
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/StoreHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/StoreHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/StoreHandler.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -0,0 +1,86 @@
+package org.drools.xml;
+
+import java.util.HashSet;
+
+import org.drools.ruleflow.common.core.impl.ProcessImpl;
+import org.drools.ruleflow.common.core.Process;
+import org.drools.lang.descr.FunctionImportDescr;
+import org.drools.lang.descr.GlobalDescr;
+import org.drools.lang.descr.ImportDescr;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.ruleflow.core.ActionNode;
+import org.drools.ruleflow.core.StartNode;
+import org.drools.ruleflow.core.impl.ActionNodeImpl;
+import org.drools.ruleflow.core.impl.DroolsConsequenceAction;
+import org.drools.ruleflow.core.impl.RuleFlowProcessImpl;
+import org.drools.ruleflow.core.impl.StartNodeImpl;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.Configuration;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.drools.xml.ProcessBuildData;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+public class StoreHandler extends BaseAbstractHandler
+ implements
+ Handler {
+ public StoreHandler() {
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet();
+ this.validParents.add( Process.class );
+
+ this.validPeers = new HashSet();
+ this.validPeers.add( StartNode.class );
+ this.validPeers.add( ActionNode.class );
+
+ this.allowNesting = false;
+ }
+ }
+
+
+
+ public Object start(final String uri,
+ final String localName,
+ final Attributes attrs,
+ final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+ xmlPackageReader.startConfiguration( localName,
+ attrs );
+
+ RuleFlowProcessImpl process = ( RuleFlowProcessImpl ) xmlPackageReader.getParent();
+
+ ActionNodeImpl actionNode = new ActionNodeImpl();
+
+ final String name = attrs.getValue( "name" );
+ emptyAttributeCheck( localName, "name", name, xmlPackageReader );
+ actionNode.setName( name );
+
+ process.addNode( actionNode );
+ ((ProcessBuildData)xmlPackageReader.getData()).addNode( actionNode );
+
+ return actionNode;
+ }
+
+ public Object end(final String uri,
+ final String localName,
+ final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+ final Configuration config = xmlPackageReader.endConfiguration();
+ RuleFlowProcessImpl process = ( RuleFlowProcessImpl ) xmlPackageReader.getParent();
+
+ ActionNodeImpl actionNode = ( ActionNodeImpl ) xmlPackageReader.getCurrent();
+
+ String text = config.getText();
+
+ DroolsConsequenceAction actionText = new DroolsConsequenceAction( "mvel", "list.add(\"" + text + "\")" );
+
+ actionNode.setAction( actionText );
+
+ return actionNode;
+ }
+
+ public Class generateNodeFor() {
+ return ActionNode.class;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXmlDsl.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXmlDsl.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXmlDsl.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -0,0 +1,41 @@
+package org.drools.xml;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+
+import junit.framework.TestCase;
+
+
+public class TestXmlDsl extends TestCase {
+ public void testSimpleDsl() throws Exception {
+ Properties properties = new Properties();
+ properties.put( "semanticModules", "mydsl.conf" );
+
+ PackageBuilderConfiguration conf = new PackageBuilderConfiguration( properties );
+
+ PackageBuilder builder = new PackageBuilder( conf );
+ builder.addProcessFromXml( new InputStreamReader( TestXmlDsl.class.getResourceAsStream( "XmlDslTest.xml" ) ) );
+
+ System.out.println( builder.getErrors() );
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+ List list = new ArrayList();
+ session.setGlobal( "list", list );
+
+ session.startProcess( "process name" );
+
+ assertEquals( 2, list.size() );
+ assertEquals( "action node was here", list.get(0) );
+ assertEquals( "dsl was here", list.get(1) );
+ }
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/ActionNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/ActionNodeTest.java 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/ActionNodeTest.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -14,9 +14,7 @@
import org.drools.xml.XmlProcessReader;
public class ActionNodeTest extends TestCase {
- public void testSingleActionNode() throws Exception {
-
-
+ public void testSingleActionNode() throws Exception {
PackageBuilder builder = new PackageBuilder();
builder.addProcessFromXml( new InputStreamReader( ActionNodeTest.class.getResourceAsStream( "ActionNodeTest.xml" ) ) );
@@ -32,7 +30,6 @@
session.startProcess( "process name" );
assertEquals( 1, list.size() );
- assertEquals( "action node was here", list.get(0) );
-
+ assertEquals( "action node was here", list.get(0) );
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTestHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTestHelper.java 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTestHelper.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -10,6 +10,7 @@
import junit.framework.Assert;
import org.drools.compiler.DrlParser;
+import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.DrlDumper;
import org.drools.lang.descr.PackageDescr;
import org.drools.xml.SemanticModules;
@@ -24,8 +25,9 @@
public class DumperTestHelper extends Assert {
public static void XmlFile(String filename) throws Exception {
-
- XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+
+ XmlPackageReader xmlPackageReader = new XmlPackageReader( conf.getSemanticModules() );
xmlPackageReader.read( new InputStreamReader( DumperTestHelper.class.getResourceAsStream( filename ) ) );
final PackageDescr pkgOriginal = xmlPackageReader.getPackageDescr();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/XmlPackageReaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/XmlPackageReaderTest.java 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/XmlPackageReaderTest.java 2007-12-11 14:14:28 UTC (rev 17179)
@@ -8,6 +8,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
+import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.AccessorDescr;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
@@ -52,7 +53,7 @@
}
public void testParseFrom() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFrom.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -70,7 +71,7 @@
}
public void testAccumulate() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseAccumulate.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -113,7 +114,7 @@
public void testAccumulateMultiPattern() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseAccumulate.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -144,7 +145,7 @@
}
public void testParseForall() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -166,7 +167,7 @@
}
public void testParseExists() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseExists.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -192,7 +193,7 @@
}
public void testParseCollect() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseCollect.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
@@ -246,7 +247,7 @@
}
public void testParsePackageName() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParsePackageName.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -255,7 +256,7 @@
}
public void testParseImport() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseImport.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -277,7 +278,7 @@
}
public void testParseGlobal() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseGlobal.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -308,7 +309,7 @@
}
public void testParseFunction() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFunction.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -355,7 +356,7 @@
}
public void testParseRule() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRule.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -424,7 +425,7 @@
}
public void testParseLhs() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseLhs.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -563,7 +564,7 @@
}
public void testParseRhs() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRhs.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -619,7 +620,7 @@
}
public void testParseQuery() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader( new SemanticModules() );
+ final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseQuery.xml" ) ) );
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull( packageDescr );
@@ -676,4 +677,10 @@
patternDescr.getObjectType() );
}
+
+ private XmlPackageReader getXmReader() {
+ PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+
+ return new XmlPackageReader( conf.getSemanticModules() );
+ }
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/mydsl.conf
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/mydsl.conf (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/mydsl.conf 2007-12-11 14:14:28 UTC (rev 17179)
@@ -0,0 +1,2 @@
+uri=http://domain/org/mydsl
+store=org.drools.xml.StoreHandler
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/XmlDslTest.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/XmlDslTest.xml (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/XmlDslTest.xml 2007-12-11 14:14:28 UTC (rev 17179)
@@ -0,0 +1,33 @@
+<process xmlns="http://drools.org/drools-4.0/process"
+ xmlns:mydsl="http://domain/org/mydsl"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-4.0/process drools-processes-4.0.xsd"
+ name="process name" id="process name" package-name="org.domain" >
+
+ <header>
+ <imports>
+ <import name="java.util.List" />
+ </imports>
+
+ <globals>
+ <global identifier="list" type="List" />
+ </globals>
+ </header>
+
+ <nodes>
+ <start name="start node" />
+
+ <action name="action node" dialect="java">list.add( "action node was here" );</action>
+
+ <mydsl:store name="store node">dsl was here</mydsl:store>
+
+ <end name="end node" />
+ </nodes>
+
+ <connections>
+ <connection from="start node" to="action node" />
+ <connection from="action node" to="store node" />
+ <connection from="store node" to="end node" />
+ </connections>
+
+</process>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/processes/ActionNodeTest.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/processes/ActionNodeTest.xml 2007-12-11 10:20:35 UTC (rev 17178)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/processes/ActionNodeTest.xml 2007-12-11 14:14:28 UTC (rev 17179)
@@ -17,7 +17,7 @@
</start>
<action name="action node" dialect="java">
- list.add( "action node was here" );
+ list.add( "action node was here" );
</action>
<end name="end node">
@@ -27,6 +27,5 @@
<connections>
<connection from="start node" to="action node" />
<connection from="action node" to="end node" />
- </connections>
-
+ </connections>
</process>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list