[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