[jboss-svn-commits] JBL Code SVN: r17142 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/rule/builder/dialect/java and 9 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Dec 9 22:39:41 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-12-09 22:39:41 -0500 (Sun, 09 Dec 2007)
New Revision: 17142

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultSemanticModule.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/ProcessBuildData.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModule.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModules.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlProcessReader.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ActionNodeHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ConnectionHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/EndNodeHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/GlobalHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ImportHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ProcessHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/StartNodeHandler.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/
   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/
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTest.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/
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/processes/ActionNodeTest.xml
Removed:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHelperHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldConstraintHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QualifiedIdentifierRestrictionHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_Dump.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseAccumulate.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseExists.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseForall.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFunction.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseLhs.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseQuery.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRhs.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_accumulateall.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_from.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_simplerule.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
Log:
JBRULES-1375 Create initial ePDL language parser implementation

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -8,6 +8,7 @@
 import org.drools.base.TypeResolver;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.ProcessDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Package;
 import org.drools.rule.builder.AccumulateBuilder;
@@ -105,6 +106,8 @@
     void init(Package pkg);
 
     void init(RuleDescr ruleDescr);
+    
+    void init(ProcessDescr processDescr);
 
     /**
      * An interface with the results from the expression/block analysis

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-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -57,6 +57,7 @@
 import org.drools.ruleflow.core.RuleFlowProcess;
 import org.drools.ruleflow.core.impl.ActionNodeImpl;
 import org.drools.ruleflow.core.impl.DroolsConsequenceAction;
+import org.drools.xml.ExtensibleXmlParser;
 import org.drools.xml.XmlPackageReader;
 import org.xml.sax.SAXException;
 
@@ -236,7 +237,24 @@
 
         this.results = this.dialectRegistry.addResults( this.results );        
     }
+    
+    public void addProcess(Process process) {
+        ProcessBuilder processBuilder = new ProcessBuilder( this );
+        
+        try {
+            processBuilder.buildProcess( process );
+            this.results.addAll( processBuilder.getErrors() );
+        } catch ( Exception e ) {
+            if ( e instanceof RuntimeException ) {
+                throw (RuntimeException) e;
+            }
+            this.results.add( new RuleFlowLoadError( "Unable to load the rule flow.",
+                                                     e ) );
+        } 
 
+        this.results = this.dialectRegistry.addResults( this.results );          
+    }
+
     /**
      * This adds a package from a Descr/AST This will also trigger a compile, if
      * there are any generated classes to compile of course.

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -115,10 +115,10 @@
         RuleFlowProcess rfp = (RuleFlowProcess) process;
 
         ProcessDescr processDescr = new ProcessDescr();
-        processDescr.setClassName( rfp.getName() );
         processDescr.setName( rfp.getPackageName() );
-
+        
         Dialect dialect = this.packageBuilder.getDialectRegistry().getDialect( "java" );
+        dialect.init( processDescr );
         
         ProcessBuildContext context = new ProcessBuildContext( this.packageBuilder.getPackageBuilderConfiguration(),
                                                                this.packageBuilder.getPackage(),
@@ -149,7 +149,7 @@
     public void buildAction(Process process, ProcessDescr processDescr, ProcessBuildContext context, ActionNodeImpl actionNode) {
         DroolsConsequenceAction action = (DroolsConsequenceAction) actionNode.getAction();
         ActionDescr actionDescr = new ActionDescr();
-        actionDescr.setText( action.getConsequence() );        
+        actionDescr.setText( action.getConsequence() );   
         
         Dialect dialect = this.packageBuilder.getDialectRegistry().getDialect( action.getDialect() );            
         

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -51,7 +51,7 @@
                       final ActionNodeImpl actionNode,
                       final ActionDescr actionDescr) {
 
-        final String className = "action" + context.getNextId();
+        final String className = "action" + context.getNextId();               
 
         JavaDialect dialect = (JavaDialect) context.getDialect( "java" );
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -203,9 +203,19 @@
         final String ruleClassName = getUniqueLegalName( this.pkg.getName(),
                                                          ruleDescr.getName(),
                                                          "java",
+                                                         "Rule",
                                                          this.src );
         ruleDescr.setClassName( StringUtils.ucFirst( ruleClassName ) );
     }    
+    
+    public void init(final ProcessDescr processDescr) {
+        final String processDescrClassName = getUniqueLegalName( this.pkg.getName(),
+                                                         processDescr.getName(),
+                                                         "java",
+                                                         "Process",
+                                                         this.src );
+        processDescr.setClassName( StringUtils.ucFirst( processDescrClassName ) );
+    }      
 
     public String getExpressionDialectName() {
         return EXPRESSION_DIALECT_NAME;
@@ -611,9 +621,10 @@
     public static String getUniqueLegalName(final String packageName,
                                             final String name,
                                             final String ext,
+                                            final String prefix,
                                             final ResourceReader src) {
         // replaces all non alphanumeric or $ chars with _
-        String newName = "Rule_" + name.replaceAll( "[[^\\w]$]",
+        String newName = prefix + "_" + name.replaceAll( "[[^\\w]$]",
                                                     "_" );
 
         // make sure the class name does not exist, if it does increase the counter

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -32,6 +32,7 @@
 import org.drools.lang.descr.NotDescr;
 import org.drools.lang.descr.OrDescr;
 import org.drools.lang.descr.PatternDescr;
+import org.drools.lang.descr.ProcessDescr;
 import org.drools.lang.descr.QueryDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Declaration;
@@ -71,46 +72,46 @@
     implements
     Dialect {
 
-    public final static String                ID 					  = "mvel";
+    public final static String                    ID                          = "mvel";
 
-    private final static String               EXPRESSION_DIALECT_NAME = "MVEL";
+    private final static String                   EXPRESSION_DIALECT_NAME     = "MVEL";
 
-    private final PatternBuilder              pattern                 = new PatternBuilder();
-    private final QueryBuilder                query                   = new QueryBuilder();
-    private final MVELAccumulateBuilder       accumulate              = new MVELAccumulateBuilder();
-    private final SalienceBuilder             salience                = new MVELSalienceBuilder();
-    private final MVELEvalBuilder             eval                    = new MVELEvalBuilder();
-    private final MVELPredicateBuilder        predicate               = new MVELPredicateBuilder();
-    private final MVELReturnValueBuilder      returnValue             = new MVELReturnValueBuilder();
-    private final MVELConsequenceBuilder      consequence             = new MVELConsequenceBuilder();
-    private final MVELActionBuilder           actionBuilder           = new MVELActionBuilder();
+    private final PatternBuilder                  pattern                     = new PatternBuilder();
+    private final QueryBuilder                    query                       = new QueryBuilder();
+    private final MVELAccumulateBuilder           accumulate                  = new MVELAccumulateBuilder();
+    private final SalienceBuilder                 salience                    = new MVELSalienceBuilder();
+    private final MVELEvalBuilder                 eval                        = new MVELEvalBuilder();
+    private final MVELPredicateBuilder            predicate                   = new MVELPredicateBuilder();
+    private final MVELReturnValueBuilder          returnValue                 = new MVELReturnValueBuilder();
+    private final MVELConsequenceBuilder          consequence                 = new MVELConsequenceBuilder();
+    private final MVELActionBuilder               actionBuilder               = new MVELActionBuilder();
     private final MVELReturnValueEvaluatorBuilder returnValueEvaluatorBuilder = new MVELReturnValueEvaluatorBuilder();
     //private final JavaRuleClassBuilder            rule        = new JavaRuleClassBuilder();
-    private final MVELFromBuilder             from                    = new MVELFromBuilder();
-    private final JavaFunctionBuilder         function                = new JavaFunctionBuilder();
-    private final CollectBuilder              collect                 = new CollectBuilder();
-    private final ForallBuilder               forall                  = new ForallBuilder();
+    private final MVELFromBuilder                 from                        = new MVELFromBuilder();
+    private final JavaFunctionBuilder             function                    = new JavaFunctionBuilder();
+    private final CollectBuilder                  collect                     = new CollectBuilder();
+    private final ForallBuilder                   forall                      = new ForallBuilder();
 
-    private Map                               interceptors;
+    private Map                                   interceptors;
 
-    private List                              results;
+    private List                                  results;
     //private final JavaFunctionBuilder             function    = new JavaFunctionBuilder();
 
-    private MemoryResourceReader                    src;
+    private MemoryResourceReader                  src;
 
-    private Package                           pkg;
-    private MVELDialectConfiguration          configuration;
-    private TypeResolver                      typeResolver;
-    private ClassFieldExtractorCache          classFieldExtractorCache;
-    private MVELExprAnalyzer                  analyzer;
+    private Package                               pkg;
+    private MVELDialectConfiguration              configuration;
+    private TypeResolver                          typeResolver;
+    private ClassFieldExtractorCache              classFieldExtractorCache;
+    private MVELExprAnalyzer                      analyzer;
 
-    private Map                               imports;
-    private Map                               packageImports;
+    private Map                                   imports;
+    private Map                                   packageImports;
 
-    private boolean                           strictMode;
-    
-    private static Boolean                           languageSet = new Boolean( false );
+    private boolean                               strictMode;
 
+    private static Boolean                        languageSet                 = new Boolean( false );
+
     public void addFunction(FunctionDescr functionDescr,
                             TypeResolver typeResolver) {
         throw new UnsupportedOperationException( "MVEL does not support functions" );
@@ -122,7 +123,7 @@
 
     public MVELDialect() {
     }
-    
+
     public static void setLanguageLevel(int level) {
         synchronized ( languageSet ) {
             // this synchronisation is needed as setLanguageLevel is now thread safe
@@ -144,8 +145,8 @@
         this.strictMode = this.configuration.isStrict();
 
         // we currently default to reflective optimisation
-        OptimizerFactory.setDefaultOptimizer("reflective");
-        
+        OptimizerFactory.setDefaultOptimizer( "reflective" );
+
         MVEL.setThreadSafe( true );
 
         this.analyzer = new MVELExprAnalyzer();
@@ -208,14 +209,14 @@
 
         this.builders.put( FunctionDescr.class,
                            this.function );
-   }
+    }
 
     public void init(Package pkg) {
         this.pkg = pkg;
         this.results = new ArrayList();
         this.src = new MemoryResourceReader();
-        if( this.pkg != null ) {
-            this.addImport( this.pkg.getName()+".*" );
+        if ( this.pkg != null ) {
+            this.addImport( this.pkg.getName() + ".*" );
         }
     }
 
@@ -223,20 +224,30 @@
         //MVEL:test null to Fix failing test on org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilderTest.testImperativeCodeError()
 
         // @todo: why is this here, MVEL doesn't compile anything? mdp
-        String pkgName = this.pkg == null? "": this.pkg.getName();
+        String pkgName = this.pkg == null ? "" : this.pkg.getName();
         final String ruleClassName = JavaDialect.getUniqueLegalName( pkgName,
-        															 ruleDescr.getName(),
-        															 "mvel",
-        															 this.src );
+                                                                     ruleDescr.getName(),
+                                                                     "mvel",
+                                                                     "Rule",
+                                                                     this.src );
         ruleDescr.setClassName( StringUtils.ucFirst( ruleClassName ) );
     }
 
+    public void init(final ProcessDescr processDescr) {
+        final String processDescrClassName = JavaDialect.getUniqueLegalName( this.pkg.getName(),
+                                                                             processDescr.getName(),
+                                                                             "mvel",
+                                                                             "Process",
+                                                                             this.src );
+        processDescr.setClassName( StringUtils.ucFirst( processDescrClassName ) );
+    }
+
     public String getExpressionDialectName() {
         return EXPRESSION_DIALECT_NAME;
     }
 
     public void addRule(RuleBuildContext context) {
-    	//MVEL: Compiler change
+        //MVEL: Compiler change
         final RuleDescr ruleDescr = context.getRuleDescr();
 
         // setup the line mappins for this rule
@@ -245,24 +256,29 @@
         mapping.setStartLine( ruleDescr.getConsequenceLine() );
         mapping.setOffset( ruleDescr.getConsequenceOffset() );
 
-        context.getPkg().getPackageCompilationData().getLineMappings().put( name, mapping );
+        context.getPkg().getPackageCompilationData().getLineMappings().put( name,
+                                                                            mapping );
 
     }
-    
+
     public void addProcess(final ProcessBuildContext context) {
         // @TODO setup line mappings
     }
 
     public void addImport(String importEntry) {
         if ( importEntry.endsWith( ".*" ) ) {
-            importEntry = importEntry.substring( 0, importEntry.length()-2  );
-            this.packageImports.put( importEntry, importEntry );
+            importEntry = importEntry.substring( 0,
+                                                 importEntry.length() - 2 );
+            this.packageImports.put( importEntry,
+                                     importEntry );
         } else {
             try {
                 Class cls = this.typeResolver.resolveType( importEntry );
-                this.imports.put( ParseTools.getSimpleClassName( cls ), cls );
+                this.imports.put( ParseTools.getSimpleClassName( cls ),
+                                  cls );
             } catch ( ClassNotFoundException e ) {
-                this.results.add( new ImportError( importEntry, 1 ) );
+                this.results.add( new ImportError( importEntry,
+                                                   1 ) );
             }
         }
     }
@@ -290,12 +306,14 @@
             Method[] methods = cls.getDeclaredMethods();
             for ( int i = 0; i < methods.length; i++ ) {
                 if ( methods[i].getName().equals( methodName ) ) {
-                    this.imports.put( methodName, methods[i] );
+                    this.imports.put( methodName,
+                                      methods[i] );
                     break;
                 }
             }
         } catch ( ClassNotFoundException e ) {
-            this.results.add( new ImportError( staticImportEntry, -1 ) );
+            this.results.add( new ImportError( staticImportEntry,
+                                               -1 ) );
         }
     }
 
@@ -327,7 +345,7 @@
                                                     final Set[] availableIdentifiers,
                                                     Map localTypes) {
         //new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()},
-        
+
         Dialect.AnalysisResult result = null;
         try {
             result = this.analyzer.analyzeExpression( context,
@@ -336,9 +354,9 @@
                                                       localTypes );
         } catch ( final Exception e ) {
             context.getErrors().add( new DescrBuildError( context.getParentDescr(),
-                                                    descr,
-                                                    null,
-                                                    "Unable to determine the used declarations.\n" + e.getMessage()) );
+                                                          descr,
+                                                          null,
+                                                          "Unable to determine the used declarations.\n" + e.getMessage() ) );
         }
         return result;
     }
@@ -362,7 +380,7 @@
                                                final Set[] availableIdentifiers,
                                                Map localTypes) {
         //new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()}
-        
+
         Dialect.AnalysisResult result = null;
         try {
             result = this.analyzer.analyzeExpression( context,
@@ -371,24 +389,26 @@
                                                       localTypes );
         } catch ( final Exception e ) {
             context.getErrors().add( new DescrBuildError( context.getParentDescr(),
-                                                    descr,
-                                                    e,
-                                                    "Unable to determine the used declarations.\n" + e.getMessage()) );
+                                                          descr,
+                                                          e,
+                                                          "Unable to determine the used declarations.\n" + e.getMessage() ) );
         }
         return result;
-    }  
-    
+    }
+
     public Serializable compile(final String text,
                                 final Dialect.AnalysisResult analysis,
                                 final Map interceptors,
                                 final Map outerDeclarations,
                                 final PackageBuildContext context) {
-        final ParserContext parserContext = getParserContext(analysis, outerDeclarations, context );
+        final ParserContext parserContext = getParserContext( analysis,
+                                                              outerDeclarations,
+                                                              context );
 
         ExpressionCompiler compiler = new ExpressionCompiler( text.trim() );
 
-        if (MVELDebugHandler.isDebugMode()) {
-        	System.out.println("Source before MVEL Compilation:\n"+text.trim());
+        if ( MVELDebugHandler.isDebugMode() ) {
+            System.out.println( "Source before MVEL Compilation:\n" + text.trim() );
             compiler.setDebugSymbols( true );
         }
 
@@ -396,15 +416,16 @@
         return expr;
     }
 
-    public ParserContext getParserContext(final Dialect.AnalysisResult analysis, final Map outerDeclarations, final PackageBuildContext context) {
+    public ParserContext getParserContext(final Dialect.AnalysisResult analysis,
+                                          final Map outerDeclarations,
+                                          final PackageBuildContext context) {
         // @todo proper source file name
         final ParserContext parserContext = new ParserContext( this.imports,
                                                                null,
                                                                "xxx" );//context.getPkg().getName()+"."+context.getRuleDescr().getClassName() );
-        
 
         for ( Iterator it = this.packageImports.values().iterator(); it.hasNext(); ) {
-            String packageImport = ( String ) it.next();
+            String packageImport = (String) it.next();
             parserContext.addPackageImport( packageImport );
         }
 
@@ -413,13 +434,13 @@
         if ( interceptors != null ) {
             parserContext.setInterceptors( interceptors );
         }
-        
+
         List list[] = analysis.getBoundIdentifiers();
-        
+
         // @TODO yuck, we don't want conditions for configuration :(
         if ( context instanceof RuleBuildContext ) {
             //FIXME: analysis can be null, throws an NPE
-            DeclarationScopeResolver resolver = ((RuleBuildContext)context).getDeclarationResolver();
+            DeclarationScopeResolver resolver = ((RuleBuildContext) context).getDeclarationResolver();
             for ( Iterator it = list[0].iterator(); it.hasNext(); ) {
                 String identifier = (String) it.next();
                 Class cls = resolver.getDeclaration( identifier ).getExtractor().getExtractToClass();
@@ -485,11 +506,11 @@
     public ConsequenceBuilder getConsequenceBuilder() {
         return this.consequence;
     }
-    
+
     public ActionBuilder getActionBuilder() {
         return this.actionBuilder;
     }
-    
+
     public MVELReturnValueEvaluatorBuilder getReturnValueEvaluatorBuilder() {
         return this.returnValueEvaluatorBuilder;
     }
@@ -523,12 +544,12 @@
     }
 
     public RuleClassBuilder getRuleClassBuilder() {
-        throw new UnsupportedOperationException("MVELDialect.getRuleClassBuilder is not supported" );
+        throw new UnsupportedOperationException( "MVELDialect.getRuleClassBuilder is not supported" );
     }
-    
+
     public ProcessClassBuilder getProcessClassBuilder() {
-        throw new UnsupportedOperationException("MVELDialect.getProcessClassBuilder is not supported" );
-    }    
+        throw new UnsupportedOperationException( "MVELDialect.getProcessClassBuilder is not supported" );
+    }
 
     public TypeResolver getTypeResolver() {
         return this.typeResolver;
@@ -542,6 +563,4 @@
         return ID;
     }
 
-
-
 }
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,90 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.FromDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * @author fernandomeyer
- */
-public class AccumulateHandler extends BaseAbstractHandler
-    implements
-    Handler {
-
-    AccumulateHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-
-            this.validParents.add( FromDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        final AccumulateDescr accumulateDesrc = new AccumulateDescr();
-        return accumulateDesrc;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-        final AccumulateDescr accumulateDescr = (AccumulateDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator ite = parents.listIterator( parents.size() );
-        ite.previous();
-        final Object parent = ite.previous();
-
-        if ( parent.getClass().getName().equals( FromDescr.class.getName() ) ) {
-            final PatternDescr result = (PatternDescr) ite.previous();
-            result.setSource( accumulateDescr );
-
-        } else if ( parent instanceof ConditionalElementDescr ) {
-            final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-            parentDescr.addDescr( accumulateDescr );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return AccumulateDescr.class;
-    }
-
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHelperHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHelperHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AccumulateHelperHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,102 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author fernandomeyer
- */
-
-public class AccumulateHelperHandler extends BaseAbstractHandler
-    implements
-    Handler {
-
-    AccumulateHelperHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( AccumulateDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( BaseDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-        final BaseDescr baseDescr = (BaseDescr) this.xmlPackageReader.getCurrent();
-
-        final String expression = config.getText();
-
-        if ( expression == null) {
-            throw new SAXParseException( "<" + localName + "> must have some content",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator ite = parents.listIterator( parents.size() );
-        ite.previous();
-        final Object parent = ite.previous();
-
-        final AccumulateDescr accumulate = (AccumulateDescr) parent;
-
-        if ( localName.equals( "init" ) ) accumulate.setInitCode( expression.trim() );
-        else if ( localName.equals( "action" ) ) accumulate.setActionCode( expression.trim() );
-        else if ( localName.equals( "result" ) ) accumulate.setResultCode( expression.trim() );
-        else if ( localName.equals( "reverse" ) ) accumulate.setReverseCode( expression.trim() );
-        else if ( localName.equals( "external-function" ) ) {
-            accumulate.setExternalFunction( true );
-            accumulate.setFunctionIdentifier( config.getAttribute( "evaluator" ) );
-            accumulate.setExpression( config.getAttribute( "expression" ) );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return BaseDescr.class;
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        return new BaseDescr();
-    }
-
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,110 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.MultiPatternDestinationDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.drools.lang.descr.QueryDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class AndHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    AndHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( QueryDescr.class );
-            this.validParents.add( RuleDescr.class );
-            this.validParents.add( OrDescr.class );
-            this.validParents.add( LiteralRestrictionHandler.class );
-            this.validParents.add( AccumulateDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-            this.validPeers.add( NotDescr.class );
-            this.validPeers.add( ExistsDescr.class );
-            this.validPeers.add( EvalDescr.class );
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( ForallDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        final AndDescr andDescr = new AndDescr();
-
-        return andDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final AndDescr andDescr = (AndDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final Object parent = it.previous();
-
-        if ( parent instanceof RuleDescr || parent instanceof QueryDescr ) {
-            final RuleDescr ruleDescr = (RuleDescr) parent;
-            ruleDescr.setLhs( andDescr );
-        } else if ( parent instanceof MultiPatternDestinationDescr) {
-        	final MultiPatternDestinationDescr mpDescr = (MultiPatternDestinationDescr) parent;
-        	mpDescr.setInput(andDescr);        	
-        } else if ( parent instanceof ConditionalElementDescr ) {
-            final ConditionalElementDescr ceDescr = (ConditionalElementDescr) parent;
-            ceDescr.addDescr( andDescr );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return AndDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,42 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Set;
-
-/**
- * @author mproctor
- * 
- */
-abstract class BaseAbstractHandler {
-    protected XmlPackageReader xmlPackageReader;
-    protected Set              validPeers;
-    protected Set              validParents;
-    protected boolean          allowNesting;
-
-    public Set getValidParents() {
-        return this.validParents;
-    }
-
-    public Set getValidPeers() {
-        return this.validPeers;
-    }
-
-    public boolean allowNesting() {
-        return this.allowNesting;
-    }
-}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,63 @@
+package org.drools.xml;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Set;
+
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * @author mproctor
+ * 
+ */
+public abstract class BaseAbstractHandler {
+    protected Set     validPeers;
+    protected Set     validParents;
+    protected boolean allowNesting;
+
+    public Set getValidParents() {
+        return this.validParents;
+    }
+
+    public Set getValidPeers() {
+        return this.validPeers;
+    }
+
+    public boolean allowNesting() {
+        return this.allowNesting;
+    }
+
+    public void emptyAttributeCheck(final String element,
+                                    final String attributeName,
+                                    final String attribute,
+                                    final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        if ( attribute == null || attribute.trim().equals( "" ) ) {
+            throw new SAXParseException( "<" + element + "> requires a '" + attributeName + "' attribute",
+                                         xmlPackageReader.getLocator() );
+        }
+    }
+
+    public void emptyContentCheck(final String element,
+                                  final String content,
+                                  final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        if ( content == null || content.trim().equals( "" ) ) {
+            throw new SAXParseException( "<" + element + "> requires content",
+                                         xmlPackageReader.getLocator() );
+        }
+    }
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,89 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.CollectDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.FromDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * @author fernandomeyer
- *
- */
-public class CollectHandler extends BaseAbstractHandler
-    implements
-    Handler {
-
-    CollectHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-
-            this.validParents.add( FromDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        final CollectDescr collectDescr = new CollectDescr();
-        return collectDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-        final CollectDescr collectDescr = (CollectDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator ite = parents.listIterator( parents.size() );
-        ite.previous();
-        final Object parent = ite.previous();
-
-        if ( parent.getClass().getName().equals( FromDescr.class.getName() ) ) {
-            final PatternDescr resultPattern = (PatternDescr) ite.previous();
-            resultPattern.setSource( collectDescr );
-        } else if ( parent instanceof ConditionalElementDescr ) {
-            final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-            parentDescr.addDescr( collectDescr );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return CollectDescr.class;
-    }
-
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,103 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Configuration passed to a configurable <code>SemanticComponent</code>.
- * 
- * <p>
- * A <code>Configuration</code> may actually form a tree-shaped structure in
- * order to hold complex configuration data. Each node in the tree is
- * represented by a <code>Configuration</code> object that has a name and may
- * contain attributes, children and text.
- * </p>
- * 
- * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
- * 
- * @version $Id: Configuration.java,v 1.5 2005/01/23 18:16:20 mproctor Exp $
- */
-public interface Configuration {
-    // ----------------------------------------------------------------------
-    //     Constants
-    // ----------------------------------------------------------------------
-
-    /** Empty <code>Configuration</code> array. */
-    Configuration[] EMPTY_ARRAY = new Configuration[0];
-
-    // ----------------------------------------------------------------------
-    //     Interface
-    // ----------------------------------------------------------------------
-
-    /**
-     * Retrieve the node name.
-     * 
-     * @return The node name.
-     */
-    String getName();
-
-    /**
-     * Retrieve the node text.
-     * 
-     * @return The node text.
-     */
-    String getText();
-
-    /**
-     * Retrieve an attribute value.
-     * 
-     * @param name The attribute name.
-     * 
-     * @return The attribute value or <code>null</code> if no attribute
-     *         matches the specified name.
-     */
-    String getAttribute(String name);
-
-    /**
-     * Retrieve all attribute names.
-     * 
-     * @return The attribute names.
-     */
-    String[] getAttributeNames();
-
-    /**
-     * Retrieve a child node.
-     * 
-     * @param name The child name.
-     * 
-     * @return The first child matching the specified name, otherwise
-     *         <code>null</code> if none match.
-     */
-    Configuration getChild(String name);
-
-    /**
-     * Retrieve children nodes.
-     * 
-     * @param name The child name.
-     * 
-     * @return All children matching the specified name, otherwise an empty
-     *         array if none match.
-     */
-    Configuration[] getChildren(String name);
-
-    /**
-     * Retrieve all children nodes.
-     * 
-     * @return All children nodes, otherwise an empty array if this node
-     *         contains no children.
-     */
-    Configuration[] getChildren();
-}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,103 @@
+package org.drools.xml;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Configuration passed to a configurable <code>SemanticComponent</code>.
+ * 
+ * <p>
+ * A <code>Configuration</code> may actually form a tree-shaped structure in
+ * order to hold complex configuration data. Each node in the tree is
+ * represented by a <code>Configuration</code> object that has a name and may
+ * contain attributes, children and text.
+ * </p>
+ * 
+ * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
+ * 
+ * @version $Id: Configuration.java,v 1.5 2005/01/23 18:16:20 mproctor Exp $
+ */
+public interface Configuration {
+    // ----------------------------------------------------------------------
+    //     Constants
+    // ----------------------------------------------------------------------
+
+    /** Empty <code>Configuration</code> array. */
+    Configuration[] EMPTY_ARRAY = new Configuration[0];
+
+    // ----------------------------------------------------------------------
+    //     Interface
+    // ----------------------------------------------------------------------
+
+    /**
+     * Retrieve the node name.
+     * 
+     * @return The node name.
+     */
+    String getName();
+
+    /**
+     * Retrieve the node text.
+     * 
+     * @return The node text.
+     */
+    String getText();
+
+    /**
+     * Retrieve an attribute value.
+     * 
+     * @param name The attribute name.
+     * 
+     * @return The attribute value or <code>null</code> if no attribute
+     *         matches the specified name.
+     */
+    String getAttribute(String name);
+
+    /**
+     * Retrieve all attribute names.
+     * 
+     * @return The attribute names.
+     */
+    String[] getAttributeNames();
+
+    /**
+     * Retrieve a child node.
+     * 
+     * @param name The child name.
+     * 
+     * @return The first child matching the specified name, otherwise
+     *         <code>null</code> if none match.
+     */
+    Configuration getChild(String name);
+
+    /**
+     * Retrieve children nodes.
+     * 
+     * @param name The child name.
+     * 
+     * @return All children matching the specified name, otherwise an empty
+     *         array if none match.
+     */
+    Configuration[] getChildren(String name);
+
+    /**
+     * Retrieve all children nodes.
+     * 
+     * @return All children nodes, otherwise an empty array if this node
+     *         contains no children.
+     */
+    Configuration[] getChildren();
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,175 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Default implementation of <code>Configuration</code>.
- * 
- * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
- * 
- * @version $Id: DefaultConfiguration.java,v 1.2 2004/09/17 00:25:09 mproctor
- *          Exp $
- */
-public class DefaultConfiguration
-    implements
-    Configuration {
-    // ----------------------------------------------------------------------
-    //     Class members
-    // ----------------------------------------------------------------------
-
-    /** Empty <code>String</code> array. */
-    private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-    // ----------------------------------------------------------------------
-    //     Instance members
-    // ----------------------------------------------------------------------
-
-    /** Node name. */
-    private final String          name;
-
-    /** Node text. */
-    private String                text               = "";
-
-    /** Node attributes. */
-    private final Map             attrs;
-
-    /** Children nodes. */
-    private final List            children;
-
-    // ----------------------------------------------------------------------
-    //     Constructors
-    // ----------------------------------------------------------------------
-
-    /**
-     * Construct.
-     * 
-     * @param name
-     *            The name of the node.
-     */
-    public DefaultConfiguration(final String name) {
-        this.name = name;
-        this.attrs = new HashMap();
-        this.children = new ArrayList();
-    }
-
-    /**
-     * @see Configuration
-     */
-    public String getName() {
-        return this.name;
-    }
-
-    /**
-     * Set the node text.
-     * 
-     * @param text
-     *            The text.
-     */
-    public void setText(final String text) {
-        this.text = text;
-    }
-
-    /**
-     * @see Configuration
-     */
-    public String getText() {
-        return this.text;
-    }
-
-    /**
-     * Set an attribute value.
-     * 
-     * @param name
-     *            The attribute name.
-     * @param value
-     *            The attribute value.
-     */
-    public void setAttribute(final String name,
-                             final String value) {
-        this.attrs.put( name,
-                        value );
-    }
-
-    /**
-     * @see Configuration
-     */
-    public String getAttribute(final String name) {
-        return (String) this.attrs.get( name );
-    }
-
-    /**
-     * @see Configuration
-     */
-    public String[] getAttributeNames() {
-        return (String[]) this.attrs.keySet().toArray( DefaultConfiguration.EMPTY_STRING_ARRAY );
-    }
-
-    /**
-     * Add a child <code>Configuration</code>.
-     * 
-     * @param config
-     *            The child.
-     */
-    public void addChild(final Configuration config) {
-        this.children.add( config );
-    }
-
-    /**
-     * @see Configuration
-     */
-    public Configuration getChild(final String name) {
-        for ( final Iterator childIter = this.children.iterator(); childIter.hasNext(); ) {
-            final Configuration eachConfig = (Configuration) childIter.next();
-
-            if ( eachConfig.getName().equals( name ) ) {
-                return eachConfig;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * @see Configuration
-     */
-    public Configuration[] getChildren(final String name) {
-        final List result = new ArrayList();
-
-        for ( final Iterator childIter = this.children.iterator(); childIter.hasNext(); ) {
-            final Configuration eachConfig = (Configuration) childIter.next();
-
-            if ( eachConfig.getName().equals( name ) ) {
-                result.add( eachConfig );
-            }
-        }
-
-        return (Configuration[]) result.toArray( Configuration.EMPTY_ARRAY );
-    }
-
-    /**
-     * @see Configuration
-     */
-    public Configuration[] getChildren() {
-        return (Configuration[]) this.children.toArray( Configuration.EMPTY_ARRAY );
-    }
-}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,176 @@
+package org.drools.xml;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * Default implementation of <code>Configuration</code>.
+ * 
+ * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
+ * 
+ * @version $Id: DefaultConfiguration.java,v 1.2 2004/09/17 00:25:09 mproctor
+ *          Exp $
+ */
+public class DefaultConfiguration
+    implements
+    Configuration {
+    // ----------------------------------------------------------------------
+    //     Class members
+    // ----------------------------------------------------------------------
+
+    /** Empty <code>String</code> array. */
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+    // ----------------------------------------------------------------------
+    //     Instance members
+    // ----------------------------------------------------------------------
+
+    /** Node name. */
+    private final String          name;
+
+    /** Node text. */
+    private String                text               = "";
+
+    /** Node attributes. */
+    private final Map             attrs;
+
+    /** Children nodes. */
+    private final List            children;
+
+    // ----------------------------------------------------------------------
+    //     Constructors
+    // ----------------------------------------------------------------------
+
+    /**
+     * Construct.
+     * 
+     * @param name
+     *            The name of the node.
+     */
+    public DefaultConfiguration(final String name) {
+        this.name = name;
+        this.attrs = new HashMap();
+        this.children = new ArrayList();
+    }
+
+    /**
+     * @see Configuration
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * Set the node text.
+     * 
+     * @param text
+     *            The text.
+     */
+    public void setText(final String text) {
+        this.text = text;
+    }
+
+    /**
+     * @see Configuration
+     */
+    public String getText() {
+        return this.text;
+    }
+
+    /**
+     * Set an attribute value.
+     * 
+     * @param name
+     *            The attribute name.
+     * @param value
+     *            The attribute value.
+     */
+    public void setAttribute(final String name,
+                             final String value) {
+        this.attrs.put( name,
+                        value );
+    }
+
+    /**
+     * @see Configuration
+     */
+    public String getAttribute(final String name) {
+        return (String) this.attrs.get( name );
+    }
+
+    /**
+     * @see Configuration
+     */
+    public String[] getAttributeNames() {
+        return (String[]) this.attrs.keySet().toArray( DefaultConfiguration.EMPTY_STRING_ARRAY );
+    }
+
+    /**
+     * Add a child <code>Configuration</code>.
+     * 
+     * @param config
+     *            The child.
+     */
+    public void addChild(final Configuration config) {
+        this.children.add( config );
+    }
+
+    /**
+     * @see Configuration
+     */
+    public Configuration getChild(final String name) {
+        for ( final Iterator childIter = this.children.iterator(); childIter.hasNext(); ) {
+            final Configuration eachConfig = (Configuration) childIter.next();
+
+            if ( eachConfig.getName().equals( name ) ) {
+                return eachConfig;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * @see Configuration
+     */
+    public Configuration[] getChildren(final String name) {
+        final List result = new ArrayList();
+
+        for ( final Iterator childIter = this.children.iterator(); childIter.hasNext(); ) {
+            final Configuration eachConfig = (Configuration) childIter.next();
+
+            if ( eachConfig.getName().equals( name ) ) {
+                result.add( eachConfig );
+            }
+        }
+
+        return (Configuration[]) result.toArray( Configuration.EMPTY_ARRAY );
+    }
+
+    /**
+     * @see Configuration
+     */
+    public Configuration[] getChildren() {
+        return (Configuration[]) this.children.toArray( Configuration.EMPTY_ARRAY );
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultSemanticModule.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultSemanticModule.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,27 @@
+package org.drools.xml;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class DefaultSemanticModule implements SemanticModule {
+    public String uri;
+    public Map<String, Handler> handlers;
+    
+    public DefaultSemanticModule(String uri) {
+        this.uri = uri;
+        this.handlers = new HashMap<String, Handler>();
+    }    
+
+    public String getUri() {
+        return this.uri;
+    }
+    
+    public void addHandler(String name, Handler handler) {
+        this.handlers.put( name, handler );
+    }
+
+    public Handler getHandler(String name) {
+        return this.handlers.get( name );
+    }
+            
+}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,106 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class EvalHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    EvalHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( AndDescr.class );
-            this.validParents.add( OrDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-            this.validPeers.add( NotDescr.class );
-            this.validPeers.add( ExistsDescr.class );
-            this.validPeers.add( EvalDescr.class );
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( ForallDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final EvalDescr evalDescr = new EvalDescr();
-
-        return evalDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final EvalDescr evalDescr = (EvalDescr) this.xmlPackageReader.getCurrent();
-
-        final String expression = config.getText();
-
-        if ( expression == null || expression.trim().equals( "" ) ) {
-            throw new SAXParseException( "<eval> must have some content",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        evalDescr.setContent( expression );
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final Object parent = it.previous();
-
-        final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-        parentDescr.addDescr( evalDescr );
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return EvalDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,102 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class ExistsHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    ExistsHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( AndDescr.class );
-            this.validParents.add( OrDescr.class );
-            this.validParents.add( NotDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-            this.validPeers.add( NotDescr.class );
-            this.validPeers.add( ExistsDescr.class );
-            this.validPeers.add( EvalDescr.class );
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( ForallDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        final ExistsDescr existsDescr = new ExistsDescr();
-
-        return existsDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final ExistsDescr existsDescr = (ExistsDescr) this.xmlPackageReader.getCurrent();
-
-        if ( (existsDescr.getDescrs().size() != 1) && (existsDescr.getDescrs().get( 0 ).getClass() != PatternDescr.class) ) {
-            throw new SAXParseException( "<exists> can only have a single <pattern...> as a child element",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final Object parent = it.previous();
-
-        final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-        parentDescr.addDescr( existsDescr );
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return ExistsDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExpressionHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,109 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.antlr.runtime.ANTLRStringStream;
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.CommonTokenStream;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.TokenStream;
-import org.drools.lang.DRLLexer;
-import org.drools.lang.DRLParser;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.lang.descr.DeclarativeInvokerDescr;
-import org.drools.lang.descr.FromDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author fernandomeyer
- */
-
-public class ExpressionHandler extends BaseAbstractHandler
-    implements
-    Handler {
-
-    ExpressionHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( FromHandler.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( BaseDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Class generateNodeFor() {
-        return BaseDescr.class;
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        return new BaseDescr();
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-        final BaseDescr baseDescr = (BaseDescr) this.xmlPackageReader.getCurrent();
-
-        final String expression = config.getText();
-
-        if ( expression == null || expression.trim().equals( "" ) ) {
-            throw new SAXParseException( "<" + localName + "> must have some content",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator ite = parents.listIterator( parents.size() );
-        ite.previous();
-        final Object parent = ite.previous();
-
-        final FromDescr fromSource = (FromDescr) parent;
-        final CharStream charStream = new ANTLRStringStream( expression.trim() );
-        final DRLLexer lexer = new DRLLexer( charStream );
-        final TokenStream tokenStream = new CommonTokenStream( lexer );
-        final DRLParser parser = new DRLParser( tokenStream );
-
-        try {
-            final DeclarativeInvokerDescr declarativeInvoker = parser.from_source( fromSource );
-            fromSource.setDataSource( declarativeInvoker );
-        } catch ( final RecognitionException e ) {
-            throw new SAXParseException( "<" + localName + "> must have a valid expression content ",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        return null;
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExtensibleXmlParser.java (from rev 17100, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExtensibleXmlParser.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExtensibleXmlParser.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,714 @@
+package org.drools.xml;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URL;
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * <code>RuleSet</code> loader.
+ *
+ * Note you can override the default entity resolver by setting the System property of:
+ *  <code>org.drools.io.EntityResolve</code> to your own custom entity resolver.
+ *  This can be done using -Dorg.drools.io.EntityResolver=YourClassHere on the command line, for instance.
+ *
+ * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
+ */
+public class ExtensibleXmlParser extends DefaultHandler {
+    // ----------------------------------------------------------------------
+    // Constants
+    // ----------------------------------------------------------------------
+    public static final String  ENTITY_RESOLVER_PROPERTY_NAME = "org.drools.io.EntityResolver";
+
+    /** Namespace URI for the general tags. */
+    public static final String  RULES_NAMESPACE_URI           = "http://drools.org/rules";
+
+    private static final String JAXP_SCHEMA_LANGUAGE          = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
+
+    private static final String W3C_XML_SCHEMA                = "http://www.w3.org/2001/XMLSchema";
+
+    // ----------------------------------------------------------------------
+    // Instance members
+    // ----------------------------------------------------------------------
+    /** SAX parser. */
+    private SAXParser           parser;
+
+    /** isValidating */
+    private boolean             isValidating                  = true;
+
+    /** Locator for errors. */
+    private Locator             locator;
+
+    // private Map repo;
+
+    /** Stack of configurations. */
+    private LinkedList          configurationStack;
+
+    /** Current configuration text. */
+    private StringBuilder       characters;
+
+    private SemanticModules     modules;
+
+    private boolean             lastWasEndElement;
+
+    private LinkedList          parents;
+
+    private Object              peer;
+
+    private Object              current;
+
+    private Object              data;
+
+    private final MessageFormat message                       = new MessageFormat( "({0}: {1}, {2}): {3}" );
+
+    private final Map           namespaces                    = new HashMap();
+
+    EntityResolver              entityResolver;
+
+    // ----------------------------------------------------------------------
+    // Constructors
+    // ----------------------------------------------------------------------
+
+    /**
+     * Construct.
+     *
+     * <p>
+     * Uses the default JAXP SAX parser and the default classpath-based
+     * <code>DefaultSemanticModule</code>.
+     * </p>
+     */
+    public ExtensibleXmlParser() {
+        // init
+        this.configurationStack = new LinkedList();
+        this.parents = new LinkedList();
+
+        initEntityResolver();
+    }
+
+    public void setSemanticModules(SemanticModules modules) {
+        this.modules = modules;
+    }
+
+    /**
+     * Construct.
+     *
+     * <p>
+     * Uses the default classpath-based <code>DefaultSemanticModule</code>.
+     * </p>
+     *
+     * @param parser
+     *            The SAX parser.
+     */
+    public ExtensibleXmlParser(final SAXParser parser) {
+        this();
+        this.parser = parser;
+    }
+
+    // ----------------------------------------------------------------------
+    // Instance methods
+    // ----------------------------------------------------------------------
+
+    /**
+     * Read a <code>RuleSet</code> from a <code>Reader</code>.
+     *
+     * @param reader
+     *            The reader containing the rule-set.
+     *
+     * @return The rule-set.
+     */
+    public Object read(final Reader reader) throws SAXException,
+                                           IOException {
+        return read( new InputSource( reader ) );
+    }
+
+    /**
+     * Read a <code>RuleSet</code> from an <code>InputStream</code>.
+     *
+     * @param inputStream
+     *            The input-stream containing the rule-set.
+     *
+     * @return The rule-set.
+     */
+    public Object read(final InputStream inputStream) throws SAXException,
+                                                     IOException {
+        return read( new InputSource( inputStream ) );
+    }
+
+    /**
+     * Read a <code>RuleSet</code> from an <code>InputSource</code>.
+     *
+     * @param in
+     *            The rule-set input-source.
+     *
+     * @return The rule-set.
+     */
+    public Object read(final InputSource in) throws SAXException,
+                                            IOException {
+        SAXParser localParser = null;
+        if ( this.parser == null ) {
+            final SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setNamespaceAware( true );
+
+            final String isValidatingString = System.getProperty( "drools.schema.validating" );
+            if ( System.getProperty( "drools.schema.validating" ) != null ) {
+                this.isValidating = Boolean.getBoolean( "drools.schema.validating" );
+            }
+
+            if ( this.isValidating == true ) {
+                factory.setValidating( true );
+                try {
+                    localParser = factory.newSAXParser();
+                } catch ( final ParserConfigurationException e ) {
+                    throw new RuntimeException( e.getMessage() );
+                }
+
+                try {
+                    localParser.setProperty( ExtensibleXmlParser.JAXP_SCHEMA_LANGUAGE,
+                                             ExtensibleXmlParser.W3C_XML_SCHEMA );
+                } catch ( final SAXNotRecognizedException e ) {
+                    boolean hideWarnings = Boolean.getBoolean( "drools.schema.hidewarnings" );
+                    if ( !hideWarnings ) {
+                        System.err.println( "Your SAX parser is not JAXP 1.2 compliant - turning off validation." );
+                    }
+                    localParser = null;
+                }
+            }
+
+            if ( localParser == null ) {
+                // not jaxp1.2 compliant so turn off validation
+                try {
+                    this.isValidating = false;
+                    factory.setValidating( this.isValidating );
+                    localParser = factory.newSAXParser();
+                } catch ( final ParserConfigurationException e ) {
+                    throw new RuntimeException( e.getMessage() );
+                }
+            }
+        } else {
+            localParser = this.parser;
+        }
+
+        if ( !localParser.isNamespaceAware() ) {
+            throw new RuntimeException( "parser must be namespace-aware" );
+        }
+
+        localParser.parse( in,
+                           this );
+
+        return this.data;
+    }
+
+    public void setData(final Object data) {
+        this.data = data;
+    }
+
+    public Object getData() {
+        return this.data;
+    }
+
+    /**
+     * @see org.xml.sax.ContentHandler
+     */
+    public void setDocumentLocator(final Locator locator) {
+        this.locator = locator;
+    }
+
+    /**
+     * Get the <code>Locator</code>.
+     *
+     * @return The locator.
+     */
+    public Locator getLocator() {
+        return this.locator;
+    }
+
+    public void startDocument() {
+        this.isValidating = true;
+        this.current = null;
+        this.peer = null;
+        this.lastWasEndElement = false;
+        this.parents.clear();
+        this.characters = null;
+        this.configurationStack.clear();
+        this.namespaces.clear();
+    }
+
+    private int direction = 0;
+
+    /**
+     * @param uri
+     * @param localName
+     * @param qname
+     * @param attrs
+     * @throws SAXException
+     * @see org.xml.sax.ContentHandler
+     *
+     * @todo: better way to manage unhandled elements
+     */
+    public void startElement(final String uri,
+                             final String localName,
+                             final String qname,
+                             final Attributes attrs) throws SAXException {
+        if ( direction == 1 ) {
+            // going down again, so clear 
+            this.peer = null;
+        } else {
+            direction = 1;
+        }
+
+        final Handler handler = getHandler( uri,
+                                            localName );
+
+        if ( handler == null ) {
+            startConfiguration( localName,
+                                attrs );
+            return;
+        }
+
+        validate( uri,
+                  localName,
+                  handler );
+
+        final Object node = handler.start( uri,
+                                           localName,
+                                           attrs,
+                                           this );
+
+        if ( node == null ) {
+            this.parents.add( Null.instance );
+        } else {
+            this.parents.add( node );
+        }
+    }
+
+    /**
+     * @param uri
+     * @param localName
+     * @param qname
+     * @throws SAXException
+     * @see org.xml.sax.ContentHandler
+     */
+
+    public void endElement(final String uri,
+                           final String localName,
+                           final String qname) throws SAXException {
+        direction = -1;
+        final Handler handler = getHandler( uri,
+                                            localName );
+
+        if ( handler == null ) {
+            if ( this.configurationStack.size() >= 1 ) {
+                endConfiguration();
+            }
+            return;
+        }
+
+        this.current = removeParent();
+
+        this.peer = handler.end( uri,
+                                 localName,
+                                 this );
+    }
+    
+    public static class Null {
+        public static final Null instance = new Null();
+    }
+
+    private void validate(final String uri,
+                          final String localName,
+                          final Handler handler) throws SAXParseException {
+        boolean validParent = false;
+        boolean validPeer = false;
+        boolean invalidNesting = false;
+
+        final Set validParents = handler.getValidParents();
+        final Set validPeers = handler.getValidPeers();
+        boolean allowNesting = handler.allowNesting();
+
+        // get parent
+        Object parent;
+        if ( this.parents.size() != 0 ) {
+            parent = this.parents.getLast();
+        } else {
+            parent = null;
+        }
+
+        // check valid parents
+        // null parent means localname is rule-set
+        // dont process if elements are the same
+        // instead check for allowed nesting
+        final Class nodeClass = getHandler( uri,
+                                            localName ).generateNodeFor();
+        if ( nodeClass != null && !nodeClass.isInstance( parent ) ) {
+            Object allowedParent;
+            final Iterator it = validParents.iterator();
+            while ( !validParent && it.hasNext() ) {
+                allowedParent = it.next();
+                if ( parent == null && allowedParent == null ) {
+                    validParent = true;
+                } else if ( allowedParent != null && ((Class) allowedParent).isInstance( parent ) ) {
+                    validParent = true;
+                }
+            }
+            if ( !validParent ) {
+                throw new SAXParseException( "<" + localName + "> has an invalid parent element [" + parent + "]",
+                                             getLocator() );
+            }
+        }
+
+        // check valid peers
+        // null peer means localname is rule-set
+        final Object peer = this.peer;
+
+        Object allowedPeer;
+        Iterator it = validPeers.iterator();
+        while ( !validPeer && it.hasNext() ) {
+            allowedPeer = it.next();
+            if ( peer == null && allowedPeer == null ) {
+                validPeer = true;
+            } else if ( allowedPeer != null && ((Class) allowedPeer).isInstance( peer ) ) {
+                validPeer = true;
+            }
+        }
+        if ( !validPeer ) {
+            throw new SAXParseException( "<" + localName + "> is after an invalid element: " + Handler.class.getName(),
+                                         getLocator() );
+        }
+
+        if ( nodeClass != null && !allowNesting ) {
+            it = this.parents.iterator();
+            while ( !invalidNesting && it.hasNext() ) {
+                if ( nodeClass.isInstance( it.next() ) ) {
+                    invalidNesting = true;
+                }
+            }
+        }
+        if ( invalidNesting ) {
+            throw new SAXParseException( "<" + localName + ">  may not be nested",
+                                         getLocator() );
+        }
+
+    }
+
+    /**
+     * Start a configuration node.
+     *
+     * @param name
+     *            Tag name.
+     * @param attrs
+     *            Tag attributes.
+     */
+    public void startConfiguration(final String name,
+                                   final Attributes attrs) {
+        this.characters = new StringBuilder();
+
+        final DefaultConfiguration config = new DefaultConfiguration( name );
+
+        final int numAttrs = attrs.getLength();
+
+        for ( int i = 0; i < numAttrs; ++i ) {
+            config.setAttribute( attrs.getLocalName( i ),
+                                 attrs.getValue( i ) );
+        }
+
+        // lets add the namespaces as attributes
+        for ( final Iterator iter = this.namespaces.entrySet().iterator(); iter.hasNext(); ) {
+            final Map.Entry entry = (Map.Entry) iter.next();
+            String ns = (String) entry.getKey();
+            final String value = (String) entry.getValue();
+            if ( ns == null || ns.length() == 0 ) {
+                ns = "xmlns";
+            } else {
+                ns = "xmlns:" + ns;
+            }
+            config.setAttribute( ns,
+                                 value );
+        }
+
+        if ( this.configurationStack.isEmpty() ) {
+            this.configurationStack.addLast( config );
+        } else {
+            ((DefaultConfiguration) this.configurationStack.getLast()).addChild( config );
+            this.configurationStack.addLast( config );
+        }
+    }
+
+    Handler getHandler(final String uri,
+                       final String localName) {
+        return (Handler) this.modules.getSemanticModule( uri ).getHandler( localName );
+    }
+
+    /**
+     * @param chars
+     * @param start
+     * @param len
+     * @see org.xml.sax.ContentHandler
+     */
+    public void characters(final char[] chars,
+                           final int start,
+                           final int len) {
+        if ( this.characters != null ) {
+            this.characters.append( chars,
+                                    start,
+                                    len );
+        }
+    }
+
+    /**
+     * End a configuration node.
+     *
+     * @return The configuration.
+     */
+    public Configuration endConfiguration() {
+        final DefaultConfiguration config = (DefaultConfiguration) this.configurationStack.removeLast();
+        if ( this.characters != null ) {
+            config.setText( this.characters.toString() );
+        }
+
+        this.characters = null;
+
+        return config;
+    }
+
+    public Object getParent() {
+        return this.parents.getLast();
+    }
+
+    public Object getParent(int index) {
+        ListIterator it = this.parents.listIterator( this.parents.size() );
+        int x = 0;
+        Object parent = null;
+        while ( x++ <= index ) {
+            parent = it.previous();
+        }
+        return parent;
+    }
+
+    public Object removeParent() {
+        Object parent = this.parents.removeLast();
+        while ( parent == null && !this.parents.isEmpty() ) {
+            parent = this.parents.removeLast();
+        }
+        return parent;
+    }
+
+    public LinkedList getParents() {
+        return this.parents;
+    }
+
+    public Object getParent(final Class parent) {
+        final ListIterator it = this.parents.listIterator( this.parents.size() );
+        Object node = null;
+        while ( it.hasPrevious() ) {
+            node = it.previous();
+            if ( parent.isInstance( node ) ) {
+                break;
+            }
+        }
+        return node;
+    }
+
+    public Object getPeer() {
+        return this.peer;
+    }
+
+    public Object getCurrent() {
+        return this.current;
+    }
+
+    public InputSource resolveEntity(final String publicId,
+                                     final String systemId) throws SAXException {
+        try {
+            final InputSource inputSource = resolveSchema( publicId,
+                                                           systemId );
+            if ( inputSource != null ) {
+                return inputSource;
+            }
+            if ( this.entityResolver != null ) {
+                return this.entityResolver.resolveEntity( publicId,
+                                                          systemId );
+            }
+        } catch ( final IOException ioe ) {
+        }
+        return null;
+    }
+
+    public void startPrefixMapping(final String prefix,
+                                   final String uri) throws SAXException {
+        super.startPrefixMapping( prefix,
+                                  uri );
+        this.namespaces.put( prefix,
+                             uri );
+    }
+
+    public void endPrefixMapping(final String prefix) throws SAXException {
+        super.endPrefixMapping( prefix );
+        this.namespaces.remove( prefix );
+    }
+
+    private void print(final SAXParseException x) {
+        final String msg = this.message.format( new Object[]{x.getSystemId(), new Integer( x.getLineNumber() ), new Integer( x.getColumnNumber() ), x.getMessage()} );
+        System.out.println( msg );
+    }
+
+    public void warning(final SAXParseException x) {
+        print( x );
+    }
+
+    public void error(final SAXParseException x) {
+        print( x );
+    }
+
+    public void fatalError(final SAXParseException x) throws SAXParseException {
+        print( x );
+        throw x;
+    }
+
+    private InputSource resolveSchema(final String publicId,
+                                      final String systemId) throws SAXException,
+                                                            IOException {
+        // Schema files must end with xsd
+        if ( !systemId.toLowerCase().endsWith( "xsd" ) ) {
+            return null;
+        }
+
+        // try the actual location given by systemId
+        try {
+            final URL url = new URL( systemId );
+            return new InputSource( url.openStream() );
+        } catch ( final Exception e ) {
+        }
+
+        // Try and get the index for the filename, else return null
+        String xsd;
+        int index = systemId.lastIndexOf( "/" );
+        if ( index == -1 ) {
+            index = systemId.lastIndexOf( "\\" );
+        }
+        if ( index != -1 ) {
+            xsd = systemId.substring( index + 1 );
+        } else {
+            xsd = systemId;
+        }
+
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+
+        if ( cl == null ) {
+            cl = ExtensibleXmlParser.class.getClassLoader();
+        }
+
+        // Try looking in META-INF
+        {
+            final InputStream is = cl.getResourceAsStream( "META-INF/" + xsd );
+            if ( is != null ) {
+                return new InputSource( is );
+            }
+        }
+
+        // Try looking in /META-INF
+        {
+            final InputStream is = cl.getResourceAsStream( "/META-INF/" + xsd );
+            if ( is != null ) {
+                return new InputSource( is );
+            }
+        }
+
+        // Try looking at root of classpath
+        {
+            final InputStream is = cl.getResourceAsStream( "/" + xsd );
+            if ( is != null ) {
+                return new InputSource( is );
+            }
+        }
+
+        // Try current working directory
+        {
+            final File file = new File( xsd );
+            if ( file.exists() ) {
+                return new InputSource( new BufferedInputStream( new FileInputStream( file ) ) );
+            }
+        }
+
+        cl = ClassLoader.getSystemClassLoader();
+
+        // Try looking in META-INF
+        {
+            final InputStream is = cl.getResourceAsStream( "META-INF/" + xsd );
+            if ( is != null ) {
+                return new InputSource( is );
+            }
+        }
+
+        // Try looking in /META-INF
+        {
+            final InputStream is = cl.getResourceAsStream( "/META-INF/" + xsd );
+            if ( is != null ) {
+                return new InputSource( is );
+            }
+        }
+
+        // Try looking at root of classpath
+        {
+            final InputStream is = cl.getResourceAsStream( "/" + xsd );
+            if ( is != null ) {
+                return new InputSource( is );
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Intializes EntityResolver that is configured via system property ENTITY_RESOLVER_PROPERTY_NAME.
+     */
+    private void initEntityResolver() {
+        final String entityResolveClazzName = System.getProperty( ExtensibleXmlParser.ENTITY_RESOLVER_PROPERTY_NAME );
+        if ( entityResolveClazzName != null && entityResolveClazzName.length() > 0 ) {
+            try {
+                final Class entityResolverClazz = Thread.currentThread().getContextClassLoader().loadClass( entityResolveClazzName );
+                this.entityResolver = (EntityResolver) entityResolverClazz.newInstance();
+            } catch ( final Exception ignoreIt ) {
+            }
+        }
+    }
+
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,96 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.FieldBindingDescr;
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.drools.lang.descr.PredicateDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- */
-class FieldBindingHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    FieldBindingHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PatternDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FieldConstraintDescr.class );
-            this.validPeers.add( PredicateDescr.class );
-            this.validPeers.add( FieldBindingDescr.class );
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String identifier = attrs.getValue( "identifier" );
-        if ( identifier == null || identifier.trim().equals( "" ) ) {
-            throw new SAXParseException( "<field-binding> requires an 'identifier' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final String fieldName = attrs.getValue( "field-name" );
-        if ( fieldName == null || fieldName.trim().equals( "" ) ) {
-            throw new SAXParseException( "<field-binding> requires a 'field-name' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final FieldBindingDescr fieldBindingDescr = new FieldBindingDescr( fieldName,
-                                                                           identifier );
-
-        return fieldBindingDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final PatternDescr patternDescr = (PatternDescr) it.previous();
-
-        patternDescr.addConstraint( fieldBindingDescr );
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return FieldBindingDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldConstraintHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldConstraintHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldConstraintHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,110 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.FieldBindingDescr;
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.drools.lang.descr.PredicateDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class FieldConstraintHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    FieldConstraintHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PatternDescr.class );
-            this.validParents.add( AndDescr.class );
-            this.validParents.add( OrDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FieldConstraintDescr.class );
-            this.validPeers.add( PredicateDescr.class );
-            this.validPeers.add( FieldBindingDescr.class );
-
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String fieldName = attrs.getValue( "field-name" );
-
-        if ( fieldName == null || fieldName.trim().equals( "" ) ) {
-            throw new SAXParseException( "<field-constraint> requires a 'field-name' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final FieldConstraintDescr fieldConstraint = new FieldConstraintDescr( fieldName );
-
-        return fieldConstraint;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final Object parent = it.previous();
-
-        if ( parent instanceof PatternDescr ) {
-            final PatternDescr patternDescr = (PatternDescr) parent;
-            patternDescr.addConstraint( fieldConstraintDescr );
-        } else if ( parent instanceof ConditionalElementDescr ) {
-            final ConditionalElementDescr ceDescr = (ConditionalElementDescr) parent;
-            final FieldConstraintDescr field = (FieldConstraintDescr) this.xmlPackageReader.getCurrent();
-            ceDescr.addOrMerge( field );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return FieldConstraintDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,106 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * @author fernandomeyer
- *
- */
-public class ForallHandler extends BaseAbstractHandler
-    implements
-    Handler {
-
-    ForallHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( AndDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-            this.validPeers.add( NotDescr.class );
-            this.validPeers.add( ExistsDescr.class );
-            this.validPeers.add( EvalDescr.class );
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( ForallDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.xml.Handler#end(java.lang.String, java.lang.String)
-     */
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final ForallDescr forallDescr = (ForallDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final Object parent = it.previous();
-
-        final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-        parentDescr.addDescr( forallDescr );
-
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.xml.Handler#generateNodeFor()
-     */
-    public Class generateNodeFor() {
-        return ForallDescr.class;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.xml.Handler#start(java.lang.String, java.lang.String, org.xml.sax.Attributes)
-     */
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final ForallDescr forallDescr = new ForallDescr();
-
-        return forallDescr;
-    }
-
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,90 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.FromDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * @author fernandomeyer
- *
- */
-public class FromHandler extends BaseAbstractHandler
-    implements
-    Handler {
-
-    FromHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PatternDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FieldConstraintDescr.class );
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final FromDescr fromDesctiptor = new FromDescr();
-        return fromDesctiptor;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final FromDescr fromDescr = (FromDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        Object parent = it.previous();
-
-        final PatternDescr patternDescr = (PatternDescr) parent;
-
-        final ConditionalElementDescr parentDescr = (ConditionalElementDescr) it.previous();
-
-        if ( (config.getChild( "expression" ) != null) ) {
-            patternDescr.setSource( fromDescr );    
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return FromDescr.class;
-    }
-
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,120 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.QueryDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class FunctionHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    FunctionHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PackageDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FunctionDescr.class );
-            this.validPeers.add( RuleDescr.class );
-            this.validPeers.add( QueryDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        return null;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final String name = config.getAttribute( "name" );
-        if ( name == null || name.trim().equals( "" ) ) {
-            throw new SAXParseException( "<function> requires a 'name' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final String returnType = config.getAttribute( "return-type" );
-        if ( returnType == null || returnType.trim().equals( "" ) ) {
-            throw new SAXParseException( "<function> requires a 'return-type' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final FunctionDescr functionDescr = new FunctionDescr( name,
-                                                               returnType );
-
-        final Configuration[] parameters = config.getChildren( "parameter" );
-
-        for ( int i = 0, length = parameters.length; i < length; i++ ) {
-            final String identifier = parameters[i].getAttribute( "identifier" );
-            if ( name == null || identifier.trim().equals( "" ) ) {
-                throw new SAXParseException( "function's <parameter> requires an 'identifier' attribute",
-                                             this.xmlPackageReader.getLocator() );
-            }
-
-            final String type = parameters[i].getAttribute( "type" );
-            if ( type == null || type.trim().equals( "" ) ) {
-                throw new SAXParseException( "function's <parameter> requires an 'type' attribute",
-                                             this.xmlPackageReader.getLocator() );
-            }
-
-            functionDescr.addParameter( type,
-                                        identifier );
-        }
-
-        // we allow empty, "", bodies - but make sure that we atleast have a body element
-        final Configuration body = config.getChild( "body" );
-        if ( body == null ) {
-            throw new SAXParseException( "function must have a <body>",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        functionDescr.setText( body.getText() );
-
-        final PackageDescr packageDescr = this.xmlPackageReader.getPackageDescr();
-
-        packageDescr.addFunction( functionDescr );
-
-        return functionDescr;
-    }
-
-    public Class generateNodeFor() {
-        return FunctionDescr.class;
-    }
-}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -25,14 +25,16 @@
  * @author mproctor
  * 
  */
-interface Handler {
+public interface Handler {
 
     Object start(String uri,
                  String localName,
-                 Attributes attrs) throws SAXException;
+                 Attributes attrs,
+                 ExtensibleXmlParser xmlPackageReader) throws SAXException;
 
     Object end(String uri,
-               String localName) throws SAXException;
+               String localName,
+               ExtensibleXmlParser xmlPackageReader) throws SAXException;
 
     Set getValidParents();
 

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,118 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class LhsHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    LhsHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PackageDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FunctionDescr.class );
-            this.validPeers.add( RuleDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        return null;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final String name = config.getAttribute( "name" );
-        if ( name == null || name.trim().equals( "" ) ) {
-            throw new SAXParseException( "<function> requires a 'name' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final String returnType = config.getAttribute( "return-type" );
-        if ( returnType == null || returnType.trim().equals( "" ) ) {
-            throw new SAXParseException( "<function> requires a 'return-type' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final FunctionDescr functionDescr = new FunctionDescr( name,
-                                                               returnType );
-
-        final Configuration[] parameters = config.getChildren( "parameter" );
-
-        for ( int i = 0, length = parameters.length; i < length; i++ ) {
-            final String identifier = parameters[i].getAttribute( "identifier" );
-            if ( name == null || identifier.trim().equals( "" ) ) {
-                throw new SAXParseException( "function's <parameter> requires an 'identifier' attribute",
-                                             this.xmlPackageReader.getLocator() );
-            }
-
-            final String type = parameters[i].getText();
-            if ( type == null || type.trim().equals( "" ) ) {
-                throw new SAXParseException( "function's <parameter> must specify a 'type'",
-                                             this.xmlPackageReader.getLocator() );
-            }
-
-            functionDescr.addParameter( type,
-                                        identifier );
-        }
-
-        // we allow empty, "", bodies - but make sure that we atleast have a body element
-        final Configuration body = config.getChild( "body" );
-        if ( body == null ) {
-            throw new SAXParseException( "function must have a <body>",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        functionDescr.setText( body.getText() );
-
-        final PackageDescr packageDescr = this.xmlPackageReader.getPackageDescr();
-
-        packageDescr.addFunction( functionDescr );
-
-        return functionDescr;
-    }
-
-    public Class generateNodeFor() {
-        return FunctionDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,107 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.LiteralRestrictionDescr;
-import org.drools.lang.descr.QualifiedIdentifierRestrictionDescr;
-import org.drools.lang.descr.RestrictionConnectiveDescr;
-import org.drools.lang.descr.ReturnValueRestrictionDescr;
-import org.drools.lang.descr.VariableRestrictionDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * @author fmeyer
- * 
- */
-class LiteralRestrictionHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    LiteralRestrictionHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( FieldConstraintDescr.class );
-            this.validParents.add( RestrictionConnectiveDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.validPeers.add( LiteralRestrictionDescr.class );
-            this.validPeers.add( ReturnValueRestrictionDescr.class );
-            this.validPeers.add( VariableRestrictionDescr.class );
-            this.validPeers.add( RestrictionConnectiveDescr.class );
-            this.validPeers.add( QualifiedIdentifierRestrictionDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String evaluator = attrs.getValue( "evaluator" );
-        if ( evaluator == null || evaluator.trim().equals( "" ) ) {
-            throw new SAXParseException( "<literal-restriction> requires an 'evaluator' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final String text = attrs.getValue( "value" );
-
-        final LiteralRestrictionDescr literalDescr = new LiteralRestrictionDescr( evaluator,
-                                                                                  text );
-
-        return literalDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final LiteralRestrictionDescr literalDescr = (LiteralRestrictionDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-
-        final Object parent = it.previous();
-
-        if ( parent instanceof FieldConstraintDescr ) {
-            final FieldConstraintDescr fieldConstriantDescr = (FieldConstraintDescr) parent;
-            fieldConstriantDescr.addRestriction( literalDescr );
-        } else if ( parent instanceof RestrictionConnectiveDescr ) {
-            final RestrictionConnectiveDescr restrictionDescr = (RestrictionConnectiveDescr) parent;
-            restrictionDescr.addRestriction( literalDescr );
-        }
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return LiteralRestrictionDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,101 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class NotHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    NotHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( AndDescr.class );
-            this.validParents.add( OrDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-            this.validPeers.add( NotDescr.class );
-            this.validPeers.add( ExistsDescr.class );
-            this.validPeers.add( EvalDescr.class );
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( ForallDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        final NotDescr notDescr = new NotDescr();
-
-        return notDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final NotDescr notDescr = (NotDescr) this.xmlPackageReader.getCurrent();
-
-        if ( (notDescr.getDescrs().size() != 1) && (notDescr.getDescrs().get( 0 ).getClass() != PatternDescr.class) ) {
-            throw new SAXParseException( "<not> can only have a single <pattern...> as a child element",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final Object parent = it.previous();
-
-        final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-        parentDescr.addDescr( notDescr );
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return NotDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,99 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * @author mproctor
- */
-class OrHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    OrHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( AndDescr.class );
-            this.validParents.add( PatternDescr.class );
-            this.validParents.add( AccumulateDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-            this.validPeers.add( NotDescr.class );
-            this.validPeers.add( ExistsDescr.class );
-            this.validPeers.add( EvalDescr.class );
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( ForallDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        final OrDescr orDescr = new OrDescr();
-
-        return orDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final OrDescr orDescr = (OrDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final Object parent = it.previous();
-
-        if ( parent instanceof ConditionalElementDescr ) {
-            final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-            parentDescr.addDescr( orDescr );
-        } else if ( parent instanceof PatternDescr ) {
-            final PatternDescr parentDescr = (PatternDescr) parent;
-            parentDescr.addConstraint( orDescr );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return OrDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,131 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-
-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.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class PackageHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    PackageHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( null );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String ruleSetName = attrs.getValue( "name" );
-
-        if ( ruleSetName == null || ruleSetName.trim().equals( "" ) ) {
-            throw new SAXParseException( "<package> requires a 'name' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final PackageDescr packageDescr = new PackageDescr( ruleSetName.trim() );
-
-        this.xmlPackageReader.setPackageDescr( packageDescr );
-        return packageDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final PackageDescr packageDescr = this.xmlPackageReader.getPackageDescr();
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final Configuration[] imports = config.getChildren( "import" );
-
-        for ( int i = 0, length = imports.length; i < length; i++ ) {
-            final String importEntry = imports[i].getAttribute( "name" );
-
-            if ( importEntry == null || importEntry.trim().equals( "" ) ) {
-                throw new SAXParseException( "<import> cannot be blank",
-                                             this.xmlPackageReader.getLocator() );
-            }
-            packageDescr.addImport( new ImportDescr( importEntry ) );
-        }
-        
-        final Configuration[] importfunctions = config.getChildren( "importfunction" );
-
-        for ( int i = 0, length = importfunctions.length; i < length; i++ ) {
-            final String importfunctionEntry = importfunctions[i].getAttribute( "name" );
-
-            if ( importfunctionEntry == null || importfunctionEntry.trim().equals( "" ) ) {
-                throw new SAXParseException( "<importfunction> cannot be blank",
-                                             this.xmlPackageReader.getLocator() );
-            }
-            
-            FunctionImportDescr funcdescr = new FunctionImportDescr();
-            funcdescr.setTarget( importfunctionEntry );
-            
-            packageDescr.addFunctionImport(funcdescr);
-        }
-        
-
-        final Configuration[] globals = config.getChildren( "global" );
-
-        for ( int i = 0, length = globals.length; i < length; i++ ) {
-            final String identifier = globals[i].getAttribute( "identifier" );
-
-            if ( identifier == null || identifier.trim().equals( "" ) ) {
-                throw new SAXParseException( "<global> must have an identifier",
-                                             this.xmlPackageReader.getLocator() );
-            }
-
-            final String type = globals[i].getAttribute( "type" );
-            if ( type == null || type.trim().equals( "" ) ) {
-                throw new SAXParseException( "<global> must have specify a type",
-                                             this.xmlPackageReader.getLocator() );
-            }
-            final GlobalDescr global = new GlobalDescr( identifier,
-                                                        type );
-            packageDescr.addGlobal( global );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return PackageDescr.class;
-    }
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,124 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.CollectDescr;
-import org.drools.lang.descr.ConditionalElementDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.drools.lang.descr.PatternDestinationDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class PatternHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    PatternHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( AndDescr.class );
-            this.validParents.add( OrDescr.class );
-            this.validParents.add( NotDescr.class );
-            this.validParents.add( ExistsDescr.class );
-            this.validParents.add( CollectDescr.class );
-            this.validParents.add( ForallDescr.class );
-            this.validParents.add( AccumulateDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( AndDescr.class );
-            this.validPeers.add( OrDescr.class );
-            this.validPeers.add( NotDescr.class );
-            this.validPeers.add( ExistsDescr.class );
-            this.validPeers.add( EvalDescr.class );
-            this.validPeers.add( PatternDescr.class );
-            this.validPeers.add( ForallDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String objectType = attrs.getValue( "object-type" );
-
-        if ( objectType == null || objectType.trim().equals( "" ) ) {
-            throw new SAXParseException( "<pattern> requires an 'object-type' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        PatternDescr patternDescr = null;
-
-        final String identifier = attrs.getValue( "identifier" );
-        if ( identifier == null || identifier.trim().equals( "" ) ) {
-            patternDescr = new PatternDescr( objectType );
-        } else {
-            patternDescr = new PatternDescr( objectType,
-                                             identifier );
-        }
-
-        return patternDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-        final PatternDescr patternDescr = (PatternDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator ite = parents.listIterator( parents.size() );
-        ite.previous();
-        final Object parent = ite.previous();
-
-        if ( parent instanceof PatternDestinationDescr ) {
-            final PatternDestinationDescr parentDescr = (PatternDestinationDescr) parent;
-            parentDescr.setInputPattern( patternDescr );
-        } else {
-            final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
-            parentDescr.addDescr( patternDescr );
-        }
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return PatternDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,95 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.FieldBindingDescr;
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.drools.lang.descr.PredicateDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class PredicateHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    PredicateHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PatternDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FieldConstraintDescr.class );
-            this.validPeers.add( PredicateDescr.class );
-            this.validPeers.add( FieldBindingDescr.class );
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final PredicateDescr predicateDescr = new PredicateDescr();
-
-        return predicateDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final PredicateDescr predicateDescr = (PredicateDescr) this.xmlPackageReader.getCurrent();
-
-        final String expression = config.getText();
-
-        if ( expression == null || expression.trim().equals( "" ) ) {
-            throw new SAXParseException( "<predicate> must have some content",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        predicateDescr.setContent( expression );
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-        final PatternDescr patternDescr = (PatternDescr) it.previous();
-
-        patternDescr.addConstraint( predicateDescr );
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return PredicateDescr.class;
-    }
-}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ProcessBuildData.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ProcessBuildData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ProcessBuildData.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,35 @@
+/**
+ * 
+ */
+package org.drools.xml;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.ruleflow.common.core.Process;
+import org.drools.ruleflow.core.Node;
+
+public class ProcessBuildData {
+    private Process process;
+    private Map<String, Node> nodes = new HashMap<String, Node>();               
+    
+    public Process getProcess() {
+        return process;
+    }
+    
+    public void setProcess(Process process) {
+        this.process = process;
+    }
+    
+    public Map<String, Node> getNodes() {
+        return nodes;
+    }
+    public boolean addNode(Node node) {
+        return( this.nodes.put( node.getName(),
+                               node ) != null );
+    }               
+    
+    public Node getNode(String name) {
+        return this.nodes.get( name );
+    }
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QualifiedIdentifierRestrictionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QualifiedIdentifierRestrictionHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QualifiedIdentifierRestrictionHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,115 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.LiteralRestrictionDescr;
-import org.drools.lang.descr.QualifiedIdentifierRestrictionDescr;
-import org.drools.lang.descr.RestrictionConnectiveDescr;
-import org.drools.lang.descr.ReturnValueRestrictionDescr;
-import org.drools.lang.descr.VariableRestrictionDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author fmeyer
- */
-
-class QualifiedIdentifierRestrictionHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    QualifiedIdentifierRestrictionHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( FieldConstraintDescr.class );
-            this.validParents.add( RestrictionConnectiveDescr.class );
-
-            this.validPeers = new HashSet();
-
-            this.validPeers.add( null );
-            this.validPeers.add( LiteralRestrictionDescr.class );
-            this.validPeers.add( ReturnValueRestrictionDescr.class );
-            this.validPeers.add( VariableRestrictionDescr.class );
-            this.validPeers.add( RestrictionConnectiveDescr.class );
-            this.validPeers.add( QualifiedIdentifierRestrictionDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String evaluator = attrs.getValue( "evaluator" );
-        if ( evaluator == null || evaluator.trim().equals( "" ) ) {
-            throw new SAXParseException( "<bound-variable> requires an 'evaluator' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-//        qualifiedIdentifierRestricionDescr.set
-
-        final QualifiedIdentifierRestrictionDescr qualifiedIdentifierRestricionDescr = new QualifiedIdentifierRestrictionDescr( evaluator,
-                                                                                                                                null );
-
-        return qualifiedIdentifierRestricionDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final QualifiedIdentifierRestrictionDescr qualifiedIdentifierRestricionDescr = (QualifiedIdentifierRestrictionDescr) this.xmlPackageReader.getCurrent();
-
-        final String expression = config.getText();
-
-        if ( expression == null || expression.trim().equals( "" ) ) {
-            throw new SAXParseException( "<qualified-identifier-restriction> must have an expression content",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        qualifiedIdentifierRestricionDescr.setText( expression );
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-
-        final Object parent = it.previous();
-
-        if ( parent instanceof FieldConstraintDescr ) {
-            final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) parent;
-            fieldConstraintDescr.addRestriction( qualifiedIdentifierRestricionDescr );
-        } else if ( parent instanceof RestrictionConnectiveDescr ) {
-            final RestrictionConnectiveDescr restrictionConDescr = (RestrictionConnectiveDescr) parent;
-            restrictionConDescr.addRestriction( qualifiedIdentifierRestricionDescr );
-        }
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return QualifiedIdentifierRestrictionDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,95 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.QueryDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class QueryHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    QueryHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PackageDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FunctionDescr.class );
-            this.validPeers.add( RuleDescr.class );
-            this.validPeers.add( QueryDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String queryName = attrs.getValue( "name" );
-
-        if ( queryName == null || queryName.trim().equals( "" ) ) {
-            throw new SAXParseException( "<query> requires a 'name' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final QueryDescr queryDescr = new QueryDescr( queryName.trim() );
-
-        return queryDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final QueryDescr queryDescr = (QueryDescr) this.xmlPackageReader.getCurrent();
-
-        final AndDescr lhs = queryDescr.getLhs();
-
-        if ( lhs == null || lhs.getDescrs().isEmpty() ) {
-            throw new SAXParseException( "<query> requires a LHS",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        this.xmlPackageReader.getPackageDescr().addRule( queryDescr );
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return QueryDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,109 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.LiteralRestrictionDescr;
-import org.drools.lang.descr.QualifiedIdentifierRestrictionDescr;
-import org.drools.lang.descr.RestrictionConnectiveDescr;
-import org.drools.lang.descr.ReturnValueRestrictionDescr;
-import org.drools.lang.descr.VariableRestrictionDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class RestrictionConnectiveHandler extends BaseAbstractHandler
-    implements
-    Handler {
-
-    public final static String AND = "and-restriction-connective";
-    public final static String OR  = "or-restriction-connective";
-
-    RestrictionConnectiveHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( FieldConstraintDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.validPeers.add( LiteralRestrictionDescr.class );
-            this.validPeers.add( ReturnValueRestrictionDescr.class );
-            this.validPeers.add( VariableRestrictionDescr.class );
-            this.validPeers.add( RestrictionConnectiveDescr.class );
-            this.validPeers.add( QualifiedIdentifierRestrictionDescr.class );
-
-            this.allowNesting = true;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        RestrictionConnectiveDescr connectiveDescr = null;
-        if ( localName.equals( RestrictionConnectiveHandler.OR ) ) {
-            connectiveDescr = new RestrictionConnectiveDescr( RestrictionConnectiveDescr.OR );
-        } else if ( localName.equals( RestrictionConnectiveHandler.AND ) ) {
-            connectiveDescr = new RestrictionConnectiveDescr( RestrictionConnectiveDescr.AND );
-        }
-
-        return connectiveDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final RestrictionConnectiveDescr connectiveDescr = (RestrictionConnectiveDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final int size = parents.size();
-        final ListIterator ite = parents.listIterator( parents.size() );
-
-        ite.previous();
-
-        final Object obj = ite.previous();
-
-        if ( obj instanceof FieldConstraintDescr ) {
-            final FieldConstraintDescr fieldConstriantDescr = (FieldConstraintDescr) obj;
-            fieldConstriantDescr.addRestriction( connectiveDescr );
-        } else if ( obj instanceof RestrictionConnectiveDescr ) {
-            final RestrictionConnectiveDescr restconective = (RestrictionConnectiveDescr) obj;
-            restconective.addRestriction( connectiveDescr );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return RestrictionConnectiveDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,113 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.LiteralRestrictionDescr;
-import org.drools.lang.descr.QualifiedIdentifierRestrictionDescr;
-import org.drools.lang.descr.RestrictionConnectiveDescr;
-import org.drools.lang.descr.ReturnValueRestrictionDescr;
-import org.drools.lang.descr.VariableRestrictionDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class ReturnValueRestrictionHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    ReturnValueRestrictionHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( FieldConstraintDescr.class );
-            this.validParents.add( RestrictionConnectiveDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-
-            this.validPeers.add( LiteralRestrictionDescr.class );
-            this.validPeers.add( ReturnValueRestrictionDescr.class );
-            this.validPeers.add( VariableRestrictionDescr.class );
-            this.validPeers.add( RestrictionConnectiveDescr.class );
-            this.validPeers.add( QualifiedIdentifierRestrictionDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-        final String evaluator = attrs.getValue( "evaluator" );
-        if ( evaluator == null || evaluator.trim().equals( "" ) ) {
-            throw new SAXParseException( "<return-value-restriction> requires an 'evaluator' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final ReturnValueRestrictionDescr returnValueDescr = new ReturnValueRestrictionDescr( evaluator );
-
-        return returnValueDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final ReturnValueRestrictionDescr returnValueDescr = (ReturnValueRestrictionDescr) this.xmlPackageReader.getCurrent();
-
-        final String expression = config.getText();
-
-        if ( expression == null || expression.trim().equals( "" ) ) {
-            throw new SAXParseException( "<return-value-restriction> must have some content",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        returnValueDescr.setContent( expression );
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-
-        final Object parent = it.previous();
-
-        if ( parent instanceof FieldConstraintDescr ) {
-            final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) parent;
-            fieldConstraintDescr.addRestriction( returnValueDescr );
-        } else if ( parent instanceof RestrictionConnectiveDescr ) {
-            final RestrictionConnectiveDescr rcDescr = (RestrictionConnectiveDescr) parent;
-            rcDescr.addRestriction( returnValueDescr );
-        }
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return ReturnValueRestrictionDescr.class;
-    }
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,118 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.AttributeDescr;
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.QueryDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class RuleHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    RuleHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( PackageDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( FunctionDescr.class );
-            this.validPeers.add( RuleDescr.class );
-            this.validPeers.add( QueryDescr.class );
-
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String ruleName = attrs.getValue( "name" );
-
-        if ( ruleName == null || ruleName.trim().equals( "" ) ) {
-            throw new SAXParseException( "<rule> requires a 'name' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final RuleDescr ruleDescr = new RuleDescr( ruleName.trim() );
-
-        return ruleDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final RuleDescr ruleDescr = (RuleDescr) this.xmlPackageReader.getCurrent();
-
-        final AndDescr lhs = ruleDescr.getLhs();
-
-        if ( lhs == null ) {
-            throw new SAXParseException( "<rule> requires a LHS",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final Configuration rhs = config.getChild( "rhs" );
-        if ( rhs == null ) {
-            throw new SAXParseException( "<rule> requires a <rh> child element",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        ruleDescr.setConsequence( rhs.getText() );
-
-        final Configuration[] attributes = config.getChildren( "rule-attribute" );
-        for ( int i = 0, length = attributes.length; i < length; i++ ) {
-            final String name = attributes[i].getAttribute( "name" );
-            if ( name == null || name.trim().equals( "" ) ) {
-                throw new SAXParseException( "<rule-attribute> requires a 'name' attribute",
-                                             this.xmlPackageReader.getLocator() );
-            }
-
-            final String value = attributes[i].getAttribute( "value" );
-
-            ruleDescr.addAttribute( new AttributeDescr( name,
-                                                        value ) );
-        }
-
-        this.xmlPackageReader.getPackageDescr().addRule( ruleDescr );
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return RuleDescr.class;
-    }
-}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModule.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModule.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,9 @@
+package org.drools.xml;
+
+public interface SemanticModule {
+    public String getUri();
+    
+    public void addHandler(String name, Handler handler);
+
+    public Handler getHandler(String name);
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/SemanticModules.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,167 @@
+package org.drools.xml;
+
+import java.util.HashMap;
+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();
+    }
+
+    public void addSemanticModule(SemanticModule module) {
+        this.modules.put( module.getUri(),
+                          module );
+    }
+
+    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 );
+    }
+
+    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 );
+    }
+}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,108 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.LiteralRestrictionDescr;
-import org.drools.lang.descr.RestrictionConnectiveDescr;
-import org.drools.lang.descr.ReturnValueRestrictionDescr;
-import org.drools.lang.descr.VariableRestrictionDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * @author mproctor
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
-class VariableRestrictionsHandler extends BaseAbstractHandler
-    implements
-    Handler {
-    VariableRestrictionsHandler(final XmlPackageReader xmlPackageReader) {
-        this.xmlPackageReader = xmlPackageReader;
-
-        if ( (this.validParents == null) && (this.validPeers == null) ) {
-            this.validParents = new HashSet();
-            this.validParents.add( FieldConstraintDescr.class );
-            this.validParents.add( RestrictionConnectiveDescr.class );
-
-            this.validPeers = new HashSet();
-            this.validPeers.add( null );
-            this.validPeers.add( LiteralRestrictionDescr.class );
-            this.validPeers.add( ReturnValueRestrictionDescr.class );
-            this.validPeers.add( VariableRestrictionDescr.class );
-            this.validPeers.add( RestrictionConnectiveDescr.class );
-            this.allowNesting = false;
-        }
-    }
-
-    public Object start(final String uri,
-                        final String localName,
-                        final Attributes attrs) throws SAXException {
-        this.xmlPackageReader.startConfiguration( localName,
-                                                  attrs );
-
-        final String evaluator = attrs.getValue( "evaluator" );
-        if ( evaluator == null || evaluator.trim().equals( "" ) ) {
-            throw new SAXParseException( "<bound-variable> requires an 'evaluator' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final String identifier = attrs.getValue( "identifier" );
-        if ( identifier == null || identifier.trim().equals( "" ) ) {
-            throw new SAXParseException( "<bound-variable>  requires an 'identifier' attribute",
-                                         this.xmlPackageReader.getLocator() );
-        }
-
-        final VariableRestrictionDescr variableDescr = new VariableRestrictionDescr( evaluator,
-                                                                                     identifier );
-
-        return variableDescr;
-    }
-
-    public Object end(final String uri,
-                      final String localName) throws SAXException {
-        final Configuration config = this.xmlPackageReader.endConfiguration();
-
-        final VariableRestrictionDescr variableDescr = (VariableRestrictionDescr) this.xmlPackageReader.getCurrent();
-
-        final LinkedList parents = this.xmlPackageReader.getParents();
-        final ListIterator it = parents.listIterator( parents.size() );
-        it.previous();
-
-        final Object parent = it.previous();
-
-        if ( parent instanceof FieldConstraintDescr ) {
-            final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) parent;
-            fieldConstraintDescr.addRestriction( variableDescr );
-        } else if ( parent instanceof RestrictionConnectiveDescr ) {
-            final RestrictionConnectiveDescr restrictionConDescr = (RestrictionConnectiveDescr) parent;
-            restrictionConDescr.addRestriction( variableDescr );
-        }
-
-        return null;
-    }
-
-    public Class generateNodeFor() {
-        return VariableRestrictionDescr.class;
-    }
-}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -48,7 +48,9 @@
 import org.drools.lang.descr.RuleDescr;
 import org.drools.lang.descr.VariableRestrictionDescr;
 import org.drools.util.ReflectiveVisitor;
+import org.drools.xml.rules.RestrictionConnectiveHandler;
 
+
 /**
  * This utility will take a AST of a rule package, and emit XML.
  * This can be used in porting from DRL to XML.

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,784 +0,0 @@
-package org.drools.xml;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.net.URL;
-import java.text.MessageFormat;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * <code>RuleSet</code> loader.
- *
- * Note you can override the default entity resolver by setting the System property of:
- *  <code>org.drools.io.EntityResolve</code> to your own custom entity resolver.
- *  This can be done using -Dorg.drools.io.EntityResolver=YourClassHere on the command line, for instance.
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
- */
-public class XmlPackageReader extends DefaultHandler {
-    // ----------------------------------------------------------------------
-    // Constants
-    // ----------------------------------------------------------------------
-    public static final String  ENTITY_RESOLVER_PROPERTY_NAME = "org.drools.io.EntityResolver";
-
-    /** Namespace URI for the general tags. */
-    public static final String  RULES_NAMESPACE_URI           = "http://drools.org/rules";
-
-    private static final String JAXP_SCHEMA_LANGUAGE          = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
-
-    private static final String W3C_XML_SCHEMA                = "http://www.w3.org/2001/XMLSchema";
-
-    // ----------------------------------------------------------------------
-    // Instance members
-    // ----------------------------------------------------------------------
-    /** SAX parser. */
-    private SAXParser           parser;
-
-    /** isValidating */
-    private boolean             isValidating                  = true;
-
-    /** Locator for errors. */
-    private Locator             locator;
-
-    // private Map repo;
-
-    /** Stack of configurations. */
-    private LinkedList          configurationStack;
-
-    /** Current configuration text. */
-    private StringBuffer        characters;
-
-    private Map                 handlers;
-
-    private boolean             lastWasEndElement;
-
-    private LinkedList          parents;
-
-    private Object              peer;
-
-    private Object              current;
-
-    private PackageDescr        packageDescr;
-
-    private boolean             inHandledRuleSubElement;
-
-    private final MessageFormat message                       = new MessageFormat( "({0}: {1}, {2}): {3}" );
-
-    private final Map           namespaces                    = new HashMap();
-
-    EntityResolver              entityResolver;
-
-    // ----------------------------------------------------------------------
-    // Constructors
-    // ----------------------------------------------------------------------
-
-    /**
-     * Construct.
-     *
-     * <p>
-     * Uses the default JAXP SAX parser and the default classpath-based
-     * <code>DefaultSemanticModule</code>.
-     * </p>
-     */
-    public XmlPackageReader() {
-        // init
-        this.configurationStack = new LinkedList();
-        this.parents = new LinkedList();
-
-        this.handlers = new HashMap();
-
-        this.handlers.put( "package",
-                           new PackageHandler( this ) );
-        this.handlers.put( "rule",
-                           new RuleHandler( this ) );
-        this.handlers.put( "query",
-                           new QueryHandler( this ) );
-        this.handlers.put( "attribute",
-                           null );
-        this.handlers.put( "function",
-                           new FunctionHandler( this ) );
-
-        // Conditional Elements
-        this.handlers.put( "lhs",
-                           new AndHandler( this ) );
-
-        this.handlers.put( "and-restriction-connective",
-                           new RestrictionConnectiveHandler( this ) );
-
-        this.handlers.put( "or-restriction-connective",
-                           new RestrictionConnectiveHandler( this ) );
-
-        this.handlers.put( "and-conditional-element",
-                           new AndHandler( this ) );
-
-        this.handlers.put( "or-conditional-element",
-                           new OrHandler( this ) );
-
-        this.handlers.put( "and-constraint-connective",
-                           new AndHandler( this ) );
-        this.handlers.put( "or-constraint-connective",
-                           new OrHandler( this ) );
-
-        this.handlers.put( "not",
-                           new NotHandler( this ) );
-        this.handlers.put( "exists",
-                           new ExistsHandler( this ) );
-        this.handlers.put( "eval",
-                           new EvalHandler( this ) );
-        this.handlers.put( "pattern",
-                           new PatternHandler( this ) );
-
-        this.handlers.put( "from",
-                           new FromHandler( this ) );
-        this.handlers.put( "forall",
-                           new ForallHandler( this ) );
-        this.handlers.put( "collect",
-                           new CollectHandler( this ) );
-        this.handlers.put( "accumulate",
-                           new AccumulateHandler( this ) );
-
-        // Field Constraints
-        this.handlers.put( "field-constraint",
-                           new FieldConstraintHandler( this ) );
-        this.handlers.put( "literal-restriction",
-                           new LiteralRestrictionHandler( this ) );
-        this.handlers.put( "variable-restriction",
-                           new VariableRestrictionsHandler( this ) );
-        this.handlers.put( "predicate",
-                           new PredicateHandler( this ) );
-
-        this.handlers.put( "return-value-restriction",
-                           new ReturnValueRestrictionHandler( this ) );
-        this.handlers.put( "qualified-identifier-restriction",
-                           new QualifiedIdentifierRestrictionHandler( this ) );
-
-        this.handlers.put( "field-binding",
-                           new FieldBindingHandler( this ) );
-
-        this.handlers.put( "field-binding",
-                           new FieldBindingHandler( this ) );
-
-        this.handlers.put( "init",
-                           new AccumulateHelperHandler( this ) );
-        this.handlers.put( "action",
-                           new AccumulateHelperHandler( this ) );
-        this.handlers.put( "result",
-                           new AccumulateHelperHandler( this ) );
-        this.handlers.put( "reverse",
-                           new AccumulateHelperHandler( this ) );
-
-        this.handlers.put( "external-function",
-                           new AccumulateHelperHandler( this ) );
-        
-        this.handlers.put( "expression",
-                           new ExpressionHandler( this ) );        
-
-        initEntityResolver();
-    }
-
-    /**
-     * Construct.
-     *
-     * <p>
-     * Uses the default classpath-based <code>DefaultSemanticModule</code>.
-     * </p>
-     *
-     * @param parser
-     *            The SAX parser.
-     */
-    public XmlPackageReader(final SAXParser parser) {
-        this.parser = parser;
-    }
-
-    // ----------------------------------------------------------------------
-    // Instance methods
-    // ----------------------------------------------------------------------
-
-    /**
-     * Read a <code>RuleSet</code> from a <code>Reader</code>.
-     *
-     * @param reader
-     *            The reader containing the rule-set.
-     *
-     * @return The rule-set.
-     */
-    public PackageDescr read(final Reader reader) throws SAXException,
-                                                 IOException {
-        return read( new InputSource( reader ) );
-    }
-
-    /**
-     * Read a <code>RuleSet</code> from an <code>InputStream</code>.
-     *
-     * @param inputStream
-     *            The input-stream containing the rule-set.
-     *
-     * @return The rule-set.
-     */
-    public PackageDescr read(final InputStream inputStream) throws SAXException,
-                                                           IOException {
-        return read( new InputSource( inputStream ) );
-    }
-
-    /**
-     * Read a <code>RuleSet</code> from an <code>InputSource</code>.
-     *
-     * @param in
-     *            The rule-set input-source.
-     *
-     * @return The rule-set.
-     */
-    public PackageDescr read(final InputSource in) throws SAXException,
-                                                  IOException {
-        SAXParser localParser = null;
-        if ( this.parser == null ) {
-            final SAXParserFactory factory = SAXParserFactory.newInstance();
-            factory.setNamespaceAware( true );
-
-            final String isValidatingString = System.getProperty( "drools.schema.validating" );
-            if ( System.getProperty( "drools.schema.validating" ) != null ) {
-                this.isValidating = Boolean.getBoolean( "drools.schema.validating" );
-            }
-
-            if ( this.isValidating == true ) {
-                factory.setValidating( true );
-                try {
-                    localParser = factory.newSAXParser();
-                } catch ( final ParserConfigurationException e ) {
-                    throw new RuntimeException( e.getMessage() );
-                }
-
-                try {
-                    localParser.setProperty( XmlPackageReader.JAXP_SCHEMA_LANGUAGE,
-                                             XmlPackageReader.W3C_XML_SCHEMA );
-                } catch ( final SAXNotRecognizedException e ) {
-                    boolean hideWarnings = Boolean.getBoolean( "drools.schema.hidewarnings" );
-                    if ( !hideWarnings ) {
-                        System.err.println( "Your SAX parser is not JAXP 1.2 compliant - turning off validation." );
-                    }
-                    localParser = null;
-                }
-            }
-
-            if ( localParser == null ) {
-                // not jaxp1.2 compliant so turn off validation
-                try {
-                    this.isValidating = false;
-                    factory.setValidating( this.isValidating );
-                    localParser = factory.newSAXParser();
-                } catch ( final ParserConfigurationException e ) {
-                    throw new RuntimeException( e.getMessage() );
-                }
-            }
-        } else {
-            localParser = this.parser;
-        }
-
-        if ( !localParser.isNamespaceAware() ) {
-            throw new RuntimeException( "parser must be namespace-aware" );
-        }
-
-        localParser.parse( in,
-                           this );
-
-        return this.packageDescr;
-    }
-
-    void setPackageDescr(final PackageDescr packageDescr) {
-        this.packageDescr = packageDescr;
-    }
-
-    public PackageDescr getPackageDescr() {
-        return this.packageDescr;
-    }
-
-    /**
-     * @see org.xml.sax.ContentHandler
-     */
-    public void setDocumentLocator(final Locator locator) {
-        this.locator = locator;
-    }
-
-    /**
-     * Get the <code>Locator</code>.
-     *
-     * @return The locator.
-     */
-    public Locator getLocator() {
-        return this.locator;
-    }
-
-    public void startDocument() {
-        this.isValidating = true;
-        this.packageDescr = null;
-        this.current = null;
-        this.peer = null;
-        this.lastWasEndElement = false;
-        this.parents.clear();
-        this.characters = null;
-        this.configurationStack.clear();
-        this.namespaces.clear();
-    }
-
-    /**
-     * @param uri
-     * @param localName
-     * @param qname
-     * @param attrs
-     * @throws SAXException
-     * @see org.xml.sax.ContentHandler
-     *
-     * @todo: better way to manage unhandled elements
-     */
-    public void startElement(final String uri,
-                             final String localName,
-                             final String qname,
-                             final Attributes attrs) throws SAXException {
-        // going down so no peer
-        if ( !this.lastWasEndElement ) {
-            this.peer = null;
-        }
-
-        final Handler handler = getHandler( localName );
-
-        if ( (handler != null) && (!this.parents.isEmpty() && this.parents.getLast() instanceof RuleDescr) ) {
-            this.inHandledRuleSubElement = true;
-        }
-
-        if ( handler == null ) {
-            startConfiguration( localName,
-                                attrs );
-            return;
-        }
-
-        validate( uri,
-                  localName,
-                  handler );
-
-        final Object node = handler.start( uri,
-                                           localName,
-                                           attrs );
-
-        if ( node != null ) {
-            this.parents.add( node );
-            this.current = node;
-        }
-        this.lastWasEndElement = false;
-    }
-
-    /**
-     * @param uri
-     * @param localName
-     * @param qname
-     * @throws SAXException
-     * @see org.xml.sax.ContentHandler
-     */
-
-    public void endElement(final String uri,
-                           final String localName,
-                           final String qname) throws SAXException {
-        final Handler handler = getHandler( localName );
-
-        if ( (handler != null) && (!this.parents.isEmpty() && this.parents.getLast() instanceof RuleDescr) ) {
-            this.inHandledRuleSubElement = false;
-        }
-
-        if ( handler == null ) {
-            if ( this.configurationStack.size() >= 1 ) {
-                endConfiguration();
-            }
-            return;
-        }
-
-        this.current = getParent( handler.generateNodeFor() );
-
-        final Object node = handler.end( uri,
-                                         localName );
-
-        // next
-        if ( node != null && !this.lastWasEndElement ) {
-            this.peer = node;
-        }
-        // up or no children
-        else if ( this.lastWasEndElement || (this.parents.getLast()).getClass().isInstance( this.current ) ) {
-            this.peer = this.parents.removeLast();
-        }
-
-        this.lastWasEndElement = true;
-    }
-
-    private void validate(final String uri,
-                          final String localName,
-                          final Handler handler) throws SAXParseException {
-        boolean validParent = false;
-        boolean validPeer = false;
-        boolean invalidNesting = false;
-
-        final Set validParents = handler.getValidParents();
-        final Set validPeers = handler.getValidPeers();
-        boolean allowNesting = handler.allowNesting();
-
-        // get parent
-        Object parent;
-        if ( this.parents.size() != 0 ) {
-            parent = this.parents.getLast();
-        } else {
-            parent = null;
-        }
-
-        // check valid parents
-        // null parent means localname is rule-set
-        // dont process if elements are the same
-        // instead check for allowed nesting
-        final Class nodeClass = getHandler( localName ).generateNodeFor();
-        if ( !nodeClass.isInstance( parent ) ) {
-            Object allowedParent;
-            final Iterator it = validParents.iterator();
-            while ( !validParent && it.hasNext() ) {
-                allowedParent = it.next();
-                if ( parent == null && allowedParent == null ) {
-                    validParent = true;
-                } else if ( allowedParent != null && ((Class) allowedParent).isInstance( parent ) ) {
-                    validParent = true;
-                }
-            }
-            if ( !validParent ) {
-                throw new SAXParseException( "<" + localName + "> has an invalid parent element [" + parent + "]",
-                                             getLocator() );
-            }
-        }
-
-        // check valid peers
-        // null peer means localname is rule-set
-        final Object peer = this.peer;
-
-        Object allowedPeer;
-        Iterator it = validPeers.iterator();
-        while ( !validPeer && it.hasNext() ) {
-            allowedPeer = it.next();
-            if ( peer == null && allowedPeer == null ) {
-                validPeer = true;
-            } else if ( allowedPeer != null && ((Class) allowedPeer).isInstance( peer ) ) {
-                validPeer = true;
-            }
-        }
-        if ( !validPeer ) {
-            throw new SAXParseException( "<" + localName + "> is after an invalid element: " + Handler.class.getName(),
-                                         getLocator() );
-        }
-
-        if ( !allowNesting ) {
-            it = this.parents.iterator();
-            while ( !invalidNesting && it.hasNext() ) {
-                if ( nodeClass.isInstance( it.next() ) ) {
-                    invalidNesting = true;
-                }
-            }
-        }
-        if ( invalidNesting ) {
-            throw new SAXParseException( "<" + localName + ">  may not be nested",
-                                         getLocator() );
-        }
-
-    }
-
-    /**
-     * Start a configuration node.
-     *
-     * @param name
-     *            Tag name.
-     * @param attrs
-     *            Tag attributes.
-     */
-    protected void startConfiguration(final String name,
-                                      final Attributes attrs) {
-        this.characters = new StringBuffer();
-
-        final DefaultConfiguration config = new DefaultConfiguration( name );
-
-        final int numAttrs = attrs.getLength();
-
-        for ( int i = 0; i < numAttrs; ++i ) {
-            config.setAttribute( attrs.getLocalName( i ),
-                                 attrs.getValue( i ) );
-        }
-
-        // lets add the namespaces as attributes
-        for ( final Iterator iter = this.namespaces.entrySet().iterator(); iter.hasNext(); ) {
-            final Map.Entry entry = (Map.Entry) iter.next();
-            String ns = (String) entry.getKey();
-            final String value = (String) entry.getValue();
-            if ( ns == null || ns.length() == 0 ) {
-                ns = "xmlns";
-            } else {
-                ns = "xmlns:" + ns;
-            }
-            config.setAttribute( ns,
-                                 value );
-        }
-
-        if ( this.configurationStack.isEmpty() ) {
-            this.configurationStack.addLast( config );
-        } else {
-            ((DefaultConfiguration) this.configurationStack.getLast()).addChild( config );
-            this.configurationStack.addLast( config );
-        }
-    }
-
-    Handler getHandler(final String localName) {
-        return (Handler) this.handlers.get( localName );
-    }
-
-    /**
-     * @param chars
-     * @param start
-     * @param len
-     * @see org.xml.sax.ContentHandler
-     */
-    public void characters(final char[] chars,
-                           final int start,
-                           final int len) {
-        if ( this.characters != null ) {
-            this.characters.append( chars,
-                                    start,
-                                    len );
-        }
-    }
-
-    /**
-     * End a configuration node.
-     *
-     * @return The configuration.
-     */
-    protected Configuration endConfiguration() {
-        final DefaultConfiguration config = (DefaultConfiguration) this.configurationStack.removeLast();
-        if ( this.characters != null ) {
-            config.setText( this.characters.toString() );
-        }
-
-        this.characters = null;
-
-        return config;
-    }
-
-    LinkedList getParents() {
-        return this.parents;
-    }
-
-    Object getParent(final Class parent) {
-        final ListIterator it = this.parents.listIterator( this.parents.size() );
-        Object node = null;
-        while ( it.hasPrevious() ) {
-            node = it.previous();
-            if ( parent.isInstance( node ) ) {
-                break;
-            }
-        }
-        return node;
-    }
-
-    Object getPeer() {
-        return this.peer;
-    }
-
-    Object getCurrent() {
-        return this.current;
-    }
-
-    public InputSource resolveEntity(final String publicId,
-                                     final String systemId) throws SAXException {
-        try {
-            final InputSource inputSource = resolveSchema( publicId,
-                                                           systemId );
-            if ( inputSource != null ) {
-                return inputSource;
-            }
-            if ( this.entityResolver != null ) {
-                return this.entityResolver.resolveEntity( publicId,
-                                                          systemId );
-            }
-        } catch ( final IOException ioe ) {
-        }
-        return null;
-    }
-
-    public void startPrefixMapping(final String prefix,
-                                   final String uri) throws SAXException {
-        super.startPrefixMapping( prefix,
-                                  uri );
-        this.namespaces.put( prefix,
-                             uri );
-    }
-
-    public void endPrefixMapping(final String prefix) throws SAXException {
-        super.endPrefixMapping( prefix );
-        this.namespaces.remove( prefix );
-    }
-
-    private void print(final SAXParseException x) {
-        final String msg = this.message.format( new Object[]{x.getSystemId(), new Integer( x.getLineNumber() ), new Integer( x.getColumnNumber() ), x.getMessage()} );
-        System.out.println( msg );
-    }
-
-    public void warning(final SAXParseException x) {
-        print( x );
-    }
-
-    public void error(final SAXParseException x) {
-        print( x );
-    }
-
-    public void fatalError(final SAXParseException x) throws SAXParseException {
-        print( x );
-        throw x;
-    }
-
-    private InputSource resolveSchema(final String publicId,
-                                      final String systemId) throws SAXException,
-                                                            IOException {
-        // Schema files must end with xsd
-        if ( !systemId.toLowerCase().endsWith( "xsd" ) ) {
-            return null;
-        }
-
-        // try the actual location given by systemId
-        try {
-            final URL url = new URL( systemId );
-            return new InputSource( url.openStream() );
-        } catch ( final Exception e ) {
-        }
-
-        // Try and get the index for the filename, else return null
-        String xsd;
-        int index = systemId.lastIndexOf( "/" );
-        if ( index == -1 ) {
-            index = systemId.lastIndexOf( "\\" );
-        }
-        if ( index != -1 ) {
-            xsd = systemId.substring( index + 1 );
-        } else {
-            xsd = systemId;
-        }
-
-        ClassLoader cl = Thread.currentThread().getContextClassLoader();
-
-        if ( cl == null ) {
-            cl = XmlPackageReader.class.getClassLoader();
-        }
-
-        // Try looking in META-INF
-        {
-            final InputStream is = cl.getResourceAsStream( "META-INF/" + xsd );
-            if ( is != null ) {
-                return new InputSource( is );
-            }
-        }
-
-        // Try looking in /META-INF
-        {
-            final InputStream is = cl.getResourceAsStream( "/META-INF/" + xsd );
-            if ( is != null ) {
-                return new InputSource( is );
-            }
-        }
-
-        // Try looking at root of classpath
-        {
-            final InputStream is = cl.getResourceAsStream( "/" + xsd );
-            if ( is != null ) {
-                return new InputSource( is );
-            }
-        }
-
-        // Try current working directory
-        {
-            final File file = new File( xsd );
-            if ( file.exists() ) {
-                return new InputSource( new BufferedInputStream( new FileInputStream( file ) ) );
-            }
-        }
-
-        cl = ClassLoader.getSystemClassLoader();
-
-        // Try looking in META-INF
-        {
-            final InputStream is = cl.getResourceAsStream( "META-INF/" + xsd );
-            if ( is != null ) {
-                return new InputSource( is );
-            }
-        }
-
-        // Try looking in /META-INF
-        {
-            final InputStream is = cl.getResourceAsStream( "/META-INF/" + xsd );
-            if ( is != null ) {
-                return new InputSource( is );
-            }
-        }
-
-        // Try looking at root of classpath
-        {
-            final InputStream is = cl.getResourceAsStream( "/" + xsd );
-            if ( is != null ) {
-                return new InputSource( is );
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Intializes EntityResolver that is configured via system property ENTITY_RESOLVER_PROPERTY_NAME.
-     */
-    private void initEntityResolver() {
-        final String entityResolveClazzName = System.getProperty( XmlPackageReader.ENTITY_RESOLVER_PROPERTY_NAME );
-        if ( entityResolveClazzName != null && entityResolveClazzName.length() > 0 ) {
-            try {
-                final Class entityResolverClazz = Thread.currentThread().getContextClassLoader().loadClass( entityResolveClazzName );
-                this.entityResolver = (EntityResolver) entityResolverClazz.newInstance();
-            } catch ( final Exception ignoreIt ) {
-            }
-        }
-    }
-
-}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlProcessReader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlProcessReader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlProcessReader.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,108 @@
+package org.drools.xml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.Set;
+
+import javax.xml.parsers.SAXParser;
+
+import org.drools.lang.descr.PackageDescr;
+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;
+import org.drools.ruleflow.common.core.Process;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+
+public class XmlProcessReader {
+    private ExtensibleXmlParser parser;
+
+    private Process        process;
+
+    public XmlProcessReader() {
+        this( null );
+    }
+
+    public XmlProcessReader(final SAXParser parser) {
+        if ( parser == null ) {
+            this.parser = new ExtensibleXmlParser();
+        } else {
+            this.parser = new ExtensibleXmlParser( parser );
+        }      
+        this.parser.setSemanticModules( new SemanticModules() );
+        this.parser.setData( new ProcessBuildData() );
+    }
+
+    /**
+     * Read a <code>RuleSet</code> from a <code>Reader</code>.
+     *
+     * @param reader
+     *            The reader containing the rule-set.
+     *
+     * @return The rule-set.
+     */
+    public Process read(final Reader reader) throws SAXException,
+                                                 IOException {
+        this.process = ((ProcessBuildData) this.parser.read( reader )).getProcess();
+        return this.process;
+    }
+
+    /**
+     * Read a <code>RuleSet</code> from an <code>InputStream</code>.
+     *
+     * @param inputStream
+     *            The input-stream containing the rule-set.
+     *
+     * @return The rule-set.
+     */
+    public Process read(final InputStream inputStream) throws SAXException,
+                                                           IOException {
+        this.process = ((ProcessBuildData) this.parser.read( inputStream )).getProcess();
+        return this.process;
+    }
+
+    /**
+     * Read a <code>RuleSet</code> from an <code>InputSource</code>.
+     *
+     * @param in
+     *            The rule-set input-source.
+     *
+     * @return The rule-set.
+     */
+    public Process read(final InputSource in) throws SAXException,
+                                                  IOException {
+        this.process = ((ProcessBuildData)this.parser.read( in )).getProcess();
+        return this.process;
+    }
+
+    void setProcess(final Process packageDescr) {
+        this.process = process;
+    }
+
+    public Process getProcess() {
+        return this.process;
+    }
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ActionNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ActionNodeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ActionNodeHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,93 @@
+package org.drools.xml.processes;
+
+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 ActionNodeHandler extends BaseAbstractHandler
+    implements
+    Handler {
+    public ActionNodeHandler() {
+        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();
+        if ( text == null ) {
+            throw new SAXParseException( "<action-node> requires content",
+                                         xmlPackageReader.getLocator() );
+        }
+        
+        final String dialect = config.getAttribute( "dialect" );     
+        emptyAttributeCheck( localName, "dialect", dialect, xmlPackageReader );
+        
+        DroolsConsequenceAction actionText = new DroolsConsequenceAction( dialect, text);
+        
+        actionNode.setAction( actionText );
+        
+        return actionNode;
+    }
+
+    public Class generateNodeFor() {
+        return ActionNode.class;
+    }    
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ConnectionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ConnectionHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ConnectionHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,87 @@
+package org.drools.xml.processes;
+
+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.Connection;
+import org.drools.ruleflow.core.EndNode;
+import org.drools.ruleflow.core.Node;
+import org.drools.ruleflow.core.StartNode;
+import org.drools.ruleflow.core.impl.ConnectionImpl;
+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 ConnectionHandler extends BaseAbstractHandler
+    implements
+    Handler {
+    public ConnectionHandler() {
+        if ( (this.validParents == null) && (this.validPeers == null) ) {
+            this.validParents = new HashSet();
+            this.validParents.add( Process.class );
+
+            this.validPeers = new HashSet();
+            this.validPeers.add( null );
+            this.validPeers.add( Connection.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 );     
+        
+        String fromName = attrs.getValue( "from" );
+        String toName = attrs.getValue( "to" );
+        emptyAttributeCheck( localName, "from", fromName, xmlPackageReader );
+        emptyAttributeCheck( localName, "to", toName, xmlPackageReader );
+        
+        ProcessBuildData buildData = (ProcessBuildData)xmlPackageReader.getData();
+        Node fromNode = buildData.getNode( fromName );
+        Node toNode = buildData.getNode( toName );
+        
+        if ( fromNode == null ) {
+                throw new SAXParseException( "from Node connection name '" + fromName + "' cannot be found",
+                                             xmlPackageReader.getLocator() );
+        }
+        if ( toNode == null ) {
+            throw new SAXParseException( "from Node connection name '" + toName + "' cannot be found",
+                                         xmlPackageReader.getLocator() );
+    }        
+        
+        ConnectionImpl connection = new ConnectionImpl(fromNode, toNode, Connection.TYPE_NORMAL);
+        
+        return connection;
+    }    
+    
+    public Object end(final String uri,
+                      final String localName,
+                      final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        final Configuration config = xmlPackageReader.endConfiguration();
+        return xmlPackageReader.getCurrent();
+    }
+
+    public Class generateNodeFor() {
+        return Connection.class;
+    }    
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/EndNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/EndNodeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/EndNodeHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,77 @@
+package org.drools.xml.processes;
+
+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.EndNode;
+import org.drools.ruleflow.core.StartNode;
+import org.drools.ruleflow.core.impl.EndNodeImpl;
+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 EndNodeHandler extends BaseAbstractHandler
+    implements
+    Handler {
+    public EndNodeHandler() {
+        if ( (this.validParents == null) && (this.validPeers == null) ) {
+            this.validParents = new HashSet();
+            this.validParents.add( Process.class );
+
+            this.validPeers = new HashSet();
+
+            this.validPeers.add( ActionNode.class );
+            this.validPeers.add( StartNode.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();
+        
+        final EndNode endNode = new EndNodeImpl();
+        
+        final String name = attrs.getValue( "name" );        
+        emptyAttributeCheck( localName, "name", name, xmlPackageReader );
+        endNode.setName( name );
+        
+        process.addNode( endNode );        
+        ((ProcessBuildData)xmlPackageReader.getData()).addNode( endNode );
+        
+        return endNode;
+    }    
+    
+    public Object end(final String uri,
+                      final String localName,
+                      final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        final Configuration config = xmlPackageReader.endConfiguration();
+        return xmlPackageReader.getCurrent();
+    }
+
+    public Class generateNodeFor() {
+        return EndNode.class;
+    }    
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/GlobalHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/GlobalHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/GlobalHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,82 @@
+package org.drools.xml.processes;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+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 GlobalHandler extends BaseAbstractHandler
+    implements
+    Handler {
+    public GlobalHandler() {
+        if ( (this.validParents == null) && (this.validPeers == null) ) {
+            this.validParents = new HashSet();
+            this.validParents.add( Process.class );
+
+            this.validPeers = new HashSet();         
+            this.validPeers.add( null );            
+            //this.validPeers.add( ImportDescr.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();        
+        
+        final String identifier = attrs.getValue( "identifier" );
+        final String type = attrs.getValue( "type" );
+        
+        emptyAttributeCheck( localName, "identifier", identifier, xmlPackageReader );
+        emptyAttributeCheck( localName, "type", type, xmlPackageReader );
+        
+        Map<String, String> map = process.getGlobals();
+        if ( map == null ) {
+            map = new HashMap<String, String>();
+            process.setGlobals( map );
+        }
+        map.put( identifier, type );
+        
+        return null;
+    }    
+    
+    public Object end(final String uri,
+                      final String localName,
+                      final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        final Configuration config = xmlPackageReader.endConfiguration();
+        return null;
+    }
+
+    public Class generateNodeFor() {
+        return null;
+    }    
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ImportHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ImportHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ImportHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,78 @@
+package org.drools.xml.processes;
+
+import java.util.ArrayList;
+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 ImportHandler extends BaseAbstractHandler
+    implements
+    Handler {
+    public ImportHandler() {
+        if ( (this.validParents == null) && (this.validPeers == null) ) {
+            this.validParents = new HashSet();
+            this.validParents.add( Process.class );
+
+            this.validPeers = new HashSet();         
+            this.validPeers.add( null );            
+            //this.validPeers.add( ImportDescr.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();        
+        
+        final String name = attrs.getValue( "name" );        
+        emptyAttributeCheck( localName, "name", name, xmlPackageReader );       
+        
+        java.util.List<String> list =process.getImports();
+        if ( list == null ) {
+            list = new ArrayList<String>();
+            process.setImports( list );
+        }
+        list.add( name );
+        
+        return null;
+    }    
+    
+    public Object end(final String uri,
+                      final String localName,
+                      final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        final Configuration config = xmlPackageReader.endConfiguration();
+        return null;
+    }
+
+    public Class generateNodeFor() {
+        return null;
+    }    
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ProcessHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ProcessHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ProcessHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,78 @@
+package org.drools.xml.processes;
+
+import java.util.HashSet;
+
+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.impl.RuleFlowProcessImpl;
+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 ProcessHandler extends BaseAbstractHandler
+    implements
+    Handler {
+    public ProcessHandler() {
+        if ( (this.validParents == null) && (this.validPeers == null) ) {
+            this.validParents = new HashSet();
+            this.validParents.add( null );
+
+            this.validPeers = new HashSet();
+            this.validPeers.add( null );
+
+            this.allowNesting = false;
+        }
+    }
+    
+
+    
+    public Object start(final String uri,
+                        final String localName,
+                        final Attributes attrs,
+                        final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        xmlPackageReader.startConfiguration( localName,
+                                                  attrs );
+        
+        final String id = attrs.getValue( "id" );
+        final String name = attrs.getValue( "name" );
+        final String version = attrs.getValue( "version" );
+        final String type = attrs.getValue( "type" );
+        final String packageName = attrs.getValue( "package-name" );
+        
+        emptyAttributeCheck( localName, "id", name, xmlPackageReader );
+        emptyAttributeCheck( localName, "name", name, xmlPackageReader );
+        //emptyAttributeCheck( localName, "version", version, xmlPackageReader );
+        emptyAttributeCheck( localName, "package-name", packageName, xmlPackageReader );
+        
+
+        RuleFlowProcessImpl process = new RuleFlowProcessImpl();
+        process.setId( id );
+        process.setName( name );
+        process.setVersion( version );
+        process.setType( type );
+        process.setPackageName( packageName );
+
+        ((ProcessBuildData)xmlPackageReader.getData()).setProcess( process );
+        
+        return process;
+    }    
+    
+    public Object end(final String uri,
+                      final String localName,
+                      final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        final Configuration config = xmlPackageReader.endConfiguration();        
+        return xmlPackageReader.getCurrent();
+    }
+
+    public Class generateNodeFor() {
+        return org.drools.ruleflow.common.core.Process.class;
+    }    
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/StartNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/StartNodeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/StartNodeHandler.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,74 @@
+package org.drools.xml.processes;
+
+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.EndNode;
+import org.drools.ruleflow.core.StartNode;
+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 StartNodeHandler extends BaseAbstractHandler
+    implements
+    Handler {
+    public StartNodeHandler() {
+        if ( (this.validParents == null) && (this.validPeers == null) ) {
+            this.validParents = new HashSet();
+            this.validParents.add( Process.class );
+
+            this.validPeers = new HashSet();
+            this.validPeers.add( null );
+
+            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();
+        
+        final StartNode startNode = new StartNodeImpl();
+
+        final String name = attrs.getValue( "name" );        
+        emptyAttributeCheck( localName, "name", name, xmlPackageReader );        
+        startNode.setName( name );
+        
+        process.addNode( startNode );        
+        ((ProcessBuildData)xmlPackageReader.getData()).addNode( startNode );
+        
+        return startNode;
+    }    
+    
+    public Object end(final String uri,
+                      final String localName,
+                      final ExtensibleXmlParser xmlPackageReader) throws SAXException {
+        final Configuration config = xmlPackageReader.endConfiguration();
+        return xmlPackageReader.getCurrent();
+    }
+
+    public Class generateNodeFor() {
+        return StartNode.class;
+    }    
+
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -18,6 +18,7 @@
 import org.drools.lang.descr.FunctionImportDescr;
 import org.drools.lang.descr.ImportDescr;
 import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.ProcessDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Package;
 import org.drools.rule.Pattern;
@@ -423,6 +424,11 @@
             // TODO Auto-generated method stub
             return null;
         }
+
+        public void init(ProcessDescr processDescr) {
+            // TODO Auto-generated method stub
+            
+        }
     }
 
     public static class MockEvalBuilder

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,90 +0,0 @@
-package org.drools.xml;
-
-import junit.framework.TestCase;
-
-/**
- * Test the dump/convert format utilities.
- * 
- * @author Michael Neale
- * @author Fernando Meyer
- */
-
-public class DumperTest extends TestCase {
-
-    // Xml Dumper test
-    
-    public void testRoundTripAccumulateXml() throws Exception {
-        DumperTestHelper.XmlFile( "test_ParseAccumulate.xml" );
-    }
-
-    public void testRoundTripCollectXml() throws Exception {
-        DumperTestHelper.XmlFile( "test_ParseCollect.xml" );
-    }
-    
-    public void testRoundTripExistsXml() throws Exception {
-        DumperTestHelper.XmlFile( "test_ParseExists.xml" );
-    }
-
-    public void testRoundTripForallXml() throws Exception {
-        DumperTestHelper.XmlFile( "test_ParseForall.xml" );
-    }
-
-    public void testRoundTripFromXml() throws Exception {
-        DumperTestHelper.XmlFile( "test_ParseFrom.xml" );
-    }
-
-    public void testRoundTripComplexRuleXml() throws Exception {
-        DumperTestHelper.XmlFile( "test_RoundTrip.xml" );
-    }
-    
-    // Drl Dumper test
-
-    public void testRoundTripComplexRuleDrl() throws Exception {
-        DumperTestHelper.DrlFile( "test_RoundTrip.drl" );
-    }
-    
-    public void testRoundTripCollectDrl() throws Exception {
-        DumperTestHelper.DrlFile( "../integrationtests/test_Collect.drl" );
-    }
-    
-    public void testRoundTripAccumulateDrl() throws Exception {
-        DumperTestHelper.DrlFile( "test_accumulateall.drl" );
-    }
-    
-    public void testRoundTripExistsDrl() throws Exception {
-        DumperTestHelper.DrlFile( "../integrationtests/test_exists.drl" );
-    }
-
-    public void testRoundTripForallDrl() throws Exception {
-        DumperTestHelper.DrlFile( "../integrationtests/test_Forall.drl" );
-    }
-
-    public void testRoundTripFromDrl() throws Exception {
-        DumperTestHelper.DrlFile( "test_from.drl" );
-    }
-
-    public void testRoundTripSimpleRuleDrl() throws Exception {
-        DumperTestHelper.DrlFile( "test_simplerule.drl" );
-    }
-
-    public void testRoundTripPComplexDrl() throws Exception {
-        DumperTestHelper.DrlFile( "test_complex.drl" );
-    }
-    
-    public void testRoundTripPComplexXml() throws Exception {
-        DumperTestHelper.XmlFile( "test_ParseComplex.xml" );
-    }
-    
-    public static void testStaticMethod1() {
-        System.out.println( "testStaticMethod1" ) ;
-    }
-    
-    public static void testStaticMethod2() {
-        System.out.println( "testStaticMethod2" ) ;
-    }
-    
-    public static void testStaticMethod3() {
-        System.out.println( "testStaticMethod3" ) ;
-    }    
-    
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,75 +0,0 @@
-/**
- * 
- */
-package org.drools.xml;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-
-import junit.framework.Assert;
-
-import org.drools.compiler.DrlParser;
-import org.drools.lang.DrlDumper;
-import org.drools.lang.descr.PackageDescr;
-
-/**
- * Helper Class for both xml and drl Dump Tests
- * 
- * @author fernandomeyer
- */
-public class DumperTestHelper extends Assert {
-    
-    public static void XmlFile(String filename) throws Exception {
-
-        XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( DumperTestHelper.class.getResourceAsStream( filename ) ) );
-        final PackageDescr pkgOriginal = xmlPackageReader.getPackageDescr();
-
-        final XmlDumper dumper = new XmlDumper();
-        final String result = dumper.dump( pkgOriginal );
-        
-        String buffer = readFile( filename );
-        
-        assertEqualsIgnoreWhitespace( buffer,
-                                      result );
-        assertNotNull( result );
-    }
-
-    public static void DrlFile(String filename) throws Exception {
-
-        DrlParser parser = new DrlParser();
-        final PackageDescr pkgOriginal = parser.parse( new InputStreamReader( DumperTestHelper.class.getResourceAsStream( filename ) ) );
-        final DrlDumper dumper = new DrlDumper();
-        String result = dumper.dump( pkgOriginal );
-
-        parser = new DrlParser();
-        String buffer = readFile( filename );
-        assertEqualsIgnoreWhitespace( buffer.toString(),
-                                      result );                 
-    }
-
-    private static void assertEqualsIgnoreWhitespace(final String expected,
-                                              final String actual) {
-        final String cleanExpected = expected.replaceAll( "\\s+",
-                                                          "" );
-        final String cleanActual = actual.replaceAll( "\\s+",
-                                                      "" );
-        assertEquals( cleanExpected,
-                      cleanActual );
-    }
-
-    private static String readFile(final String file) throws IOException {
-        final InputStreamReader reader = new InputStreamReader( DumperTestHelper.class.getResourceAsStream( file ) );
-        final StringBuffer text = new StringBuffer();
-        final char[] buf = new char[1024];
-        int len = 0;
-
-        while ( (len = reader.read( buf )) >= 0 ) {
-            text.append( buf,
-                         0,
-                         len );
-        }
-        return text.toString();
-    }
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,677 +0,0 @@
-package org.drools.xml;
-
-import java.io.InputStreamReader;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.drools.RuleBase;
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.lang.descr.AccessorDescr;
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.AttributeDescr;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.lang.descr.CollectDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.FieldBindingDescr;
-import org.drools.lang.descr.FieldConstraintDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.FromDescr;
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.FunctionImportDescr;
-import org.drools.lang.descr.GlobalDescr;
-import org.drools.lang.descr.ImportDescr;
-import org.drools.lang.descr.LiteralRestrictionDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.drools.lang.descr.PredicateDescr;
-import org.drools.lang.descr.QueryDescr;
-import org.drools.lang.descr.ReturnValueRestrictionDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.drools.lang.descr.VariableRestrictionDescr;
-
-public class XmlPackageReaderTest extends TestCase {
-
-    protected RuleBase getRuleBase() throws Exception {
-
-        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
-                                            null );
-    }
-
-    protected RuleBase getRuleBase(final RuleBaseConfiguration config) throws Exception {
-
-        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
-                                            config );
-    }
-
-    public void testParseFrom() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFrom.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
-        PatternDescr patterndescr = (PatternDescr) obj.getLhs().getDescrs().get( 0 );
-        
-        FromDescr from = (FromDescr) patterndescr.getSource();
-        
-        AccessorDescr accessordescriptor =  (AccessorDescr) from.getDataSource();
-        assertEquals( accessordescriptor.getVariableName(), "cheesery" );
-
-        assertEquals( patterndescr.getObjectType(), "Cheese" );
-        assertEquals( patterndescr.getIdentifier(), "cheese" );
-        
-    }
-
-    public void testAccumulate() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseAccumulate.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
-
-        Object patternobj = obj.getLhs().getDescrs().get( 0 );
-        assertTrue( patternobj instanceof PatternDescr );
-        final PatternDescr patterncheese = (PatternDescr) patternobj;
-        assertEquals( patterncheese.getIdentifier(), "cheese" );
-        assertEquals( patterncheese.getObjectType(), "Cheese" );
-        
-        AccumulateDescr accumulatedescr = (AccumulateDescr) patterncheese.getSource();
-        assertEquals( "total += $cheese.getPrice();",
-                      accumulatedescr.getActionCode() );
-        assertEquals( "int total = 0;",
-                      accumulatedescr.getInitCode() );
-        assertEquals( "new Integer( total ) );",
-                      accumulatedescr.getResultCode() );
-
-        patternobj = obj.getLhs().getDescrs().get( 1 );
-        assertTrue( patternobj instanceof PatternDescr );
-        
-        final PatternDescr patternmax = (PatternDescr) patternobj;
-        assertEquals( patternmax.getIdentifier(), "max" );
-        assertEquals( patternmax.getObjectType(), "Number" );
-        
-        accumulatedescr = (AccumulateDescr) patternmax.getSource();
-        
-        assertTrue( accumulatedescr.isExternalFunction() );
-        
-        assertEquals( "max",
-                      accumulatedescr.getFunctionIdentifier() );
-        
-        assertNull( accumulatedescr.getInitCode() );
-        assertNull( accumulatedescr.getActionCode() );
-        assertNull( accumulatedescr.getResultCode() );
-        assertNull( accumulatedescr.getReverseCode());
-        
-    }
-    
-    
-    public void testAccumulateMultiPattern() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseAccumulate.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 1 );
-
-        Object patternobj = obj.getLhs().getDescrs().get( 0 );
-        assertTrue( patternobj instanceof PatternDescr );
-        final PatternDescr patterncheese = (PatternDescr) patternobj;
-        assertEquals( patterncheese.getIdentifier(), "cheese" );
-        assertEquals( patterncheese.getObjectType(), "Cheese" );
-        
-        AccumulateDescr accumulatedescr = (AccumulateDescr) patterncheese.getSource();
-        assertEquals( "total += $cheese.getPrice();",
-                      accumulatedescr.getActionCode() );
-        assertEquals( "int total = 0;",
-                      accumulatedescr.getInitCode() );
-        assertEquals( "new Integer( total ) );",
-                      accumulatedescr.getResultCode() );
-        
-        AndDescr anddescr = (AndDescr) accumulatedescr.getInput();
-        
-        List descrlist = anddescr.getDescrs(); 
-        
-        PatternDescr[] listpattern = (PatternDescr[]) descrlist.toArray(new PatternDescr[descrlist.size()]);
-        
-        assertEquals(listpattern[0].getObjectType(), "Milk");
-        assertEquals(listpattern[1].getObjectType(), "Cup");
-    }
-    
-    public void testParseForall() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-
-        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
-        ForallDescr forall = (ForallDescr) obj.getLhs().getDescrs().get( 0 );
-        List forallPaterns = forall.getDescrs();
-
-        PatternDescr pattarnState = (PatternDescr) forallPaterns.get( 0 );
-        PatternDescr personState = (PatternDescr) forallPaterns.get( 1 );
-        PatternDescr cheeseState = (PatternDescr) forallPaterns.get( 2 );
-
-        assertEquals( pattarnState.getObjectType(),
-                      "State" );
-        assertEquals( personState.getObjectType(),
-                      "Person" );
-        assertEquals( cheeseState.getObjectType(),
-                      "Cheese" );
-    }
-
-    public void testParseExists() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseExists.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-
-        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
-        Object existdescr = obj.getLhs().getDescrs().get( 0 );
-        assertTrue( existdescr instanceof ExistsDescr );
-
-        Object patternDescriptor = ((ExistsDescr) existdescr).getDescrs().get( 0 );
-        assertTrue( patternDescriptor instanceof PatternDescr );
-        assertEquals( ((PatternDescr) patternDescriptor).getObjectType(),
-                      "Person" );
-
-        Object notDescr = obj.getLhs().getDescrs().get( 1 );
-
-        assertEquals( notDescr.getClass().getName(),
-                      NotDescr.class.getName() );
-        existdescr = ((NotDescr) notDescr).getDescrs().get( 0 );
-        patternDescriptor = ((ExistsDescr) existdescr).getDescrs().get( 0 );
-        assertTrue( patternDescriptor instanceof PatternDescr );
-        assertEquals( ((PatternDescr) patternDescriptor).getObjectType(),
-                      "Cheese" );
-    }
-
-    public void testParseCollect() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseCollect.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-
-        assertNotNull( packageDescr );
-
-        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
-        Object objectpattern = obj.getLhs().getDescrs().get( 0 );
-        assertTrue( objectpattern instanceof PatternDescr );
-
-        PatternDescr patterndescr = (PatternDescr) objectpattern;
-        
-        assertEquals( patterndescr.getObjectType(),
-                                    "Cheese" );
-        
-        Object collectobj = patterndescr.getSource();
-        
-        assertTrue( collectobj instanceof CollectDescr );
-        
-        CollectDescr collectDescr = (CollectDescr) collectobj;
-        
-        PatternDescr inputpattern =  collectDescr.getInputPattern();
-        
-        assertEquals( inputpattern.getObjectType(),
-                    "Person" );
-        Object fieldContraintObject = inputpattern.getConstraint().getDescrs().get( 0 );
-        assertTrue( fieldContraintObject instanceof FieldConstraintDescr );
-        FieldConstraintDescr fieldconstraintdescr = (FieldConstraintDescr) fieldContraintObject;
-        assertEquals( fieldconstraintdescr.getFieldName(),
-                      "hair" );
-        Object literal1 = fieldconstraintdescr.getRestrictions().get( 0 );
-        assertTrue( literal1 instanceof LiteralRestrictionDescr );
-        LiteralRestrictionDescr literalDesc = (LiteralRestrictionDescr) literal1;
-        assertEquals( literalDesc.getEvaluator(),
-                      "==" );
-        assertEquals( literalDesc.getText(),
-                      "pink" );
-
-        fieldContraintObject = patterndescr.getConstraint().getDescrs().get( 0 );
-        assertTrue( fieldContraintObject instanceof FieldConstraintDescr );
-        fieldconstraintdescr = (FieldConstraintDescr) fieldContraintObject;
-        assertEquals( fieldconstraintdescr.getFieldName(),
-                      "type" );
-        literal1 = fieldconstraintdescr.getRestrictions().get( 0 );
-        assertTrue( literal1 instanceof LiteralRestrictionDescr );
-        literalDesc = (LiteralRestrictionDescr) literal1;
-        assertEquals( literalDesc.getEvaluator(),
-                      "==" );
-        assertEquals( literalDesc.getText(),
-                      "1" );
-        
-    }
-
-    public void testParsePackageName() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParsePackageName.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-    }
-
-    public void testParseImport() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseImport.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-
-        final List imports = packageDescr.getImports();
-        assertEquals( 2,
-                      imports.size() );
-        assertEquals( "java.util.HashMap",
-                      ((ImportDescr) imports.get( 0 )).getTarget() );
-        assertEquals( "org.drools.*",
-                      ((ImportDescr) imports.get( 1 )).getTarget() );
-        
-        final List functionImport = packageDescr.getFunctionImports();
-        
-        assertEquals("org.drools.function", 
-                     ((FunctionImportDescr) functionImport.get( 0 )).getTarget() );
-    }
-
-    public void testParseGlobal() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseGlobal.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-
-        final List imports = packageDescr.getImports();
-        assertEquals( 2,
-                      imports.size() );
-        assertEquals( "java.util.HashMap",
-                      ((ImportDescr) imports.get( 0 )).getTarget() );
-        assertEquals( "org.drools.*",
-                      ((ImportDescr) imports.get( 1 )).getTarget() );
-
-        final List globals = packageDescr.getGlobals();
-        assertEquals( 2,
-                      globals.size() );
-        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
-        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
-        assertEquals( "com.sample.X",
-                      x.getType() );
-        assertEquals( "x",
-                      x.getIdentifier() );
-        assertEquals( "com.sample.Yada",
-                      yada.getType() );
-        assertEquals( "yada",
-                      yada.getIdentifier() );
-    }
-
-    public void testParseFunction() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFunction.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-
-        final List imports = packageDescr.getImports();
-        assertEquals( 2,
-                      imports.size() );
-        assertEquals( "java.util.HashMap",
-                      ((ImportDescr) imports.get( 0 )).getTarget() );
-        assertEquals( "org.drools.*",
-                      ((ImportDescr) imports.get( 1 )).getTarget() );
-
-        final List globals = packageDescr.getGlobals();
-        assertEquals( 2,
-                      globals.size() );
-        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
-        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
-        assertEquals( "com.sample.X",
-                      x.getType() );
-        assertEquals( "x",
-                      x.getIdentifier() );
-        assertEquals( "com.sample.Yada",
-                      yada.getType() );
-        assertEquals( "yada",
-                      yada.getIdentifier() );
-
-        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
-        final List names = functionDescr.getParameterNames();
-        assertEquals( "foo",
-                      names.get( 0 ) );
-        assertEquals( "bada",
-                      names.get( 1 ) );
-
-        final List types = functionDescr.getParameterTypes();
-        assertEquals( "Bar",
-                      types.get( 0 ) );
-        assertEquals( "Bing",
-                      types.get( 1 ) );
-
-        assertEquals( "System.out.println(\"hello world\");",
-                      functionDescr.getText().trim() );
-    }
-
-    public void testParseRule() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRule.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-
-        final List imports = packageDescr.getImports();
-        assertEquals( 2,
-                      imports.size() );
-        assertEquals( "java.util.HashMap",
-                      ((ImportDescr) imports.get( 0 )).getTarget() );
-        assertEquals( "org.drools.*",
-                      ((ImportDescr) imports.get( 1 )).getTarget() );
-
-        final List globals = packageDescr.getGlobals();
-        assertEquals( 2,
-                      globals.size() );
-        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
-        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
-        assertEquals( "com.sample.X",
-                      x.getType() );
-        assertEquals( "x",
-                      x.getIdentifier() );
-        assertEquals( "com.sample.Yada",
-                      yada.getType() );
-        assertEquals( "yada",
-                      yada.getIdentifier() );
-
-        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
-        final List names = functionDescr.getParameterNames();
-        assertEquals( "foo",
-                      names.get( 0 ) );
-        assertEquals( "bada",
-                      names.get( 1 ) );
-
-        final List types = functionDescr.getParameterTypes();
-        assertEquals( "Bar",
-                      types.get( 0 ) );
-        assertEquals( "Bing",
-                      types.get( 1 ) );
-
-        assertEquals( "System.out.println(\"hello world\");",
-                      functionDescr.getText().trim() );
-
-        final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
-        assertEquals( "simple_rule",
-                      ruleDescr.getName() );
-
-        assertEquals( 4,
-                      ruleDescr.getAttributes().size() );
-        final AttributeDescr attributeDescr = (AttributeDescr) ruleDescr.getAttributes().get( 0 );
-        assertEquals( "salience",
-                      attributeDescr.getName() );
-        assertEquals( "10",
-                      attributeDescr.getValue() );
-
-        final AndDescr lhs = ruleDescr.getLhs();
-        assertEquals( 7,
-                      lhs.getDescrs().size() );
-        final PatternDescr patternDescr = (PatternDescr) lhs.getDescrs().get( 0 );
-        assertEquals( "Bar",
-                      patternDescr.getObjectType() );
-
-        final String consequence = (String) ruleDescr.getConsequence();
-        assertNotNull( consequence );
-    }
-
-    public void testParseLhs() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseLhs.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-
-        final List imports = packageDescr.getImports();
-        assertEquals( 2,
-                      imports.size() );
-        assertEquals( "java.util.HashMap",
-                      ((ImportDescr) imports.get( 0 )).getTarget() );
-        assertEquals( "org.drools.*",
-                      ((ImportDescr) imports.get( 1 )).getTarget() );
-
-        final List globals = packageDescr.getGlobals();
-        assertEquals( 2,
-                      globals.size() );
-        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
-        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
-        assertEquals( "com.sample.X",
-                      x.getType() );
-        assertEquals( "x",
-                      x.getIdentifier() );
-        assertEquals( "com.sample.Yada",
-                      yada.getType() );
-        assertEquals( "yada",
-                      yada.getIdentifier() );
-
-        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
-        final List names = functionDescr.getParameterNames();
-        assertEquals( "foo",
-                      names.get( 0 ) );
-        assertEquals( "bada",
-                      names.get( 1 ) );
-
-        final List types = functionDescr.getParameterTypes();
-        assertEquals( "Bar",
-                      types.get( 0 ) );
-        assertEquals( "Bing",
-                      types.get( 1 ) );
-
-        assertEquals( "System.out.println(\"hello world\");",
-                      functionDescr.getText().trim() );
-
-        final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
-        assertEquals( "my rule",
-                      ruleDescr.getName() );
-
-        final AndDescr lhsDescr = ruleDescr.getLhs();
-
-        AndDescr andDescr = (AndDescr) lhsDescr.getDescrs().get( 0 );
-        OrDescr orDescr = (OrDescr) lhsDescr.getDescrs().get( 1 );
-        final PatternDescr pattern1 = (PatternDescr) lhsDescr.getDescrs().get( 2 );
-        assertNull( pattern1.getIdentifier() );
-        assertEquals( "Foo",
-                      pattern1.getObjectType() );
-
-        final PatternDescr pattern2 = (PatternDescr) lhsDescr.getDescrs().get( 3 );
-        assertEquals( "Bar",
-                      pattern2.getObjectType() );
-        assertEquals( "bar",
-                      pattern2.getIdentifier() );
-
-        final PatternDescr pattern3 = (PatternDescr) lhsDescr.getDescrs().get( 4 );
-        //final LiteralDescr literalDescr = (LiteralDescr) pattern3.getDescrs().get( 0 );
-        final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) pattern3.getDescrs().get( 0 );
-        final LiteralRestrictionDescr literalDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
-        assertEquals( "field1",
-                      fieldConstraintDescr.getFieldName() );
-        assertEquals( "==",
-                      literalDescr.getEvaluator() );
-        assertEquals( "value1",
-                      literalDescr.getText() );
-
-        final ReturnValueRestrictionDescr returnValueDescr = (ReturnValueRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 1 );
-        assertEquals( "==",
-                      returnValueDescr.getEvaluator() );
-        assertEquals( "1==1",
-                      returnValueDescr.getContent() );
-
-        final VariableRestrictionDescr variableDescr = (VariableRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 2 );
-        assertEquals( "==",
-                      variableDescr.getEvaluator() );
-        assertEquals( "var1",
-                      variableDescr.getIdentifier() );
-
-        final PredicateDescr predicateDescr = (PredicateDescr) pattern3.getDescrs().get( 1 );
-        assertEquals( "1==1",
-                      predicateDescr.getContent() );
-
-        final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) pattern3.getDescrs().get( 2 );
-        assertEquals( "field1",
-                      fieldBindingDescr.getFieldName() );
-        assertEquals( "var1",
-                      fieldBindingDescr.getIdentifier() );
-
-        final NotDescr notDescr = (NotDescr) lhsDescr.getDescrs().get( 5 );
-        assertEquals( 1,
-                      notDescr.getDescrs().size() );
-        PatternDescr patternDescr = (PatternDescr) notDescr.getDescrs().get( 0 );
-        assertEquals( "Bar",
-                      patternDescr.getObjectType() );
-
-        final ExistsDescr existsDescr = (ExistsDescr) lhsDescr.getDescrs().get( 6 );
-        assertEquals( 1,
-                      existsDescr.getDescrs().size() );
-        patternDescr = (PatternDescr) existsDescr.getDescrs().get( 0 );
-        assertEquals( "Bar",
-                      patternDescr.getObjectType() );
-
-        andDescr = (AndDescr) lhsDescr.getDescrs().get( 7 );
-        assertEquals( 2,
-                      andDescr.getDescrs().size() );
-        orDescr = (OrDescr) andDescr.getDescrs().get( 1 );
-        patternDescr = (PatternDescr) orDescr.getDescrs().get( 0 );
-        assertEquals( "Bar",
-                      patternDescr.getObjectType() );
-        patternDescr = (PatternDescr) andDescr.getDescrs().get( 0 );
-        assertEquals( "Yada",
-                      patternDescr.getObjectType() );
-
-        orDescr = (OrDescr) lhsDescr.getDescrs().get( 8 );
-        assertEquals( 2,
-                      orDescr.getDescrs().size() );
-        andDescr = (AndDescr) orDescr.getDescrs().get( 1 );
-        patternDescr = (PatternDescr) andDescr.getDescrs().get( 0 );
-        assertEquals( "Foo",
-                      patternDescr.getObjectType() );
-        patternDescr = (PatternDescr) orDescr.getDescrs().get( 0 );
-        assertEquals( "Zaa",
-                      patternDescr.getObjectType() );
-
-        final EvalDescr evalDescr = (EvalDescr) lhsDescr.getDescrs().get( 9 );
-        assertEquals( "1==1",
-                      evalDescr.getContent() );
-    }
-
-    public void testParseRhs() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRhs.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-
-        final List imports = packageDescr.getImports();
-        assertEquals( 2,
-                      imports.size() );
-        assertEquals( "java.util.HashMap",
-                      ((ImportDescr) imports.get( 0 )).getTarget() );
-        assertEquals( "org.drools.*",
-                      ((ImportDescr) imports.get( 1 )).getTarget() );
-
-        final List globals = packageDescr.getGlobals();
-        assertEquals( 2,
-                      globals.size() );
-        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
-        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
-        assertEquals( "com.sample.X",
-                      x.getType() );
-        assertEquals( "x",
-                      x.getIdentifier() );
-        assertEquals( "com.sample.Yada",
-                      yada.getType() );
-        assertEquals( "yada",
-                      yada.getIdentifier() );
-
-        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
-        final List names = functionDescr.getParameterNames();
-        assertEquals( "foo",
-                      names.get( 0 ) );
-        assertEquals( "bada",
-                      names.get( 1 ) );
-
-        final List types = functionDescr.getParameterTypes();
-        assertEquals( "Bar",
-                      types.get( 0 ) );
-        assertEquals( "Bing",
-                      types.get( 1 ) );
-
-        assertEquals( "System.out.println(\"hello world\");",
-                      functionDescr.getText().trim() );
-
-        final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
-        assertEquals( "my rule",
-                      ruleDescr.getName() );
-
-        final String consequence = (String) ruleDescr.getConsequence();
-        assertNotNull( consequence );
-        assertEquals( "System.out.println( \"hello\" );",
-                      consequence.trim() );
-    }
-
-    public void testParseQuery() throws Exception {
-        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseQuery.xml" ) ) );
-        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-        assertNotNull( packageDescr );
-        assertEquals( "com.sample",
-                      packageDescr.getName() );
-
-        final List imports = packageDescr.getImports();
-        assertEquals( 2,
-                      imports.size() );
-        assertEquals( "java.util.HashMap",
-                      ((ImportDescr) imports.get( 0 )).getTarget() );
-        assertEquals( "org.drools.*",
-                      ((ImportDescr) imports.get( 1 )).getTarget() );
-
-        final List globals = packageDescr.getGlobals();
-        assertEquals( 2,
-                      globals.size() );
-        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
-        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
-        assertEquals( "com.sample.X",
-                      x.getType() );
-        assertEquals( "x",
-                      x.getIdentifier() );
-        assertEquals( "com.sample.Yada",
-                      yada.getType() );
-        assertEquals( "yada",
-                      yada.getIdentifier() );
-
-        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
-        final List names = functionDescr.getParameterNames();
-        assertEquals( "foo",
-                      names.get( 0 ) );
-        assertEquals( "bada",
-                      names.get( 1 ) );
-
-        final List types = functionDescr.getParameterTypes();
-        assertEquals( "Bar",
-                      types.get( 0 ) );
-        assertEquals( "Bing",
-                      types.get( 1 ) );
-
-        assertEquals( "System.out.println(\"hello world\");",
-                      functionDescr.getText().trim() );
-
-        final QueryDescr queryDescr = (QueryDescr) packageDescr.getRules().get( 0 );
-        assertEquals( "my query",
-                      queryDescr.getName() );
-
-        final AndDescr lhs = queryDescr.getLhs();
-        assertEquals( 1,
-                      lhs.getDescrs().size() );
-        final PatternDescr patternDescr = (PatternDescr) lhs.getDescrs().get( 0 );
-        assertEquals( "Foo",
-                      patternDescr.getObjectType() );
-
-    }
-}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/ActionNodeTest.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,39 @@
+package org.drools.xml.processes;
+
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.drools.ruleflow.common.core.Process;
+import org.drools.xml.XmlProcessReader;
+
+public class ActionNodeTest extends TestCase {
+    public void testSingleActionNode() throws Exception {        
+        XmlProcessReader reader = new XmlProcessReader( );
+        Process process = reader.read( new InputStreamReader( ActionNodeTest.class.getResourceAsStream( "ActionNodeTest.xml" ) ) );
+        
+        PackageBuilder builder = new PackageBuilder();
+        builder.addProcess( process );
+        
+        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( 1, list.size() );
+        assertEquals( "action node was here", list.get(0) );
+        
+    }
+}

Copied: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTest.java (from rev 17100, labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTest.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,90 @@
+package org.drools.xml.rules;
+
+import junit.framework.TestCase;
+
+/**
+ * Test the dump/convert format utilities.
+ * 
+ * @author Michael Neale
+ * @author Fernando Meyer
+ */
+
+public class DumperTest extends TestCase {
+
+    // Xml Dumper test
+    
+    public void testRoundTripAccumulateXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_ParseAccumulate.xml" );
+    }
+
+    public void testRoundTripCollectXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_ParseCollect.xml" );
+    }
+    
+    public void testRoundTripExistsXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_ParseExists.xml" );
+    }
+
+    public void testRoundTripForallXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_ParseForall.xml" );
+    }
+
+    public void testRoundTripFromXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_ParseFrom.xml" );
+    }
+
+    public void testRoundTripComplexRuleXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_RoundTrip.xml" );
+    }
+    
+    // Drl Dumper test
+
+    public void testRoundTripComplexRuleDrl() throws Exception {
+        DumperTestHelper.DrlFile( "test_RoundTrip.drl" );
+    }
+    
+    public void testRoundTripCollectDrl() throws Exception {
+        DumperTestHelper.DrlFile( "../../integrationtests/test_Collect.drl" );
+    }
+    
+    public void testRoundTripAccumulateDrl() throws Exception {
+        DumperTestHelper.DrlFile( "test_accumulateall.drl" );
+    }
+    
+    public void testRoundTripExistsDrl() throws Exception {
+        DumperTestHelper.DrlFile( "../../integrationtests/test_exists.drl" );
+    }
+
+    public void testRoundTripForallDrl() throws Exception {
+        DumperTestHelper.DrlFile( "../../integrationtests/test_Forall.drl" );
+    }
+
+    public void testRoundTripFromDrl() throws Exception {
+        DumperTestHelper.DrlFile( "test_from.drl" );
+    }
+
+    public void testRoundTripSimpleRuleDrl() throws Exception {
+        DumperTestHelper.DrlFile( "test_simplerule.drl" );
+    }
+
+    public void testRoundTripPComplexDrl() throws Exception {
+        DumperTestHelper.DrlFile( "test_complex.drl" );
+    }
+    
+    public void testRoundTripPComplexXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_ParseComplex.xml" );
+    }
+    
+    public static void testStaticMethod1() {
+        System.out.println( "testStaticMethod1" ) ;
+    }
+    
+    public static void testStaticMethod2() {
+        System.out.println( "testStaticMethod2" ) ;
+    }
+    
+    public static void testStaticMethod3() {
+        System.out.println( "testStaticMethod3" ) ;
+    }    
+    
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTestHelper.java (from rev 17100, labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTestHelper.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/DumperTestHelper.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,77 @@
+/**
+ * 
+ */
+package org.drools.xml.rules;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+
+import junit.framework.Assert;
+
+import org.drools.compiler.DrlParser;
+import org.drools.lang.DrlDumper;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.xml.XmlDumper;
+import org.drools.xml.XmlPackageReader;
+
+/**
+ * Helper Class for both xml and drl Dump Tests
+ * 
+ * @author fernandomeyer
+ */
+public class DumperTestHelper extends Assert {
+    
+    public static void XmlFile(String filename) throws Exception {
+
+        XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( DumperTestHelper.class.getResourceAsStream( filename ) ) );
+        final PackageDescr pkgOriginal = xmlPackageReader.getPackageDescr();
+
+        final XmlDumper dumper = new XmlDumper();
+        final String result = dumper.dump( pkgOriginal );
+        
+        String buffer = readFile( filename );
+        
+        assertEqualsIgnoreWhitespace( buffer,
+                                      result );
+        assertNotNull( result );
+    }
+
+    public static void DrlFile(String filename) throws Exception {
+
+        DrlParser parser = new DrlParser();
+        final PackageDescr pkgOriginal = parser.parse( new InputStreamReader( DumperTestHelper.class.getResourceAsStream( filename ) ) );
+        final DrlDumper dumper = new DrlDumper();
+        String result = dumper.dump( pkgOriginal );
+
+        parser = new DrlParser();
+        String buffer = readFile( filename );
+        assertEqualsIgnoreWhitespace( buffer.toString(),
+                                      result );                 
+    }
+
+    private static void assertEqualsIgnoreWhitespace(final String expected,
+                                              final String actual) {
+        final String cleanExpected = expected.replaceAll( "\\s+",
+                                                          "" );
+        final String cleanActual = actual.replaceAll( "\\s+",
+                                                      "" );
+        assertEquals( cleanExpected,
+                      cleanActual );
+    }
+
+    private static String readFile(final String file) throws IOException {
+        final InputStreamReader reader = new InputStreamReader( DumperTestHelper.class.getResourceAsStream( file ) );
+        final StringBuffer text = new StringBuffer();
+        final char[] buf = new char[1024];
+        int len = 0;
+
+        while ( (len = reader.read( buf )) >= 0 ) {
+            text.append( buf,
+                         0,
+                         len );
+        }
+        return text.toString();
+    }
+}

Copied: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/XmlPackageReaderTest.java (from rev 17100, labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/XmlPackageReaderTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/rules/XmlPackageReaderTest.java	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,678 @@
+package org.drools.xml.rules;
+
+import java.io.InputStreamReader;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.lang.descr.AccessorDescr;
+import org.drools.lang.descr.AccumulateDescr;
+import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.AttributeDescr;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.FieldBindingDescr;
+import org.drools.lang.descr.FieldConstraintDescr;
+import org.drools.lang.descr.ForallDescr;
+import org.drools.lang.descr.FromDescr;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.FunctionImportDescr;
+import org.drools.lang.descr.GlobalDescr;
+import org.drools.lang.descr.ImportDescr;
+import org.drools.lang.descr.LiteralRestrictionDescr;
+import org.drools.lang.descr.NotDescr;
+import org.drools.lang.descr.OrDescr;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.PatternDescr;
+import org.drools.lang.descr.PredicateDescr;
+import org.drools.lang.descr.QueryDescr;
+import org.drools.lang.descr.ReturnValueRestrictionDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.lang.descr.VariableRestrictionDescr;
+import org.drools.xml.XmlPackageReader;
+
+public class XmlPackageReaderTest extends TestCase {
+
+    protected RuleBase getRuleBase() throws Exception {
+
+        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+                                            null );
+    }
+
+    protected RuleBase getRuleBase(final RuleBaseConfiguration config) throws Exception {
+
+        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+                                            config );
+    }
+
+    public void testParseFrom() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFrom.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
+        PatternDescr patterndescr = (PatternDescr) obj.getLhs().getDescrs().get( 0 );
+        
+        FromDescr from = (FromDescr) patterndescr.getSource();
+        
+        AccessorDescr accessordescriptor =  (AccessorDescr) from.getDataSource();
+        assertEquals( accessordescriptor.getVariableName(), "cheesery" );
+
+        assertEquals( patterndescr.getObjectType(), "Cheese" );
+        assertEquals( patterndescr.getIdentifier(), "cheese" );
+        
+    }
+
+    public void testAccumulate() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseAccumulate.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
+
+        Object patternobj = obj.getLhs().getDescrs().get( 0 );
+        assertTrue( patternobj instanceof PatternDescr );
+        final PatternDescr patterncheese = (PatternDescr) patternobj;
+        assertEquals( patterncheese.getIdentifier(), "cheese" );
+        assertEquals( patterncheese.getObjectType(), "Cheese" );
+        
+        AccumulateDescr accumulatedescr = (AccumulateDescr) patterncheese.getSource();
+        assertEquals( "total += $cheese.getPrice();",
+                      accumulatedescr.getActionCode() );
+        assertEquals( "int total = 0;",
+                      accumulatedescr.getInitCode() );
+        assertEquals( "new Integer( total ) );",
+                      accumulatedescr.getResultCode() );
+
+        patternobj = obj.getLhs().getDescrs().get( 1 );
+        assertTrue( patternobj instanceof PatternDescr );
+        
+        final PatternDescr patternmax = (PatternDescr) patternobj;
+        assertEquals( patternmax.getIdentifier(), "max" );
+        assertEquals( patternmax.getObjectType(), "Number" );
+        
+        accumulatedescr = (AccumulateDescr) patternmax.getSource();
+        
+        assertTrue( accumulatedescr.isExternalFunction() );
+        
+        assertEquals( "max",
+                      accumulatedescr.getFunctionIdentifier() );
+        
+        assertNull( accumulatedescr.getInitCode() );
+        assertNull( accumulatedescr.getActionCode() );
+        assertNull( accumulatedescr.getResultCode() );
+        assertNull( accumulatedescr.getReverseCode());
+        
+    }
+    
+    
+    public void testAccumulateMultiPattern() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseAccumulate.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 1 );
+
+        Object patternobj = obj.getLhs().getDescrs().get( 0 );
+        assertTrue( patternobj instanceof PatternDescr );
+        final PatternDescr patterncheese = (PatternDescr) patternobj;
+        assertEquals( patterncheese.getIdentifier(), "cheese" );
+        assertEquals( patterncheese.getObjectType(), "Cheese" );
+        
+        AccumulateDescr accumulatedescr = (AccumulateDescr) patterncheese.getSource();
+        assertEquals( "total += $cheese.getPrice();",
+                      accumulatedescr.getActionCode() );
+        assertEquals( "int total = 0;",
+                      accumulatedescr.getInitCode() );
+        assertEquals( "new Integer( total ) );",
+                      accumulatedescr.getResultCode() );
+        
+        AndDescr anddescr = (AndDescr) accumulatedescr.getInput();
+        
+        List descrlist = anddescr.getDescrs(); 
+        
+        PatternDescr[] listpattern = (PatternDescr[]) descrlist.toArray(new PatternDescr[descrlist.size()]);
+        
+        assertEquals(listpattern[0].getObjectType(), "Milk");
+        assertEquals(listpattern[1].getObjectType(), "Cup");
+    }
+    
+    public void testParseForall() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+
+        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
+        ForallDescr forall = (ForallDescr) obj.getLhs().getDescrs().get( 0 );
+        List forallPaterns = forall.getDescrs();
+
+        PatternDescr pattarnState = (PatternDescr) forallPaterns.get( 0 );
+        PatternDescr personState = (PatternDescr) forallPaterns.get( 1 );
+        PatternDescr cheeseState = (PatternDescr) forallPaterns.get( 2 );
+
+        assertEquals( pattarnState.getObjectType(),
+                      "State" );
+        assertEquals( personState.getObjectType(),
+                      "Person" );
+        assertEquals( cheeseState.getObjectType(),
+                      "Cheese" );
+    }
+
+    public void testParseExists() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseExists.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+
+        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
+        Object existdescr = obj.getLhs().getDescrs().get( 0 );
+        assertTrue( existdescr instanceof ExistsDescr );
+
+        Object patternDescriptor = ((ExistsDescr) existdescr).getDescrs().get( 0 );
+        assertTrue( patternDescriptor instanceof PatternDescr );
+        assertEquals( ((PatternDescr) patternDescriptor).getObjectType(),
+                      "Person" );
+
+        Object notDescr = obj.getLhs().getDescrs().get( 1 );
+
+        assertEquals( notDescr.getClass().getName(),
+                      NotDescr.class.getName() );
+        existdescr = ((NotDescr) notDescr).getDescrs().get( 0 );
+        patternDescriptor = ((ExistsDescr) existdescr).getDescrs().get( 0 );
+        assertTrue( patternDescriptor instanceof PatternDescr );
+        assertEquals( ((PatternDescr) patternDescriptor).getObjectType(),
+                      "Cheese" );
+    }
+
+    public void testParseCollect() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseCollect.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+
+        assertNotNull( packageDescr );
+
+        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
+        Object objectpattern = obj.getLhs().getDescrs().get( 0 );
+        assertTrue( objectpattern instanceof PatternDescr );
+
+        PatternDescr patterndescr = (PatternDescr) objectpattern;
+        
+        assertEquals( patterndescr.getObjectType(),
+                                    "Cheese" );
+        
+        Object collectobj = patterndescr.getSource();
+        
+        assertTrue( collectobj instanceof CollectDescr );
+        
+        CollectDescr collectDescr = (CollectDescr) collectobj;
+        
+        PatternDescr inputpattern =  collectDescr.getInputPattern();
+        
+        assertEquals( inputpattern.getObjectType(),
+                    "Person" );
+        Object fieldContraintObject = inputpattern.getConstraint().getDescrs().get( 0 );
+        assertTrue( fieldContraintObject instanceof FieldConstraintDescr );
+        FieldConstraintDescr fieldconstraintdescr = (FieldConstraintDescr) fieldContraintObject;
+        assertEquals( fieldconstraintdescr.getFieldName(),
+                      "hair" );
+        Object literal1 = fieldconstraintdescr.getRestrictions().get( 0 );
+        assertTrue( literal1 instanceof LiteralRestrictionDescr );
+        LiteralRestrictionDescr literalDesc = (LiteralRestrictionDescr) literal1;
+        assertEquals( literalDesc.getEvaluator(),
+                      "==" );
+        assertEquals( literalDesc.getText(),
+                      "pink" );
+
+        fieldContraintObject = patterndescr.getConstraint().getDescrs().get( 0 );
+        assertTrue( fieldContraintObject instanceof FieldConstraintDescr );
+        fieldconstraintdescr = (FieldConstraintDescr) fieldContraintObject;
+        assertEquals( fieldconstraintdescr.getFieldName(),
+                      "type" );
+        literal1 = fieldconstraintdescr.getRestrictions().get( 0 );
+        assertTrue( literal1 instanceof LiteralRestrictionDescr );
+        literalDesc = (LiteralRestrictionDescr) literal1;
+        assertEquals( literalDesc.getEvaluator(),
+                      "==" );
+        assertEquals( literalDesc.getText(),
+                      "1" );
+        
+    }
+
+    public void testParsePackageName() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParsePackageName.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+    }
+
+    public void testParseImport() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseImport.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+
+        final List imports = packageDescr.getImports();
+        assertEquals( 2,
+                      imports.size() );
+        assertEquals( "java.util.HashMap",
+                      ((ImportDescr) imports.get( 0 )).getTarget() );
+        assertEquals( "org.drools.*",
+                      ((ImportDescr) imports.get( 1 )).getTarget() );
+        
+        final List functionImport = packageDescr.getFunctionImports();
+        
+        assertEquals("org.drools.function", 
+                     ((FunctionImportDescr) functionImport.get( 0 )).getTarget() );
+    }
+
+    public void testParseGlobal() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseGlobal.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+
+        final List imports = packageDescr.getImports();
+        assertEquals( 2,
+                      imports.size() );
+        assertEquals( "java.util.HashMap",
+                      ((ImportDescr) imports.get( 0 )).getTarget() );
+        assertEquals( "org.drools.*",
+                      ((ImportDescr) imports.get( 1 )).getTarget() );
+
+        final List globals = packageDescr.getGlobals();
+        assertEquals( 2,
+                      globals.size() );
+        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
+        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
+        assertEquals( "com.sample.X",
+                      x.getType() );
+        assertEquals( "x",
+                      x.getIdentifier() );
+        assertEquals( "com.sample.Yada",
+                      yada.getType() );
+        assertEquals( "yada",
+                      yada.getIdentifier() );
+    }
+
+    public void testParseFunction() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFunction.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+
+        final List imports = packageDescr.getImports();
+        assertEquals( 2,
+                      imports.size() );
+        assertEquals( "java.util.HashMap",
+                      ((ImportDescr) imports.get( 0 )).getTarget() );
+        assertEquals( "org.drools.*",
+                      ((ImportDescr) imports.get( 1 )).getTarget() );
+
+        final List globals = packageDescr.getGlobals();
+        assertEquals( 2,
+                      globals.size() );
+        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
+        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
+        assertEquals( "com.sample.X",
+                      x.getType() );
+        assertEquals( "x",
+                      x.getIdentifier() );
+        assertEquals( "com.sample.Yada",
+                      yada.getType() );
+        assertEquals( "yada",
+                      yada.getIdentifier() );
+
+        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
+        final List names = functionDescr.getParameterNames();
+        assertEquals( "foo",
+                      names.get( 0 ) );
+        assertEquals( "bada",
+                      names.get( 1 ) );
+
+        final List types = functionDescr.getParameterTypes();
+        assertEquals( "Bar",
+                      types.get( 0 ) );
+        assertEquals( "Bing",
+                      types.get( 1 ) );
+
+        assertEquals( "System.out.println(\"hello world\");",
+                      functionDescr.getText().trim() );
+    }
+
+    public void testParseRule() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRule.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+
+        final List imports = packageDescr.getImports();
+        assertEquals( 2,
+                      imports.size() );
+        assertEquals( "java.util.HashMap",
+                      ((ImportDescr) imports.get( 0 )).getTarget() );
+        assertEquals( "org.drools.*",
+                      ((ImportDescr) imports.get( 1 )).getTarget() );
+
+        final List globals = packageDescr.getGlobals();
+        assertEquals( 2,
+                      globals.size() );
+        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
+        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
+        assertEquals( "com.sample.X",
+                      x.getType() );
+        assertEquals( "x",
+                      x.getIdentifier() );
+        assertEquals( "com.sample.Yada",
+                      yada.getType() );
+        assertEquals( "yada",
+                      yada.getIdentifier() );
+
+        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
+        final List names = functionDescr.getParameterNames();
+        assertEquals( "foo",
+                      names.get( 0 ) );
+        assertEquals( "bada",
+                      names.get( 1 ) );
+
+        final List types = functionDescr.getParameterTypes();
+        assertEquals( "Bar",
+                      types.get( 0 ) );
+        assertEquals( "Bing",
+                      types.get( 1 ) );
+
+        assertEquals( "System.out.println(\"hello world\");",
+                      functionDescr.getText().trim() );
+
+        final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
+        assertEquals( "simple_rule",
+                      ruleDescr.getName() );
+
+        assertEquals( 4,
+                      ruleDescr.getAttributes().size() );
+        final AttributeDescr attributeDescr = (AttributeDescr) ruleDescr.getAttributes().get( 0 );
+        assertEquals( "salience",
+                      attributeDescr.getName() );
+        assertEquals( "10",
+                      attributeDescr.getValue() );
+
+        final AndDescr lhs = ruleDescr.getLhs();
+        assertEquals( 7,
+                      lhs.getDescrs().size() );
+        final PatternDescr patternDescr = (PatternDescr) lhs.getDescrs().get( 0 );
+        assertEquals( "Bar",
+                      patternDescr.getObjectType() );
+
+        final String consequence = (String) ruleDescr.getConsequence();
+        assertNotNull( consequence );
+    }
+
+    public void testParseLhs() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseLhs.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+
+        final List imports = packageDescr.getImports();
+        assertEquals( 2,
+                      imports.size() );
+        assertEquals( "java.util.HashMap",
+                      ((ImportDescr) imports.get( 0 )).getTarget() );
+        assertEquals( "org.drools.*",
+                      ((ImportDescr) imports.get( 1 )).getTarget() );
+
+        final List globals = packageDescr.getGlobals();
+        assertEquals( 2,
+                      globals.size() );
+        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
+        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
+        assertEquals( "com.sample.X",
+                      x.getType() );
+        assertEquals( "x",
+                      x.getIdentifier() );
+        assertEquals( "com.sample.Yada",
+                      yada.getType() );
+        assertEquals( "yada",
+                      yada.getIdentifier() );
+
+        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
+        final List names = functionDescr.getParameterNames();
+        assertEquals( "foo",
+                      names.get( 0 ) );
+        assertEquals( "bada",
+                      names.get( 1 ) );
+
+        final List types = functionDescr.getParameterTypes();
+        assertEquals( "Bar",
+                      types.get( 0 ) );
+        assertEquals( "Bing",
+                      types.get( 1 ) );
+
+        assertEquals( "System.out.println(\"hello world\");",
+                      functionDescr.getText().trim() );
+
+        final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
+        assertEquals( "my rule",
+                      ruleDescr.getName() );
+
+        final AndDescr lhsDescr = ruleDescr.getLhs();
+
+        AndDescr andDescr = (AndDescr) lhsDescr.getDescrs().get( 0 );
+        OrDescr orDescr = (OrDescr) lhsDescr.getDescrs().get( 1 );
+        final PatternDescr pattern1 = (PatternDescr) lhsDescr.getDescrs().get( 2 );
+        assertNull( pattern1.getIdentifier() );
+        assertEquals( "Foo",
+                      pattern1.getObjectType() );
+
+        final PatternDescr pattern2 = (PatternDescr) lhsDescr.getDescrs().get( 3 );
+        assertEquals( "Bar",
+                      pattern2.getObjectType() );
+        assertEquals( "bar",
+                      pattern2.getIdentifier() );
+
+        final PatternDescr pattern3 = (PatternDescr) lhsDescr.getDescrs().get( 4 );
+        //final LiteralDescr literalDescr = (LiteralDescr) pattern3.getDescrs().get( 0 );
+        final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) pattern3.getDescrs().get( 0 );
+        final LiteralRestrictionDescr literalDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+        assertEquals( "field1",
+                      fieldConstraintDescr.getFieldName() );
+        assertEquals( "==",
+                      literalDescr.getEvaluator() );
+        assertEquals( "value1",
+                      literalDescr.getText() );
+
+        final ReturnValueRestrictionDescr returnValueDescr = (ReturnValueRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 1 );
+        assertEquals( "==",
+                      returnValueDescr.getEvaluator() );
+        assertEquals( "1==1",
+                      returnValueDescr.getContent() );
+
+        final VariableRestrictionDescr variableDescr = (VariableRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 2 );
+        assertEquals( "==",
+                      variableDescr.getEvaluator() );
+        assertEquals( "var1",
+                      variableDescr.getIdentifier() );
+
+        final PredicateDescr predicateDescr = (PredicateDescr) pattern3.getDescrs().get( 1 );
+        assertEquals( "1==1",
+                      predicateDescr.getContent() );
+
+        final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) pattern3.getDescrs().get( 2 );
+        assertEquals( "field1",
+                      fieldBindingDescr.getFieldName() );
+        assertEquals( "var1",
+                      fieldBindingDescr.getIdentifier() );
+
+        final NotDescr notDescr = (NotDescr) lhsDescr.getDescrs().get( 5 );
+        assertEquals( 1,
+                      notDescr.getDescrs().size() );
+        PatternDescr patternDescr = (PatternDescr) notDescr.getDescrs().get( 0 );
+        assertEquals( "Bar",
+                      patternDescr.getObjectType() );
+
+        final ExistsDescr existsDescr = (ExistsDescr) lhsDescr.getDescrs().get( 6 );
+        assertEquals( 1,
+                      existsDescr.getDescrs().size() );
+        patternDescr = (PatternDescr) existsDescr.getDescrs().get( 0 );
+        assertEquals( "Bar",
+                      patternDescr.getObjectType() );
+
+        andDescr = (AndDescr) lhsDescr.getDescrs().get( 7 );
+        assertEquals( 2,
+                      andDescr.getDescrs().size() );
+        orDescr = (OrDescr) andDescr.getDescrs().get( 1 );
+        patternDescr = (PatternDescr) orDescr.getDescrs().get( 0 );
+        assertEquals( "Bar",
+                      patternDescr.getObjectType() );
+        patternDescr = (PatternDescr) andDescr.getDescrs().get( 0 );
+        assertEquals( "Yada",
+                      patternDescr.getObjectType() );
+
+        orDescr = (OrDescr) lhsDescr.getDescrs().get( 8 );
+        assertEquals( 2,
+                      orDescr.getDescrs().size() );
+        andDescr = (AndDescr) orDescr.getDescrs().get( 1 );
+        patternDescr = (PatternDescr) andDescr.getDescrs().get( 0 );
+        assertEquals( "Foo",
+                      patternDescr.getObjectType() );
+        patternDescr = (PatternDescr) orDescr.getDescrs().get( 0 );
+        assertEquals( "Zaa",
+                      patternDescr.getObjectType() );
+
+        final EvalDescr evalDescr = (EvalDescr) lhsDescr.getDescrs().get( 9 );
+        assertEquals( "1==1",
+                      evalDescr.getContent() );
+    }
+
+    public void testParseRhs() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRhs.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+
+        final List imports = packageDescr.getImports();
+        assertEquals( 2,
+                      imports.size() );
+        assertEquals( "java.util.HashMap",
+                      ((ImportDescr) imports.get( 0 )).getTarget() );
+        assertEquals( "org.drools.*",
+                      ((ImportDescr) imports.get( 1 )).getTarget() );
+
+        final List globals = packageDescr.getGlobals();
+        assertEquals( 2,
+                      globals.size() );
+        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
+        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
+        assertEquals( "com.sample.X",
+                      x.getType() );
+        assertEquals( "x",
+                      x.getIdentifier() );
+        assertEquals( "com.sample.Yada",
+                      yada.getType() );
+        assertEquals( "yada",
+                      yada.getIdentifier() );
+
+        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
+        final List names = functionDescr.getParameterNames();
+        assertEquals( "foo",
+                      names.get( 0 ) );
+        assertEquals( "bada",
+                      names.get( 1 ) );
+
+        final List types = functionDescr.getParameterTypes();
+        assertEquals( "Bar",
+                      types.get( 0 ) );
+        assertEquals( "Bing",
+                      types.get( 1 ) );
+
+        assertEquals( "System.out.println(\"hello world\");",
+                      functionDescr.getText().trim() );
+
+        final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
+        assertEquals( "my rule",
+                      ruleDescr.getName() );
+
+        final String consequence = (String) ruleDescr.getConsequence();
+        assertNotNull( consequence );
+        assertEquals( "System.out.println( \"hello\" );",
+                      consequence.trim() );
+    }
+
+    public void testParseQuery() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseQuery.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        assertEquals( "com.sample",
+                      packageDescr.getName() );
+
+        final List imports = packageDescr.getImports();
+        assertEquals( 2,
+                      imports.size() );
+        assertEquals( "java.util.HashMap",
+                      ((ImportDescr) imports.get( 0 )).getTarget() );
+        assertEquals( "org.drools.*",
+                      ((ImportDescr) imports.get( 1 )).getTarget() );
+
+        final List globals = packageDescr.getGlobals();
+        assertEquals( 2,
+                      globals.size() );
+        final GlobalDescr x = (GlobalDescr) globals.get( 0 );
+        final GlobalDescr yada = (GlobalDescr) globals.get( 1 );
+        assertEquals( "com.sample.X",
+                      x.getType() );
+        assertEquals( "x",
+                      x.getIdentifier() );
+        assertEquals( "com.sample.Yada",
+                      yada.getType() );
+        assertEquals( "yada",
+                      yada.getIdentifier() );
+
+        final FunctionDescr functionDescr = (FunctionDescr) packageDescr.getFunctions().get( 0 );
+        final List names = functionDescr.getParameterNames();
+        assertEquals( "foo",
+                      names.get( 0 ) );
+        assertEquals( "bada",
+                      names.get( 1 ) );
+
+        final List types = functionDescr.getParameterTypes();
+        assertEquals( "Bar",
+                      types.get( 0 ) );
+        assertEquals( "Bing",
+                      types.get( 1 ) );
+
+        assertEquals( "System.out.println(\"hello world\");",
+                      functionDescr.getText().trim() );
+
+        final QueryDescr queryDescr = (QueryDescr) packageDescr.getRules().get( 0 );
+        assertEquals( "my query",
+                      queryDescr.getName() );
+
+        final AndDescr lhs = queryDescr.getLhs();
+        assertEquals( 1,
+                      lhs.getDescrs().size() );
+        final PatternDescr patternDescr = (PatternDescr) lhs.getDescrs().get( 0 );
+        assertEquals( "Foo",
+                      patternDescr.getObjectType() );
+
+    }
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/processes/ActionNodeTest.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -0,0 +1,32 @@
+<process  xmlns="http://drools.org/drools-4.0/process"
+	      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">
+	    </start>
+	    
+	    <action name="action node" dialect="java">
+	    	list.add( "action node was here" );    			
+	    </action>
+	    
+	    <end name="end node">
+	    </end>
+    </nodes>
+    
+    <connections>
+        <connection from="start node" to="action node" />
+        <connection from="action node" to="end node" />
+    </connections>
+    
+</process>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_Dump.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_Dump.drl	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_Dump.drl	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,24 +0,0 @@
-package foo;
-
-rule "simple_rule"
-  salience 10
-  no-loop true
-  agenda-group "agenda-group"
-  activation-group "activation-group"
-  when
-    foo2 : Bar( a ( > 60 && < 70 ) || ( > 50 && < 55 ) && a3 == "black" || a == 40 && a3 == "pink" || a == 12 && a3 == "yellow" || a3 == "blue")
-    foo3 : Bar( a == 3 || == 4, a3 == "hello", a4 == null )    
-    foo4 : Bar( a4 : a != 4 && != 5)
-    foo5 : Bar( b == (a4 + 1) || > a4)    
-    foo6 : Bar( a4 : a, b == 6)    
-    foo7 : Bar( a4 : a, b4 : b)    
-    $cheeseList  : ArrayList(size > 2) from collect( Cheese( type == $likes ) );    
-    Baz()
-  then
-  if ( a == b ) {
-    assert( foo3 );
-  } else {
-    retract( foo4 );
-  } 
-  System.out.println( a4 );
-end
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseAccumulate.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseAccumulate.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseAccumulate.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-
-	<import name="import java.util.List"/>
-    <import name="org.drools.Person" />
-    <import name="org.drools.Cheese" />
-	<import name="org.drools.Cheesery" />
-
-	<global identifier="cheesery" type="Cheesery" />
-	<global identifier="list1" type="List" />
-
-    <rule name="simple_rule">
-        <rule-attribute name="salience" value="10" />
-        <rule-attribute name="no-loop" value="true" />
-        <rule-attribute name="agenda-group" value="agenda-group" />
-        <rule-attribute name="activation-group" value="activation-group" />
-
-        <lhs>
-            <pattern identifier="cheese" object-type="Cheese">
-                <from>
-                    <accumulate>
-                        <pattern object-type="Person"></pattern>
-                        <init>
-                            int total = 0;
-                        </init>
-                        <action>
-                            total += $cheese.getPrice();
-                        </action>
-                        <result>
-                            new Integer( total ) );
-                        </result>
-                    </accumulate>
-                </from>
-            </pattern>
-			
-            <pattern identifier="max" object-type="Number">
-                <from>
-                    <accumulate>
-                        <pattern identifier="cheese" object-type="Cheese"></pattern>
-                        <external-function evaluator="max" expression="$price"/>
-                    </accumulate>
-                </from>
-            </pattern>
-        </lhs>
-        <rhs>
-            list1.add( $cheese );
-        </rhs>
-    </rule>
-
-    <rule name="multipatternaccumulate_rule">
-        <rule-attribute name="salience" value="10" />
-        <lhs>
-            <pattern identifier="cheese" object-type="Cheese">
-                <from>
-                    <accumulate>
-                        <and-conditional-element>
-                            <pattern object-type="Milk"></pattern>
-                            <pattern object-type="Cup"></pattern>
-                        </and-conditional-element>
-
-                        <init>
-                            int total = 0;
-                        </init>
-                        <action>
-                            total += $cheese.getPrice();
-                        </action>
-                        <result>
-                            new Integer( total ) );
-                        </result>
-                    </accumulate>
-                </from>
-            </pattern>
-        </lhs>
-        <rhs>
-            list1.add( $cheese );
-        </rhs>
-    </rule>
-
-
-
-</package>

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample" xmlns="http://drools.org/drools-4.0"
-	xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-	xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-
-	<import name="import java.util.List"/>
-	<import name="org.drools.Cheese"/>
-	<import name="org.drools.Cheesery"/>
-
-	<global identifier="cheesery" type="Cheesery"/>
-	<global identifier="list" type="List"/>
-
-	<rule name="simple_rule">
-		<rule-attribute name="salience" value="10"/>
-		<rule-attribute name="no-loop" value="true"/>
-		<rule-attribute name="agenda-group" value="agenda-group"/>
-		<rule-attribute name="activation-group" value="activation-group"/>
-
-		<lhs>
-            <pattern identifier="cheese" object-type="Cheese" >
-				<field-constraint field-name="type">
-                    <literal-restriction evaluator="==" value="1"/>
-                </field-constraint>
-                <from>
-                    <collect>
-                        <pattern object-type="Person">
-                            <field-constraint field-name="hair">
-                                <literal-restriction evaluator="==" value="pink" />
-                            </field-constraint>
-                        </pattern>
-                    </collect>
-                </from>
-            </pattern>
-		</lhs>
-		<rhs> list.add( $cheese ); </rhs>
-	</rule>
-
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="pt.inescporto.cec.rules"
-    xmlns="http://drools.org/drools-4.0"
-    xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-    <import name="pt.inescporto.cec.entities.SetupInUse"/>
-    <import name="pt.inescporto.cec.entities.SetupUse"/>
-    <import name="pt.inescporto.cec.entities.ArtigoProducao"/>
-    <import name="pt.inescporto.cec.entities.Parameter"/>
-    <import name="pt.inescporto.cec.entities.BestParms"/>
-    <import name="pt.inescporto.cec.entities.AccaoInspeccaoOperacao"/>
-    <import name="pt.inescporto.cec.entities.MelhorEmNaoConformidades"/>
-    <import name="pt.inescporto.cec.entities.OtherInspectionMethod"/>
-    <import name="pt.inescporto.cec.entities.AccaoInspeccao"/>
-    <rule name="ruleBestProductionOrderCreator">
-        <lhs>
-            <pattern object-type="AccaoInspeccao">
-                <field-binding field-name="recursoID" identifier="resource"/>
-                <field-constraint field-name="artigoID">
-                    <literal-restriction evaluator="==" value="3"/>
-                </field-constraint>
-                <field-binding field-name="operacaoID" identifier="operation"/>
-                <field-binding field-name="ordemProducaoID" identifier="ProductionOrder"/>
-                <field-binding field-name="recursoID" identifier="resourceID"/>
-                <field-binding field-name="accaoInspeccaoID" identifier="InspectionAction"/>
-            </pattern>
-            <pattern object-type="AccaoInspeccaoOperacao">
-                <field-binding field-name="inspAccaoOperacaoID" identifier="inspectionActionOperation"/>
-                <field-constraint field-name="inspectionActionID">
-                    <variable-restriction evaluator="==" identifier="InspectionAction"/>
-                </field-constraint>
-            </pattern>
-            <pattern object-type="OtherInspectionMethod">
-                <field-binding field-name="numeroNaoConformidades" identifier="NCNumber"/>
-                <field-constraint field-name="inspAccaoOperacaoID">
-                    <variable-restriction evaluator="==" identifier="inspectionActionOperation"/>
-                </field-constraint>
-            </pattern>
-            <not>
-                <pattern object-type="MelhorEmNaoConformidades">
-                    <field-constraint field-name="operacaoID">
-                        <variable-restriction evaluator="==" identifier="operation"/>
-                    </field-constraint>
-                    <field-constraint field-name="recursoID">
-                        <variable-restriction evaluator="==" identifier="resource"/>
-                    </field-constraint>
-                </pattern>
-            </not>
-        </lhs>
-        <rhs>insert(new MelhorEmNaoConformidades(ProductionOrder,NCNumber,operation,resource));</rhs>
-    </rule>
-    <rule name="Best Checker">
-        <lhs>
-            <pattern object-type="AccaoInspeccao">
-                <field-constraint field-name="artigoID">
-                    <literal-restriction evaluator="==" value="3"/>
-                </field-constraint>
-                <field-binding field-name="recursoID" identifier="resource"/>
-                <field-binding field-name="operacaoID" identifier="operation"/>
-                <field-binding field-name="ordemProducaoID" identifier="ProductionOrder"/>
-                <field-binding field-name="recursoID" identifier="resourceID"/>
-                <field-binding field-name="accaoInspeccaoID" identifier="InspectionAction"/>
-            </pattern>
-            <pattern object-type="AccaoInspeccaoOperacao">
-                <field-binding field-name="inspAccaoOperacaoID" identifier="inspectionActionOperation"/>
-                <field-constraint field-name="inspectionActionID">
-                    <variable-restriction evaluator="==" identifier="InspectionAction"/>
-                </field-constraint>
-            </pattern>
-            <pattern object-type="OtherInspectionMethod">
-                <field-binding field-name="numeroNaoConformidades" identifier="NCNumber"/>
-                <field-constraint field-name="inspAccaoOperacaoID">
-                    <variable-restriction evaluator="==" identifier="inspectionActionOperation"/>
-                </field-constraint>
-            </pattern>
-            <pattern identifier="TheBest" object-type="MelhorEmNaoConformidades">
-                <field-constraint field-name="operacaoID">
-                    <variable-restriction evaluator="==" identifier="operation"/>
-                </field-constraint>
-                <field-constraint field-name="recursoID">
-                    <variable-restriction evaluator="==" identifier="resource"/>
-                </field-constraint>
-                <field-constraint field-name="numeroDefeitos">
-                    <variable-restriction evaluator="&gt;" identifier="NCNumber"/>
-                </field-constraint>
-            </pattern>
-        </lhs>
-        <rhs>TheBest.setNumeroDefeitos(NCNumber);
-TheBest.setOrdemProducaoID(ProductionOrder);
-update(TheBest);
-</rhs>
-    </rule>
-    <rule name="ruleBestParametersCreator">
-        <rule-attribute name="salience" value="-100"/>
-        <lhs>
-            <pattern object-type="MelhorEmNaoConformidades">
-                <field-binding field-name="ordemProducaoID" identifier="$poID"/>
-                <field-binding field-name="numeroDefeitos" identifier="$NC"/>
-            </pattern>
-            <pattern object-type="SetupInUse">
-                <field-binding field-name="setupUseID" identifier="$setup"/>
-                <field-constraint field-name="productionOrderID">
-                    <variable-restriction evaluator="==" identifier="$poID"/>
-                </field-constraint>
-            </pattern>
-            <pattern identifier="$p" object-type="Parameter">
-                <field-binding field-name="parameterID" identifier="$parID"/>
-                <field-constraint field-name="setupUseID">
-                    <variable-restriction evaluator="==" identifier="$setup"/>
-                </field-constraint>
-            </pattern>
-            <not>
-                <pattern object-type="BestParms">
-                    <field-constraint field-name="parameterID">
-                        <variable-restriction evaluator="==" identifier="$parID"/>
-                    </field-constraint>
-                </pattern>
-            </not>
-        </lhs>
-        <rhs>BestParms newBest=new BestParms();
-newBest.setParameterID($parID);
-newBest.setNominalValue(new Float($p.getNominalValue()));
-newBest.setMaxLimit(new Float($p.getMaxLimit()));
-newBest.setMinLimit(new Float($p.getMinLimit()));
-newBest.setMaxLimitAlarm(new Float($p.getMaxLimitAlarm()));
-newBest.setMinLimitAlarm(new Float($p.getMinLimitAlarm()));
-newBest.setNonConformities(new Float($NC));
-insert(newBest);
-</rhs>
-    </rule>
-    <rule name="ruleBestParametersChecker">
-        <rule-attribute name="salience" value="-100"/>
-        <lhs>
-            <pattern object-type="MelhorEmNaoConformidades">
-                <field-binding field-name="ordemProducaoID" identifier="$poID"/>
-                <field-binding field-name="numeroDefeitos" identifier="$NC"/>
-            </pattern>
-            <pattern object-type="SetupInUse">
-                <field-binding field-name="setupUseID" identifier="$setup"/>
-                <field-constraint field-name="productionOrderID">
-                    <variable-restriction evaluator="==" identifier="$poID"/>
-                </field-constraint>
-            </pattern>
-            <pattern identifier="$p" object-type="Parameter">
-                <field-binding field-name="parameterID" identifier="$parID"/>
-                <field-constraint field-name="setupUseID">
-                    <variable-restriction evaluator="==" identifier="$setup"/>
-                </field-constraint>
-            </pattern>
-            <pattern identifier="$newBest" object-type="Parameter">
-                <field-constraint field-name="parameterID">
-                    <variable-restriction evaluator="==" identifier="$parID"/>
-                </field-constraint>
-                <field-constraint field-name="nonConformities">
-                    <variable-restriction evaluator="&gt;" identifier="$NC"/>
-                </field-constraint>
-            </pattern>
-        </lhs>
-        <rhs>$newBest.setNominalValue(new Float(p.getNominalValue()));
-$newBest.setMaxLimit(new Float(p.getMaxLimit()));
-$newBest.setMinLimit(new Float(p.getMinLimit()));
-$newBest.setMaxLimitAlarm(new Float(p.getMaxLimitAlarm()));
-$newBest.setMinLimitAlarm(new Float(p.getMinLimitAlarm()));
-$newBest.setNonConformities(new Float($NC));
-update($newBest);
-</rhs>
-    </rule>
-    <rule name="print">
-        <rule-attribute name="salience" value="-110"/>
-        <lhs>
-            <pattern identifier="bp" object-type="BestParms"> </pattern>
-        </lhs>
-        <rhs>System.out.println("Parameter: "+bp.getParameterID()+" Value: "+bp.getNominalValue()+" NC: "+bp.getNonConformities());
-</rhs>
-    </rule>
-</package>

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseExists.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseExists.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseExists.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample" xmlns="http://drools.org/drools-4.0"
-	xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-	xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-	
-	<rule name="simple_rule">
-		<lhs>
-			<exists>
-				<pattern object-type="Person">
-					<field-constraint field-name="likes">
-						<variable-restriction evaluator="==" identifier="type"/>
-					</field-constraint>
-				</pattern>
-			</exists>
-
-            <not>
-                <exists>
-                    <pattern object-type="Cheese">
-                        <field-constraint field-name="likes">
-                            <variable-restriction evaluator="==" identifier="type"/>
-                        </field-constraint>
-                    </pattern>
-                </exists>
-            </not>
-		</lhs>
-		<rhs> list.add( $cheese ); </rhs>
-	</rule>
-	
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseForall.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseForall.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseForall.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-
-	<global identifier="results" type="java.util.List" />
-
-<rule name="simple_rule">
-	<rule-attribute name="salience" value="10" />
-	<rule-attribute name="no-loop" value="true" />
-	<rule-attribute name="agenda-group" value="agenda-group" />
-	<rule-attribute name="activation-group" value="activation-group" />
-
-	<lhs>
-        <forall>
-            <pattern object-type="State">
-                <field-binding field-name="state" identifier="state" />
-            </pattern>
-
-            <pattern object-type="Person">
-                <field-constraint field-name="status">
-                    <variable-restriction evaluator="==" identifier="state" />
-                </field-constraint>
-                <field-binding field-name="likes" identifier="likes" />
-            </pattern>
-
-            <pattern object-type="Cheese">
-                <field-binding field-name="type" identifier="likes" />
-            </pattern>
-        </forall>
-
-    </lhs>
-    <rhs>
-		results.add("OK");
-	</rhs>
-</rule>
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-
-	<import name="import java.util.List"/>
-	<import name="org.drools.Cheese" />
-	<import name="org.drools.Cheesery" />
-
-	<global identifier="cheesery" type="Cheesery" />		
-	<global identifier="list1" type="List" />
-
-<rule name="simple_rule">
-	<rule-attribute name="salience" value="10" />
-	<rule-attribute name="no-loop" value="true" />
-	<rule-attribute name="agenda-group" value="agenda-group" />
-	<rule-attribute name="activation-group" value="activation-group" />
-
-	<lhs>
-        <pattern identifier="cheese" object-type="Cheese" >
-            <from>
-                <expression>
-                    cheesery.getCheeses(i+4)
-                 </expression>
-            </from>
-        </pattern>
-    </lhs>
-	<rhs>
-		list1.add( $cheese );
-	</rhs>
-</rule>
-
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFunction.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFunction.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFunction.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-         
-	<import name="java.util.HashMap" />
-	<import name="org.drools.*" />	
-	
-	<global identifier="x" type="com.sample.X" />		
-	<global identifier="yada" type="com.sample.Yada" />
-	
-	<function return-type="void" name="myFunc">
-	    <parameter identifier="foo" type="Bar" />
-	    <parameter identifier="bada" type="Bing" />
-	    	    
-	    <body>
-	    	System.out.println("hello world");
-		</body>		
-	</function>
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-         
-	<import name="java.util.HashMap" />
-	<import name="org.drools.*" />	
-	
-	
-	<global identifier="x" type="com.sample.X" />		
-	<global identifier="yada" type="com.sample.Yada" />		
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-         
-	<import name="java.util.HashMap" />
-	<import name="org.drools.*" />
-    <importfunction name="org.drools.function" />
-    
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseLhs.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseLhs.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseLhs.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-         
-	<import name="java.util.HashMap" />
-	<import name="org.drools.*" />	
-	
-	<global identifier="x" type="com.sample.X" />		
-	<global identifier="yada" type="com.sample.Yada" />
-	
-	<function return-type="void" name="myFunc">
-	    <parameter identifier="foo" type="Bar" />
-	    <parameter identifier="bada" type="Bing" />
-	    	    
-	    <body>
-	    	System.out.println("hello world");
-		</body>		
-	</function>
-	
-	<rule name="my rule">
-		<lhs>
-
-            <and-conditional-element></and-conditional-element>
-
-            <or-conditional-element></or-conditional-element>
-
-            <pattern object-type="Foo" >
-			</pattern>							
-				
-			<pattern identifier="bar" object-type="Bar" >			
-			</pattern>		
-									
-			<pattern object-type="Foo">
-			    <field-constraint field-name="field1">
-				    <literal-restriction       evaluator="==" value="value1" />
-    				<return-value-restriction  evaluator="==">1==1</return-value-restriction>				    
-	    			<variable-restriction      evaluator="==" identifier="var1" />								
-				</field-constraint>
-											
-				<predicate field-name="field1" identifier="var1">1==1</predicate>
-														
-				<field-binding field-name="field1" identifier="var1" />				
-			</pattern>		
-			
-			<not>
-				<pattern object-type="Bar" />			
-			</not>
-			
-			<exists>
-				<pattern object-type="Bar" />							
-			</exists>		
-			
-			<and-conditional-element>
-                <pattern object-type="Yada"/>
-                <or-conditional-element>
-                    <pattern object-type="Bar"/>
-                </or-conditional-element>
-
-            </and-conditional-element>
-
-            <or-conditional-element>
-                <pattern object-type="Zaa"/>
-                <and-conditional-element>
-                    <pattern object-type="Foo"/>
-                </and-conditional-element>
-            </or-conditional-element>
-			<eval>1==1</eval>
-		</lhs>
-		
-	    <rhs>
-		</rhs>
-	</rule>
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseQuery.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseQuery.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseQuery.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-	<import name="java.util.HashMap" />
-	<import name="org.drools.*" />
-	
-	<global identifier="x" type="com.sample.X" />		
-	<global identifier="yada" type="com.sample.Yada" />
-	
-	<function return-type="void" name="myFunc">
-	    <parameter identifier="foo" type="Bar" />
-	    <parameter identifier="bada" type="Bing" />
-	    	    
-	    <body>
-	    	System.out.println("hello world");
-		</body>		
-	</function>
-	
-	<query name="my query">
-		<lhs>
-	       <pattern object-type="Foo" />							
-		</lhs>		
-	</query>
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRhs.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRhs.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRhs.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-         
-	<import name="java.util.HashMap" />
-	<import name="org.drools.*" />	
-	
-	<global identifier="x" type="com.sample.X" />		
-	<global identifier="yada" type="com.sample.Yada" />
-	
-	<function return-type="void" name="myFunc">
-	    <parameter identifier="foo" type="Bar" />
-	    <parameter identifier="bada" type="Bing" />
-	    	    
-	    <body>
-	    	System.out.println("hello world");
-		</body>		
-	</function>
-	
-	<rule name="my rule">
-		<lhs>							
-		</lhs>
-		
-	    <rhs>
-	    	System.out.println( "hello" );	    
-		</rhs>
-	</rule>
-</package>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<package name="com.sample"
-         xmlns="http://drools.org/drools-4.0"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-         xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-
-	<import name="java.util.HashMap" />
-	<import name="org.drools.*" />
-
-	<global identifier="x" type="com.sample.X" />
-	<global identifier="yada" type="com.sample.Yada" />
-
-	<function return-type="void" name="myFunc">
-	    <parameter identifier="foo" type="Bar" />
-	    <parameter identifier="bada" type="Bing" />
-
-	    <body>
-	    	System.out.println("hello world");
-		</body>
-	</function>
-
-<rule name="simple_rule">
-	<rule-attribute name="salience" value="10" />
-	<rule-attribute name="no-loop" value="true" />
-	<rule-attribute name="agenda-group" value="agenda-group" />
-	<rule-attribute name="activation-group" value="activation-group" />
-
-	<lhs>
-		<pattern identifier="foo2" object-type="Bar" >
-            <or-constraint-connective>
-                <and-constraint-connective>
-					<field-constraint field-name="a">
-                        <or-restriction-connective>
-                            <and-restriction-connective>
-                                <literal-restriction evaluator="&gt;" value="60" />
-                                <literal-restriction evaluator="&lt;" value="70" />
-                            </and-restriction-connective>
-                            <and-restriction-connective>
-                                <literal-restriction evaluator="&lt;" value="50" />
-                                <literal-restriction evaluator="&gt;" value="55" />
-                            </and-restriction-connective>
-                        </or-restriction-connective>
-					</field-constraint>
-
-					<field-constraint field-name="a3">
-                        <literal-restriction evaluator="==" value="black" />
-                    </field-constraint>
-                </and-constraint-connective>
-
-                <and-constraint-connective>
-                    <field-constraint field-name="a">
-                        <literal-restriction evaluator="==" value="40" />
-                    </field-constraint>
-
-                    <field-constraint field-name="a3">
-                        <literal-restriction evaluator="==" value="pink" />
-                    </field-constraint>
-                </and-constraint-connective>
-
-                <and-constraint-connective>
-                    <field-constraint field-name="a">
-                        <literal-restriction evaluator="==" value="12"/>
-                    </field-constraint>
-
-                    <field-constraint field-name="a3">
-                        <or-restriction-connective>
-                            <literal-restriction evaluator="==" value="yellow"/>
-                            <literal-restriction evaluator="==" value="blue" />
-                        </or-restriction-connective>
-                    </field-constraint>
-                </and-constraint-connective>
-            </or-constraint-connective>
-        </pattern>
-
-        <not>
-            <pattern object-type="Person">
-                <field-constraint field-name="likes">
-                    <variable-restriction evaluator="==" identifier="type"/>
-                </field-constraint>
-            </pattern>
-
-            <exists>
-                <pattern object-type="Person">
-                    <field-constraint field-name="likes">
-                        <variable-restriction evaluator="==" identifier="type"/>
-                    </field-constraint>
-                </pattern>
-            </exists>
-        </not>
-
-        <or-conditional-element>
-            <pattern identifier="foo3" object-type="Bar" >
-                <field-constraint field-name="a">
-                    <or-restriction-connective>
-                        <literal-restriction evaluator="==" value="3" />
-                        <literal-restriction evaluator="==" value="4" />
-                    </or-restriction-connective>
-                </field-constraint>
-                <field-constraint field-name="a3">
-                    <literal-restriction evaluator="==" value="hello" />
-                </field-constraint>
-                <field-constraint field-name="a4">
-                    <literal-restriction evaluator="==" value="null" />
-                </field-constraint>
-            </pattern>
-
-            <pattern identifier="foo4" object-type="Bar" >
-                <field-binding field-name="a" identifier="a4" />
-                <field-constraint field-name="a">
-                    <literal-restriction evaluator="!=" value="4" />
-                    <literal-restriction evaluator="!=" value="5" />
-                </field-constraint>
-            </pattern>
-        </or-conditional-element>
-
-        <pattern identifier="foo5" object-type="Bar" >
-            <field-constraint field-name="b">
-                <or-restriction-connective>
-                    <return-value-restriction evaluator="==" >a4 + 1</return-value-restriction>
-                    <variable-restriction evaluator="&gt;" identifier="a4" />
-                    <qualified-identifier-restriction evaluator="==">
-                        org.drools.Bar.BAR_ENUM_VALUE
-                    </qualified-identifier-restriction>
-                </or-restriction-connective>
-            </field-constraint>
-        </pattern>
-
-        <pattern identifier="foo6" object-type="Bar" >
-			<field-binding field-name="a" identifier="a4" />
-			<field-constraint field-name="b">
-				<literal-restriction evaluator="==" value="6" />
-			</field-constraint>
-		</pattern>
-
-		<pattern identifier="foo7" object-type="Bar" >
-			<field-binding field-name="a" identifier="a4" />
-			<field-binding field-name="b" identifier="b4" />
-		</pattern>
-		<pattern object-type="Baz" > </pattern>
-	</lhs>
-	<rhs>
-		  if ( a == b ) {
-		    assert( foo3 );
-		  } else {
-		    retract( foo4 );
-		  }
-		  System.out.println( a4 );
-	</rhs>
-</rule>
-
-<rule name="Check_NotNullof_rfqId">
-
-<rule-attribute name="agenda-group" value="Check" />
-
-<lhs><pattern object-type="RFQBean" >
-
-<or-constraint-connective><field-constraint field-name="m_rfqId">
-
-<literal-restriction evaluator="==" value="null" />
-
-</field-constraint>
-
-<field-constraint field-name="m_rfqId">
-
-<literal-restriction evaluator="==" value="" />
-
-</field-constraint>
-
-</or-constraint-connective>
-
-</pattern>
-
-</lhs><rhs> response.setStatus("For RFQ Bean: The value of m_rfqId is null.");
-
-System.out.println(response.getStatus());
-
-</rhs>
-
-</rule>
-
-</package>

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.drl	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,61 +0,0 @@
-package foo;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.utilArrayList;
-
-global HashMap m;
-global HashSet s;
-global org.drools.Person p;
-
-import function org.drools.xml.DumperTest.testStaticMethod1;
-import function org.drools.xml.DumperTest.testStaticMethod2;
-import function org.drools.xml.DumperTest.testStaticMethod3;
-
-rule "simple_rule"
-  salience 10
-  no-loop true
-  agenda-group "agenda-group"
-  activation-group "activation-group"
-  ruleflow-group "xxx"
-  lock-on-active true
-  auto-focus true
-  date-effective "01-Jan-2007"
-  date-expires "01-Feb-2007"    
-  when
-    foo2 : Bar( a ( > 60 && < 70 ) || ( > 50 && < 55 ) && a3 == "black" || a == 40 && a3 == "pink" || a == 12 && a3 == "yellow" || a3 == "blue")
-    foo3 : Bar( a == 3 || == 4, a3 == "hello", a4 == null )    
-    foo4 : Bar( a4 : a != 4 && != 5)
-    foo5 : Bar( b == (a4 + 1) || > a4)    
-    foo6 : Bar( a4 : a, b == 6)    
-    foo7 : Bar( a4 : a, b4 : b)    
-    $cheeseList  : ArrayList(size > 2) from collect( Cheese( type == $likes ) );    
-    Baz()
-  then
-  if ( a == b ) {
-    assert( foo3 );
-  } else {
-    retract( foo4 );
-  } 
-  System.out.println( a4 );
-  testStaticMethod1();
-  testStaticMethod2();
-  testStaticMethod3();
-end
-
-rule "simple_rule2"
-  salience (10 + a)
-  dialect "mvel"    
-  when    
-    foo4 : Bar( a4 : a != 4 && != 5)
-  then
-  if ( a == b ) {
-    assert( foo3 );
-  } else {
-    retract( foo4 );
-  } 
-  System.out.println( a4 );
-  testStaticMethod1();  
-  testStaticMethod2();
-  testStaticMethod3();  
-end
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.xml	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_RoundTrip.xml	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<package name="foo"  
-	xmlns="http://drools.org/drools-4.0" 
-	xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
-	xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd"> 
-<import name="java.util.HashMap" /> 
-<import name="java.util.HashSet" /> 
-<import name="java.utilArrayList" /> 
-
-<global identifier="m" type="HashMap" />
-<global identifier="s" type="HashSet" />
-<global identifier="p" type="org.drools.Person" />
-
-<importfunction name="org.drools.xml.DumperTest.testStaticMethod1"/>
-<importfunction name="org.drools.xml.DumperTest.testStaticMethod2"/>
-<importfunction name="org.drools.xml.DumperTest.testStaticMethod3"/>
-
-
-<rule name="simple_rule">
-<rule-attribute name="salience" value="10" />
-<rule-attribute name="no-loop" value="true" />
-<rule-attribute name="agenda-group" value="agenda-group" />
-<rule-attribute name="activation-group" value="activation-group" />
-<rule-attribute name="ruleflow-group" value="xxx" />
-<rule-attribute name="lock-on-active" value="true" />
-<rule-attribute name="auto-focus" value="true" />
-<rule-attribute name="date-effective" value="01-Jan-2007" />
-<rule-attribute name="date-expires" value="01-Feb-2007" />
-
-<lhs><pattern identifier="foo2" object-type="Bar" >
-<or-constraint-connective><and-constraint-connective><field-constraint field-name="a"> 
-<or-restriction-connective><and-restriction-connective><literal-restriction evaluator="&gt;" value="60" />
-
-<literal-restriction evaluator="&lt;" value="70" />
-
-
-</and-restriction-connective>
-<and-restriction-connective><literal-restriction evaluator="&gt;" value="50" />
-
-<literal-restriction evaluator="&lt;" value="55" />
-
-
-</and-restriction-connective>
-
-</or-restriction-connective>
-</field-constraint>
-<field-constraint field-name="a3"> 
-<literal-restriction evaluator="==" value="black" />
-
-</field-constraint>
-
-</and-constraint-connective>
-<and-constraint-connective><field-constraint field-name="a"> 
-<literal-restriction evaluator="==" value="40" />
-
-</field-constraint>
-<field-constraint field-name="a3"> 
-<literal-restriction evaluator="==" value="pink" />
-
-</field-constraint>
-
-</and-constraint-connective>
-<and-constraint-connective><field-constraint field-name="a"> 
-<literal-restriction evaluator="==" value="12" />
-
-</field-constraint>
-<field-constraint field-name="a3"> 
-<literal-restriction evaluator="==" value="yellow" />
-
-</field-constraint>
-
-</and-constraint-connective>
-<field-constraint field-name="a3"> 
-<literal-restriction evaluator="==" value="blue" />
-
-</field-constraint>
-
-</or-constraint-connective>
-
-
-</pattern>
-
-<pattern identifier="foo3" object-type="Bar" >
-<field-constraint field-name="a"> 
-<or-restriction-connective><literal-restriction evaluator="==" value="3" />
-
-<literal-restriction evaluator="==" value="4" />
-
-
-</or-restriction-connective>
-</field-constraint>
-<field-constraint field-name="a3"> 
-<literal-restriction evaluator="==" value="hello" />
-
-</field-constraint>
-<field-constraint field-name="a4"> 
-<literal-restriction evaluator="==" value="null" />
-
-</field-constraint>
-
-
-</pattern>
-
-<pattern identifier="foo4" object-type="Bar" >
-<field-binding field-name="a" identifier="a4" />
-
-<field-constraint field-name="a"> 
-<literal-restriction evaluator="!=" value="4" />
-<literal-restriction evaluator="!=" value="5" />
-
-</field-constraint>
-
-
-</pattern>
-
-<pattern identifier="foo5" object-type="Bar" >
-<field-constraint field-name="b"> 
-<or-restriction-connective><return-value-restriction evaluator="==" >a4 + 1</return-value-restriction>
-
-<variable-restriction evaluator="&gt;" identifier="a4" />
-
-
-</or-restriction-connective>
-</field-constraint>
-
-
-</pattern>
-
-<pattern identifier="foo6" object-type="Bar" >
-<field-binding field-name="a" identifier="a4" />
-
-<field-constraint field-name="b"> 
-<literal-restriction evaluator="==" value="6" />
-
-</field-constraint>
-
-
-</pattern>
-
-<pattern identifier="foo7" object-type="Bar" >
-<field-binding field-name="a" identifier="a4" />
-
-<field-binding field-name="b" identifier="b4" />
-
-
-
-</pattern>
-
-<pattern identifier="$cheeseList" object-type="ArrayList" >
-<field-constraint field-name="size"> 
-<literal-restriction evaluator="&gt;" value="2" />
-
-</field-constraint>
-
-
-<from> <collect><pattern object-type="Cheese" >
-<field-constraint field-name="type"> 
-<variable-restriction evaluator="==" identifier="$likes" />
-
-</field-constraint>
-
-
-</pattern>
- </collect> </from> </pattern>
-
-<pattern object-type="Baz" >
-
-
-</pattern>
-
-
-</lhs>
-
-<rhs>  if ( a == b ) {
-    assert( foo3 );
-  } else {
-    retract( foo4 );
-  } 
-  System.out.println( a4 );
-  testStaticMethod1();
-  testStaticMethod2();
-  testStaticMethod3();
-</rhs>
-
-
-</rule>
-
-<rule name="simple_rule2">
-<rule-attribute name="salience" value="(10 + a)" />
-<rule-attribute name="dialect" value="mvel" />
-
-<lhs><pattern identifier="foo4" object-type="Bar" >
-<field-binding field-name="a" identifier="a4" />
-
-<field-constraint field-name="a"> 
-<literal-restriction evaluator="!=" value="4" />
-<literal-restriction evaluator="!=" value="5" />
-
-</field-constraint>
-
-
-</pattern>
-
-
-</lhs><rhs>  if ( a == b ) {
-    assert( foo3 );
-  } else {
-    retract( foo4 );
-  } 
-  System.out.println( a4 );
-  testStaticMethod1();  
-  testStaticMethod2();
-  testStaticMethod3();  
-</rhs>
-</rule>
-</package>

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_accumulateall.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_accumulateall.drl	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_accumulateall.drl	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,79 +0,0 @@
-package org.drools.test;
-
-import org.drools.Cheese;
-import org.drools.Person;
-import org.drools.Cheesery;
-
-global java.util.List results;
-
-rule "AccumulateTest" salience 100
-    when
-    	$totalAmount : Integer() from accumulate( $cheese : Cheese( ),
-                                                  init( int total = 0; ),
-    	                                          action( total += $cheese.getPrice(); ),
-                                                  result( new Integer( total ) ) );
-    then
-        //System.out.println("Total amount = US$ "+$totalAmount );
-        results.add($totalAmount);
-end  
-
-rule "Accumulate with Bindings" salience 90
-    when
-        $person      : Person( name == "Bob", $likes : likes )
-    	$totalAmount : Integer() from accumulate( $cheese : Cheese( type == $likes ),
-                                                  init( int total = 0; ),
-   	                                          action( total += $cheese.getPrice(); ),
-                                                  result( new Integer( total ) ) );
-    then
-        //System.out.println($person.getName() +" will spend US$ "+ $totalAmount + " buying cheese");
-        results.add($totalAmount);
-end  
-
-rule "Constraints everywhere" salience 80
-    when
-        $person      : Person( $likes : likes )
-    	$cheesery    : Cheesery( totalAmount > 100 ) 
-    	                       from accumulate( $cheese : Cheese( type == $likes ),
-                                                init( Cheesery cheesery = new Cheesery(); ),
-    	                                        action( cheesery.addCheese( $cheese ); ),
-                                                result( cheesery ) );
-    then
-        //System.out.println($person.getName() +" is spending a lot buying cheese ( US$ "+$cheesery.getTotalAmount()+" )!");
-        results.add(new Integer($cheesery.getTotalAmount()));
-end  
-
-rule "Source pattern binds" salience 70
-    when
-        $person      : Person( name == "Bob", $likes : likes )
-    	$totalAmount : Integer() from accumulate( $cheese : Cheese( type == $likes, $price: price ),
-                                                  init( int total = 0; ),
-    	                                          action( total += $price; ),
-                                                  result( new Integer( total ) ) );
-    then
-        //System.out.println($person.getName() +" will spend US$ "+ $totalAmount + " buying cheese");
-        results.add($totalAmount);
-end
-
-rule "Accumulate with previous Bindings" salience 60
-    when
-        $person      : Person( name == "Bob", $likes : likes, $age : age )
-    	$totalAmount : Integer() from accumulate( $cheese : Cheese( type == $likes, $price : price ),
-                                                  init( int total = $age * 10; ),
-   	                                              action( total += $price; ),
-                                                  result( new Integer( total ) ) );
-    then
-        results.add($totalAmount);
-end  
-
-
-rule "External Function" salience 80
-    when
-        $person : Person( $likes : likes )
-    	$max    : Number( intValue >= 5 ) 
-    	                       from accumulate( $cheese : Cheese( type == $likes, $price : price ),
-                                                max( $price ) );
-    then
-        results.add( $max );
-end  
-
-

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,83 +0,0 @@
-package rules;
-
-
-import pt.inescporto.cec.entities.SetupUse;
-import pt.inescporto.cec.entities.SetupInUse;
-import pt.inescporto.cec.entities.Parameter;
-import pt.inescporto.cec.entities.OrdemFabrico;
-import pt.inescporto.cec.entities.AccaoInspeccao;
-import pt.inescporto.cec.entities.AccaoInspeccaoOperacao;
-import pt.inescporto.cec.entities.MelhorEmNaoConformidades;
-import pt.inescporto.cec.entities.OtherInspectionMethod;
-import pt.inescporto.cec.entities.BestParms;
-
-
-rule "ruleBestProductionOrderCreator"
-when
-		AccaoInspeccao( artigoID == 3 , $operID: operacaoID , $resourceID: recursoID, $ProdOrderID: ordemProducaoID, $IAID: accaoInspeccaoID  )
-		AccaoInspeccaoOperacao( inspectionActionID == $IAID, $tmp: inspAccaoOperacaoID  )
-		OtherInspectionMethod(inspActionOperacaoID == $tmp, $NCNumber: numeroNaoConformidades   )
-		not (MelhorEmNaoConformidades( operacaoID == $operID, recursoID == $resourceID ) ) 
-	then
-		insert(new MelhorEmNaoConformidades($ProdOrderID,$NCNumber,$operID,$resourceID));
-end
-	
-rule "ruleBestProductionOrderChecker"
-when
-		AccaoInspeccao( artigoID ==3 , $operID: operacaoID, $resourceID: recursoID, $ProdOrderID: ordemProducaoID, $IAID: accaoInspeccaoID  )
-		AccaoInspeccaoOperacao( inspectionActionID == $IAID, $tmp: inspAccaoOperacaoID  )
-		OtherInspectionMethod( inspActionOperacaoID == $tmp, $NCNumber: numeroNaoConformidades   )
-		$t: MelhorEmNaoConformidades( operacaoID == $operID, recursoID == $resourceID, numeroDefeitos > $NCNumber )
-	then
-		$t.setNumeroDefeitos($NCNumber);
-		$t.setOrdemProducaoID($ProdOrderID);
-		update($t);
-end
-
-rule "ruleBestParametersCreator"
-salience -100
-when
-	MelhorEmNaoConformidades($poID: ordemProducaoID, $nonConformities: numeroDefeitos )	
-	SetupInUse( $setup: setupUseID , productionOrderID == $poID )
-	p: Parameter( $parID: parameterID,  setupUseID == $setup )
-	not (BestParms( parameterID == $parID ))
-then
-	BestParms newBest=new BestParms();
-	newBest.setParameterID($parID);
-	newBest.setNominalValue(new Float(p.getNominalValue()));
-	newBest.setMaxLimit(new Float(p.getMaxLimit()));
-	newBest.setMinLimit(new Float(p.getMinLimit()));
-	newBest.setMaxLimitAlarm(new Float(p.getMaxLimitAlarm()));
-	newBest.setMinLimitAlarm(new Float(p.getMinLimitAlarm()));
-	newBest.setNonConformities($nonConformities);
-	insert(newBest);
-end
-
-rule "ruleBestParametersChecker"
-salience -10
-when
-	MelhorEmNaoConformidades($poID: ordemProducaoID, $NC: numeroDefeitos )	
-	SetupInUse( $setup: setupUseID , productionOrderID == $poID )
-	p: Parameter( $parID: parameterID,  setupUseID == $setup )
-	newBest: BestParms( parameterID == $parID, nonConformities > $NC )
-then
-	newBest.setNominalValue(new Float(p.getNominalValue()));
-	newBest.setMaxLimit(new Float(p.getMaxLimit()));
-	newBest.setMinLimit(new Float(p.getMinLimit()));
-	newBest.setMaxLimitAlarm(new Float(p.getMaxLimitAlarm()));
-	newBest.setMinLimitAlarm(new Float(p.getMinLimitAlarm()));
-	newBest.setNonConformities($NC);
-	update(newBest);
-end
-
-rule "print"
-salience -20
-when 
-	bp: BestParms(  )
-then
-	System.out.println("Parameter: "+bp.getParameterID()+" Value: "+bp.getNominalValue()+" NC: "+bp.getNonConformities());
-end
-
-query "get results"
-		mnc: BestParms(  )
-end
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_from.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_from.drl	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_from.drl	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,25 +0,0 @@
-package org.drools.test;
- 
-import org.drools.Cheese;
-import org.drools.Cheesery;
-import java.util.List;
-
-global List list1;
-global List list2;
-global List list3;
-global Cheesery cheesery;
-
-rule "test from using a global"
-	when
-		$cheese : Cheese() from cheesery.getCheeses()		
-	then
-		list1.add( $cheese );
-end
-
-rule "test from using a global against a map lookup"
-	when
-	    Person( $stilton : type == "stilton" )
-		$cheese : Cheese( type == $stilton ) from cheesery.getCheeseMap["stilton"]	
-	then
-		list1.add( $cheese );
-end

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_simplerule.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_simplerule.drl	2007-12-10 03:38:35 UTC (rev 17141)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_simplerule.drl	2007-12-10 03:39:41 UTC (rev 17142)
@@ -1,15 +0,0 @@
-package foo;
-
-rule "simple_rule" 
-  when
-    foo3 : Bar(a==3)
-    foo4 : Bar(a4:a==4)
-    Baz()
-  then
-  if ( a == b ) {
-    assert( foo3 );
-  } else {
-    retract( foo4 );
-  } 
-  System.out.println( a4 );
-end
\ No newline at end of file




More information about the jboss-svn-commits mailing list