[jboss-svn-commits] JBL Code SVN: r18319 - in labs/jbossrules/trunk: documentation and 43 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 5 13:38:52 EST 2008


Author: mark.proctor at jboss.com
Date: 2008-02-05 13:38:51 -0500 (Tue, 05 Feb 2008)
New Revision: 18319

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java
Removed:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
Modified:
   labs/jbossrules/trunk/documentation/manual/en/master.xml
   labs/jbossrules/trunk/documentation/pom.xml
   labs/jbossrules/trunk/drools-analytics/.classpath
   labs/jbossrules/trunk/drools-analytics/pom.xml
   labs/jbossrules/trunk/drools-ant/.classpath
   labs/jbossrules/trunk/drools-ant/.project
   labs/jbossrules/trunk/drools-ant/pom.xml
   labs/jbossrules/trunk/drools-clips/.classpath
   labs/jbossrules/trunk/drools-clips/pom.xml
   labs/jbossrules/trunk/drools-compiler/.classpath
   labs/jbossrules/trunk/drools-compiler/.project
   labs/jbossrules/trunk/drools-compiler/pom.xml
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/commons/jci/compilers/EclipseJavaCompiler.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/lang/descr/FunctionDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.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/java/PackageStore.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/rule/builder/dialect/mvel/MVELEvalBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl
   labs/jbossrules/trunk/drools-core/.classpath
   labs/jbossrules/trunk/drools-core/pom.xml
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DroolsClassLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LineMappings.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PackageCompilationDataTest.java
   labs/jbossrules/trunk/drools-decisiontables/.classpath
   labs/jbossrules/trunk/drools-decisiontables/.project
   labs/jbossrules/trunk/drools-decisiontables/pom.xml
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-feature/feature.xml
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-test-feature/feature.xml
   labs/jbossrules/trunk/drools-eclipse/pom.xml
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl
   labs/jbossrules/trunk/drools-examples/drools-insurance/pom.xml
   labs/jbossrules/trunk/drools-jbrms/.classpath
   labs/jbossrules/trunk/drools-jbrms/.project
   labs/jbossrules/trunk/drools-jbrms/pom.xml
   labs/jbossrules/trunk/drools-jsr94/.classpath
   labs/jbossrules/trunk/drools-jsr94/.project
   labs/jbossrules/trunk/drools-jsr94/pom.xml
   labs/jbossrules/trunk/drools-repository/.classpath
   labs/jbossrules/trunk/drools-repository/pom.xml
   labs/jbossrules/trunk/drools-server/pom.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-core/pom.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml
   labs/jbossrules/trunk/drools-solver/pom.xml
   labs/jbossrules/trunk/pom.xml
Log:
JBRULES-1450 De-couple drools-core from the java dialect's PackageCompilationData
-Initial de-coupling attempt
-also updated to mvel 2.0 alpha 2

Modified: labs/jbossrules/trunk/documentation/manual/en/master.xml
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/master.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/documentation/manual/en/master.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
 
     <subtitle>Drools Documentation</subtitle>
 
-    <releaseinfo>4.1.0.SNAPSHOT</releaseinfo>
+    <releaseinfo>5.0.0.SNAPSHOT</releaseinfo>
 
     <author>
       <firstname>Mark</firstname>

Modified: labs/jbossrules/trunk/documentation/pom.xml
===================================================================
--- labs/jbossrules/trunk/documentation/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/documentation/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-    <version>4.1.0.SNAPSHOT</version>
+    <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-documentation</artifactId>

Modified: labs/jbossrules/trunk/drools-analytics/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-analytics/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-analytics/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,13 +5,13 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="src" path="/drools-compiler"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
+  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
-  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
   <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
+  <classpathentry kind="src" path="/drools-compiler"/>
+  <classpathentry kind="src" path="/drools-core"/>
   <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="src" path="/drools-core"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-analytics/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-analytics/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-analytics/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	  <version>4.1.0.SNAPSHOT</version>
+	  <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-analytics</artifactId>

Modified: labs/jbossrules/trunk/drools-ant/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-ant/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-ant/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,17 +5,17 @@
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
   <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
   <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
+  <classpathentry kind="var" path="M2_REPO/ant/ant/1.6.5/ant-1.6.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/ant/ant-nodeps/1.6.5/ant-nodeps-1.6.5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
   <classpathentry kind="src" path="/drools-compiler"/>
+  <classpathentry kind="src" path="/drools-core"/>
   <classpathentry kind="src" path="/drools-analytics"/>
-  <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
   <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/ant/ant/1.6.5/ant-1.6.5.jar"/>
   <classpathentry kind="src" path="/drools-decisiontables"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-ant/.project
===================================================================
--- labs/jbossrules/trunk/drools-ant/.project	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-ant/.project	2008-02-05 18:38:51 UTC (rev 18319)
@@ -3,8 +3,8 @@
   <comment>A rule production system</comment>
   <projects>
     <project>drools-compiler</project>
+    <project>drools-core</project>
     <project>drools-analytics</project>
-    <project>drools-core</project>
     <project>drools-decisiontables</project>
   </projects>
   <buildSpec>

Modified: labs/jbossrules/trunk/drools-ant/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-ant/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-ant/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -2,7 +2,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-    <version>4.1.0.SNAPSHOT</version>
+    <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>

Modified: labs/jbossrules/trunk/drools-clips/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-clips/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-clips/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -6,10 +6,10 @@
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
   <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
   <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="src" path="/drools-compiler"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
   <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="src" path="/drools-compiler"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-clips/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-clips/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-clips/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	  <version>4.1.0.SNAPSHOT</version>
+	  <version>5.0.0.SNAPSHOT</version>
   </parent>${project.version}
 
   <artifactId>drools-clips</artifactId>

Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,12 +5,12 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
   <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="src" path="/drools-core"/>
+  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
   <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
-  <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/.project
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.project	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/.project	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,7 +1,9 @@
 <projectDescription>
   <name>drools-compiler</name>
   <comment>A rule production system</comment>
-  <projects/>
+  <projects>
+    <project>drools-core</project>
+  </projects>
   <buildSpec>
     <buildCommand>
       <name>org.eclipse.jdt.core.javabuilder</name>

Modified: labs/jbossrules/trunk/drools-compiler/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	  <version>4.1.0.SNAPSHOT</version>
+	  <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-compiler</artifactId>

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/commons/jci/compilers/EclipseJavaCompiler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/commons/jci/compilers/EclipseJavaCompiler.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/commons/jci/compilers/EclipseJavaCompiler.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -225,7 +225,7 @@
                 
                 final String resourceName = ClassUtils.convertClassToResourcePath(pClazzName);
                 
-                final byte[] clazzBytes = pStore.read(pClazzName);
+                final byte[] clazzBytes = pStore.read( resourceName );
                 if (clazzBytes != null) {
                     final char[] fileName = pClazzName.toCharArray();
                     try {

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	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -306,7 +306,10 @@
 
                 // iterate and compile
                 for ( final Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) {
-                    addFunction( (FunctionDescr) it.next() );
+                    // inherit the dialect from the package
+                    FunctionDescr functionDescr = (FunctionDescr) it.next();
+                    functionDescr.setDialect( this.dialect.getId() );
+                    addFunction(  functionDescr );
                 }
 
                 // We need to compile all the functions, so scripting languages like mvel can find them
@@ -326,11 +329,11 @@
         }
 
         this.dialectRegistry.compileAll();
+        
+        
 
         // some of the rules and functions may have been redefined
-        if ( this.pkg.getPackageCompilationData().isDirty() ) {
-            this.pkg.getPackageCompilationData().reload();
-        }
+        this.pkg.getDialectDatas().reloadDirty();
         this.results = this.dialectRegistry.addResults( this.results );
     }
 
@@ -470,8 +473,8 @@
      * Compiled packages are serializable.
      */
     public Package getPackage() {
-        if ( this.pkg != null && this.pkg.getPackageCompilationData() != null && this.pkg.getPackageCompilationData().isDirty() ) {
-            this.pkg.getPackageCompilationData().reload();
+        if ( this.pkg != null ) {
+            this.pkg.getDialectDatas().reloadDirty();
         }
         if ( hasErrors() && this.pkg != null ) {
             this.pkg.setError( getErrors().toString() );

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	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -104,11 +104,8 @@
                 // we can only do this is this.pkg != null, as otherwise the dialects won't be properly initialised
                 // as the dialects are initialised when the pkg is  first created
                 this.packageBuilder.getDialectRegistry().compileAll();
-
-                // some of the rules and functions may have been redefined
-                if ( pkg.getPackageCompilationData().isDirty() ) {
-                    pkg.getPackageCompilationData().reload();
-                }
+                
+                pkg.getDialectDatas().reloadDirty();
             }
         }
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FunctionDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FunctionDescr.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FunctionDescr.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -20,31 +20,42 @@
 import java.util.Collections;
 import java.util.List;
 
-public class FunctionDescr extends BaseDescr {
+import org.drools.rule.Dialectable;
+
+public class FunctionDescr extends BaseDescr implements Dialectable {
     private static final long serialVersionUID = 400L;
 
     private final String      name;
     private final String      returnType;
+    private String      dialect;
 
-    private List              parameterTypes   = Collections.EMPTY_LIST;
-    private List              parameterNames   = Collections.EMPTY_LIST;
+    private List<String>      parameterTypes   = Collections.emptyList();
+    private List<String>      parameterNames   = Collections.emptyList();
 
-    private String            text;
+    private Object            content;
 
     private int               offset;
 
     private String            className;
 
     public FunctionDescr(final String name,
-                         final String returnType) {
+                         final String returnType ) {
         this.name = name;
         this.returnType = returnType;
     }
 
     public String getName() {
         return this.name;
+    }        
+    
+    public void setDialect(String dialect) {
+        this.dialect = dialect;
     }
 
+    public String getDialect() {
+        return this.dialect;
+    }
+
     public String getClassName() {
         return this.className;
     }
@@ -53,23 +64,23 @@
         this.className = className;
     }
 
-    public List getParameterNames() {
+    public List<String> getParameterNames() {
         return this.parameterNames;
     }
 
-    public List getParameterTypes() {
+    public List<String> getParameterTypes() {
         return this.parameterTypes;
     }
 
     public void addParameter(final String type,
                              final String name) {
         if ( this.parameterTypes == Collections.EMPTY_LIST ) {
-            this.parameterTypes = new ArrayList();
+            this.parameterTypes = new ArrayList<String>();
         }
         this.parameterTypes.add( type );
 
         if ( this.parameterNames == Collections.EMPTY_LIST ) {
-            this.parameterNames = new ArrayList();
+            this.parameterNames = new ArrayList<String>();
         }
         this.parameterNames.add( name );
     }
@@ -78,12 +89,12 @@
         return this.returnType;
     }
 
-    public void setText(final String text) {
-        this.text = text;
+    public void setContent(Object content) {
+        this.content = content;
     }
 
-    public String getText() {
-        return this.text;
+    public Object getContent() {
+        return this.content;
     }
 
     public int getOffset() {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -21,11 +21,13 @@
 import java.util.List;
 
 import org.drools.compiler.Dialect;
+import org.drools.rule.Dialectable;
 
-public class RuleDescr extends BaseDescr {
+public class RuleDescr extends BaseDescr implements Dialectable {
 
     private static final long serialVersionUID = 400L;
     private String            name;
+    private String            dialect;
     private String            documentation;
 
     private AndDescr          lhs;
@@ -54,6 +56,10 @@
     public String getName() {
         return this.name;
     }
+    
+    public String getDialect() {
+        return this.dialect;
+    }
 
     public String getSalience() {
         return salience;
@@ -83,6 +89,12 @@
         if ( this.attributes == Collections.EMPTY_LIST ) {
             this.attributes = new ArrayList();
         }
+        
+        if ( "dialect".equals( attribute.getName() ) ) {
+            // set dialect specifically as its to drive the build process.
+            this.dialect = attribute.getValue();
+        }
+        
         this.attributes.add( attribute );
     }
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -833,7 +833,7 @@
                                                         factTemplate.getFieldTemplateIndex( fieldName ) );
         } else {
             try {
-                ClassLoader classloader = context.getPkg().getPackageCompilationData().getClassLoader();
+                ClassLoader classloader = context.getPkg().getDialectDatas().getClassLoader();
                 extractor = context.getDialect().getClassFieldExtractorCache().getExtractor( ((ClassObjectType) objectType).getClassType(),
                                                                                              fieldName,
                                                                                              classloader );

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -24,7 +24,7 @@
                                              0, // offset is 0 by default
                                              objectType,
                                              null );
-        ClassLoader classloader = context.getPkg().getPackageCompilationData().getClassLoader();
+        ClassLoader classloader = context.getPkg().getDialectDatas().getClassLoader();
         final FieldExtractor extractor = context.getDialect().getClassFieldExtractorCache().getExtractor( DroolsQuery.class,
                                                                                                           "name",
                                                                                                           classloader );

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -84,6 +84,10 @@
                        ruleDescr.getAttributes() );
         
         init(configuration, pkg, ruleDescr, dialectRegistry, defaultDialect, this.rule );
+        
+        if ( this.rule.getDialect() == null ) {
+            this.rule.setDialect( getDialect().getId() );
+        }
 
         getDialect().init( ruleDescr );
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -33,7 +33,7 @@
 import org.drools.rule.builder.dialect.java.parser.JavaModifyBlockDescr;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
 import org.drools.spi.PatternExtractor;
-import org.mvel.ExecutableStatement;
+import org.mvel.compiler.ExecutableStatement;
 
 /**
  * @author etirelli

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	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -42,6 +42,8 @@
 import org.drools.lang.descr.QueryDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.EntryPoint;
+import org.drools.rule.Function;
+import org.drools.rule.JavaDialectData;
 import org.drools.rule.LineMappings;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
@@ -80,23 +82,23 @@
 
     private final static String               EXPRESSION_DIALECT_NAME     = "MVEL";
     // builders
-    private final PatternBuilder              pattern                     = new PatternBuilder();
-    private final QueryBuilder                query                       = new QueryBuilder();
-    private final SalienceBuilder             salience                    = new MVELSalienceBuilder();
-    private final JavaAccumulateBuilder       accumulate                  = new JavaAccumulateBuilder();
-    private final JavaEvalBuilder             eval                        = new JavaEvalBuilder();
-    private final JavaPredicateBuilder        predicate                   = new JavaPredicateBuilder();
-    private final JavaReturnValueBuilder      returnValue                 = new JavaReturnValueBuilder();
-    private final JavaConsequenceBuilder      consequence                 = new JavaConsequenceBuilder();
-    private final JavaActionBuilder           actionBuilder               = new JavaActionBuilder();
-    private final ReturnValueEvaluatorBuilder returnValueEvaluatorBuilder = new JavaReturnValueEvaluatorBuilder();
-    private final JavaRuleClassBuilder        ruleClassBuilder            = new JavaRuleClassBuilder();
-    private final JavaProcessClassBuilder     processClassBuilder         = new JavaProcessClassBuilder();
-    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 EntryPointBuilder        entrypoint              = new EntryPointBuilder();
+    private static final PatternBuilder              pattern                     = new PatternBuilder();
+    private static final QueryBuilder                query                       = new QueryBuilder();
+    private static final SalienceBuilder             salience                    = new MVELSalienceBuilder();
+    private static final JavaAccumulateBuilder       accumulate                  = new JavaAccumulateBuilder();
+    private static final JavaEvalBuilder             eval                        = new JavaEvalBuilder();
+    private static final JavaPredicateBuilder        predicate                   = new JavaPredicateBuilder();
+    private static final JavaReturnValueBuilder      returnValue                 = new JavaReturnValueBuilder();
+    private static final JavaConsequenceBuilder      consequence                 = new JavaConsequenceBuilder();
+    private static final JavaActionBuilder           actionBuilder               = new JavaActionBuilder();
+    private static final ReturnValueEvaluatorBuilder returnValueEvaluatorBuilder = new JavaReturnValueEvaluatorBuilder();
+    private static final JavaRuleClassBuilder        ruleClassBuilder            = new JavaRuleClassBuilder();
+    private static final JavaProcessClassBuilder     processClassBuilder         = new JavaProcessClassBuilder();
+    private static final MVELFromBuilder             from                        = new MVELFromBuilder();
+    private static final JavaFunctionBuilder         function                    = new JavaFunctionBuilder();
+    private static final CollectBuilder              collect                     = new CollectBuilder();
+    private static final ForallBuilder               forall                      = new ForallBuilder();
+    private static final EntryPointBuilder           entrypoint                  = new EntryPointBuilder();
 
     //
     private KnowledgeHelperFixer              knowledgeHelperFixer;
@@ -202,7 +204,9 @@
 
         this.generatedClassList = new ArrayList();
 
-        this.packageStoreWrapper = new PackageStore( pkg.getPackageCompilationData(),
+        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData( this.ID );
+
+        this.packageStoreWrapper = new PackageStore( data,
                                                      this.results );
     }
 
@@ -213,16 +217,16 @@
                                                          "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.getName(),
+                                                                 "java",
+                                                                 "Process",
+                                                                 this.src );
         processDescr.setClassName( StringUtils.ucFirst( processDescrClassName ) );
-    }      
+    }
 
     public String getExpressionDialectName() {
         return EXPRESSION_DIALECT_NAME;
@@ -374,7 +378,7 @@
         final CompilationResult result = this.compiler.compile( classes,
                                                                 this.src,
                                                                 this.packageStoreWrapper,
-                                                                this.pkg.getPackageCompilationData().getClassLoader() );
+                                                                this.pkg.getDialectDatas().getClassLoader() );
 
         //this will sort out the errors based on what class/file they happened in
         if ( result.getErrors().length > 0 ) {
@@ -437,6 +441,8 @@
                                                    rule,
                                                    "Rule Compilation error" ) );
 
+        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData( this.ID );
+
         for ( final Iterator it = context.getInvokers().keySet().iterator(); it.hasNext(); ) {
             final String className = (String) it.next();
 
@@ -444,8 +450,8 @@
             // If so we add it to the PackageCompilationData as it will get wired up on compilation
             final Object invoker = context.getInvokerLookups().get( className );
             if ( invoker != null ) {
-                this.pkg.getPackageCompilationData().putInvoker( className,
-                                                                 invoker );
+                data.putInvoker( className,
+                                 invoker );
             }
             final String text = (String) context.getInvokers().get( className );
 
@@ -466,8 +472,8 @@
         mapping.setStartLine( ruleDescr.getConsequenceLine() );
         mapping.setOffset( ruleDescr.getConsequenceOffset() );
 
-        context.getPkg().getPackageCompilationData().getLineMappings().put( name,
-                                                                            mapping );
+        this.pkg.getDialectDatas().getLineMappings().put( name,
+                                                          mapping );
 
     }
 
@@ -496,6 +502,8 @@
                                                       process,
                                                       "Process Compilation error" ) );
 
+        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData( this.ID );
+
         for ( final Iterator it = context.getInvokers().keySet().iterator(); it.hasNext(); ) {
             final String className = (String) it.next();
 
@@ -503,8 +511,8 @@
             // If so we add it to the PackageCompilationData as it will get wired up on compilation
             final Object invoker = context.getInvokerLookups().get( className );
             if ( invoker != null ) {
-                this.pkg.getPackageCompilationData().putInvoker( className,
-                                                                 invoker );
+                data.putInvoker( className,
+                                 invoker );
             }
             final String text = (String) context.getInvokers().get( className );
 
@@ -534,14 +542,17 @@
     public void addFunction(final FunctionDescr functionDescr,
                             final TypeResolver typeResolver) {
 
+        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData( this.ID );
         //System.out.println( functionDescr + " : " + typeResolver );
         final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
-        this.pkg.addFunction( functionDescr.getName() );
+        Function function = new Function( functionDescr.getName(),
+                                          this.ID );
+        this.pkg.addFunction( function );
 
         final String functionSrc = getFunctionBuilder().build( this.pkg,
                                                                functionDescr,
                                                                typeResolver,
-                                                               pkg.getPackageCompilationData().getLineMappings(),
+                                                               this.pkg.getDialectDatas().getLineMappings(),
                                                                this.results );
 
         addClassCompileTask( functionClassName,
@@ -554,8 +565,8 @@
         final LineMappings mapping = new LineMappings( functionClassName );
         mapping.setStartLine( functionDescr.getLine() );
         mapping.setOffset( functionDescr.getOffset() );
-        pkg.getPackageCompilationData().getLineMappings().put( functionClassName,
-                                                               mapping );
+        this.pkg.getDialectDatas().getLineMappings().put( functionClassName,
+                                                          mapping );
     }
 
     /**
@@ -636,7 +647,7 @@
                                             final ResourceReader src) {
         // replaces all non alphanumeric or $ chars with _
         String newName = prefix + "_" + name.replaceAll( "[[^\\w]$]",
-                                                    "_" );
+                                                         "_" );
 
         // make sure the class name does not exist, if it does increase the counter
         int counter = -1;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/PackageStore.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/PackageStore.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/PackageStore.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -19,25 +19,25 @@
 import java.util.List;
 
 import org.drools.commons.jci.stores.ResourceStore;
-import org.drools.rule.PackageCompilationData;
+import org.drools.rule.JavaDialectData;
 
 public class PackageStore
     implements
     ResourceStore {
-    private PackageCompilationData packageCompilationData;
+    private JavaDialectData packageCompilationData;
 
     private List                   errors;
 
     public PackageStore() {
     }
 
-    public PackageStore(final PackageCompilationData packageCompiationData,
+    public PackageStore(final JavaDialectData packageCompiationData,
                         final List errors) {
         this.packageCompilationData = packageCompiationData;
         this.errors = errors;
     }
 
-    public void setPackageCompilationData(final PackageCompilationData packageCompiationData) {
+    public void setPackageCompilationData(final JavaDialectData packageCompiationData) {
         this.packageCompilationData = packageCompiationData;
     }
 

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	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -63,8 +63,8 @@
 import org.drools.spi.DeclarationScopeResolver;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.util.StringUtils;
-import org.mvel.AbstractParser;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 import org.mvel.ParserContext;
 import org.mvel.optimizers.OptimizerFactory;
@@ -74,33 +74,33 @@
     implements
     Dialect {
 
-    public final static String           ID                      = "mvel";
+    public final static String                    ID                          = "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 MVELReturnValueEvaluatorBuilder returnValueEvaluatorBuilder = new MVELReturnValueEvaluatorBuilder();
+    private static final PatternBuilder                  pattern                     = new PatternBuilder();
+    private static final QueryBuilder                    query                       = new QueryBuilder();
+    private static final MVELAccumulateBuilder           accumulate                  = new MVELAccumulateBuilder();
+    private static final SalienceBuilder                 salience                    = new MVELSalienceBuilder();
+    private static final MVELEvalBuilder                 eval                        = new MVELEvalBuilder();
+    private static final MVELPredicateBuilder            predicate                   = new MVELPredicateBuilder();
+    private static final MVELReturnValueBuilder          returnValue                 = new MVELReturnValueBuilder();
+    private static final MVELConsequenceBuilder          consequence                 = new MVELConsequenceBuilder();
+    private static final MVELActionBuilder               actionBuilder               = new MVELActionBuilder();
+    private static 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 EntryPointBuilder      entrypoint              = new EntryPointBuilder();
+    private static final MVELFromBuilder                 from                        = new MVELFromBuilder();
+    private static final JavaFunctionBuilder             function                    = new JavaFunctionBuilder();
+    private static final CollectBuilder                  collect                     = new CollectBuilder();
+    private static final ForallBuilder                   forall                      = new ForallBuilder();
+    private static final EntryPointBuilder               entrypoint                  = new EntryPointBuilder();
 
-    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;
@@ -212,7 +212,7 @@
 
         this.builders.put( FunctionDescr.class,
                            this.function );
-        
+
         this.builders.put( EntryPointDescr.class,
                            this.entrypoint );
     }
@@ -262,7 +262,7 @@
         mapping.setStartLine( ruleDescr.getConsequenceLine() );
         mapping.setOffset( ruleDescr.getConsequenceOffset() );
 
-        context.getPkg().getPackageCompilationData().getLineMappings().put( name,
+        context.getPkg().getDialectDatas().getLineMappings().put( name,
                                                                             mapping );
 
     }
@@ -308,7 +308,7 @@
         String methodName = staticImportEntry.substring( index + 1 );
 
         try {
-            Class cls = this.pkg.getPackageCompilationData().getClassLoader().loadClass( className );
+            Class cls = this.pkg.getDialectDatas().getClassLoader().loadClass( className );
             Method[] methods = cls.getDeclaredMethods();
             for ( int i = 0; i < methods.length; i++ ) {
                 if ( methods[i].getName().equals( methodName ) ) {
@@ -465,7 +465,7 @@
                                     (Class) globalTypes.get( identifier ) );
         }
 
-        if( otherInputVariables != null ) {
+        if ( otherInputVariables != null ) {
             for ( Iterator it = otherInputVariables.entrySet().iterator(); it.hasNext(); ) {
                 Entry entry = (Entry) it.next();
                 parserContext.addInput( (String) entry.getKey(),

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -35,7 +35,8 @@
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.RuleConditionBuilder;
 import org.drools.spi.DeclarationScopeResolver;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 import org.mvel.ParserContext;
 import org.mvel.util.ParseTools;
@@ -74,7 +75,7 @@
         try {
             final DroolsMVELFactory factory = new DroolsMVELFactory( context.getDeclarationResolver().getDeclarations(),
                                                                      null,
-                                                                     context.getPkg().getGlobals() );
+                                                                     context.getPkg().getGlobals() );            
 
             Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
                                                                                       evalDescr,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -28,7 +28,8 @@
 import org.antlr.runtime.RecognitionException;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.RuleBuildContext;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.ParserContext;
 import org.mvel.integration.impl.MapVariableResolver;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -32,7 +32,8 @@
 import org.drools.rule.builder.FromBuilder;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.spi.DataProvider;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 import org.mvel.ParserContext;
 import org.mvel.integration.impl.ClassImportResolverFactory;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -31,7 +31,8 @@
 import org.drools.rule.PredicateConstraint;
 import org.drools.rule.builder.PredicateBuilder;
 import org.drools.rule.builder.RuleBuildContext;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 import org.mvel.ParserContext;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -30,7 +30,8 @@
 import org.drools.rule.ReturnValueRestriction;
 import org.drools.rule.builder.ReturnValueBuilder;
 import org.drools.rule.builder.RuleBuildContext;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 import org.mvel.ParserContext;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -9,7 +9,8 @@
 import org.drools.compiler.DescrBuildError;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.SalienceBuilder;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 import org.mvel.ParserContext;
 import org.mvel.integration.impl.ClassImportResolverFactory;

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -76,6 +76,7 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.EvalCondition;
 import org.drools.rule.GroupElement;
+import org.drools.rule.JavaDialectData;
 import org.drools.rule.LiteralConstraint;
 import org.drools.rule.Package;
 import org.drools.rule.Pattern;
@@ -190,7 +191,7 @@
 
         // Make sure the compiled classes are also removed
         assertEquals( 0,
-                      pkg.getPackageCompilationData().list().length );
+                      ((JavaDialectData)pkg.getDialectDatas().getDialectData( "java" )).list().length );
 
         builder.addPackage( packageDescr );
         

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -47,7 +47,7 @@
 import org.drools.spi.PatternExtractor;
 import org.drools.workflow.core.impl.WorkflowProcessImpl;
 import org.drools.workflow.core.node.ActionNode;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.ParserContext;
 
 public class JavaActionBuilderTest extends TestCase {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -44,7 +44,7 @@
 import org.drools.spi.ObjectType;
 import org.drools.spi.PatternExtractor;
 import org.drools.workflow.core.node.ActionNode;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.ParserContext;
 
 public class MVELActionBuilderTest extends TestCase {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -38,7 +38,7 @@
 import org.drools.rule.builder.RuleBuilder;
 import org.drools.spi.ObjectType;
 import org.drools.spi.PatternExtractor;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.ParserContext;
 
 public class MVELConsequenceBuilderTest extends TestCase {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -44,7 +44,7 @@
 import org.drools.spi.ObjectType;
 import org.drools.spi.PatternExtractor;
 import org.drools.workflow.core.node.ActionNode;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.ParserContext;
 
 public class MVELDecisionBuilderTest extends TestCase {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -6,7 +6,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 import org.mvel.ParserContext;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl	2008-02-05 18:38:51 UTC (rev 18319)
@@ -17,6 +17,7 @@
         results.add($totalAmount);
 end  
 
+
 rule "Accumulate with Bindings" salience 90
 	dialect "mvel"
     when
@@ -64,5 +65,4 @@
                                                   result( total ) );
     then
         results.add($totalAmount);
-end  
-
+end 
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -6,7 +6,7 @@
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
   <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
   <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-core/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-    <version>4.1.0.SNAPSHOT</version>
+    <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-core</artifactId>

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -4,7 +4,7 @@
 
 import org.drools.base.mvel.DroolsMVELKnowledgeHelper;
 import org.drools.spi.KnowledgeHelper;
-import org.mvel.ASTNode;
+import org.mvel.ast.ASTNode;
 import org.mvel.ast.WithNode;
 import org.mvel.integration.Interceptor;
 import org.mvel.integration.VariableResolverFactory;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -27,8 +27,8 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.spi.Extractor;
 import org.drools.spi.FieldExtractor;
-import org.mvel.CompiledExpression;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.CompiledExpression;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.MVEL;
 
 /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -237,7 +237,7 @@
                          new DroolsMVELLocalDeclarationVariable( (Declaration) this.localDeclarations.get( name ),
                                                                  this ) );
             return true;
-        } else if ( this.globals.containsKey( name ) ) {
+        } else if ( this.workingMemory.getGlobal( name ) != null ) {
             addResolver( name,
                          new DroolsMVELGlobalVariable( name,
                                                        (Class) this.globals.get( name ),

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -4,7 +4,7 @@
 
 import org.drools.WorkingMemory;
 import org.drools.spi.Action;
-import org.mvel.CompiledExpression;
+import org.mvel.compiler.CompiledExpression;
 import org.mvel.MVEL;
 import org.mvel.debug.DebugTools;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
 import org.drools.WorkingMemory;
 import org.drools.spi.Consequence;
 import org.drools.spi.KnowledgeHelper;
-import org.mvel.CompiledExpression;
+import org.mvel.compiler.CompiledExpression;
 import org.mvel.MVEL;
 import org.mvel.debug.DebugTools;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -4,7 +4,7 @@
 
 import org.drools.WorkingMemory;
 import org.drools.spi.ReturnValueEvaluator;
-import org.mvel.CompiledExpression;
+import org.mvel.compiler.CompiledExpression;
 import org.mvel.MVEL;
 import org.mvel.debug.DebugTools;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -50,11 +50,12 @@
 import org.drools.objenesis.ObjenesisStd;
 import org.drools.process.core.Process;
 import org.drools.rule.CompositePackageClassLoader;
+import org.drools.rule.DialectDatas;
 import org.drools.rule.ImportDeclaration;
 import org.drools.rule.InvalidPatternException;
 import org.drools.rule.MapBackedClassLoader;
 import org.drools.rule.Package;
-import org.drools.rule.PackageCompilationData;
+import org.drools.rule.JavaDialectData;
 import org.drools.rule.Rule;
 import org.drools.spi.ExecutorServiceFactory;
 import org.drools.spi.FactHandleFactory;
@@ -91,9 +92,9 @@
 
     protected transient MapBackedClassLoader        classLoader;
 
-	private transient Objenesis                     objenesis;
+    private transient Objenesis                     objenesis;
 
-	/** The fact handle factory. */
+    /** The fact handle factory. */
     protected FactHandleFactory                     factHandleFactory;
 
     protected Map                                   globals;
@@ -117,8 +118,8 @@
     // lock for entire rulebase, used for dynamic updates
     protected final ReentrantLock                   lock                         = new ReentrantLock();
 
-    private int                                  additionsSinceLock;
-    private int                                  removalsSinceLock;
+    private int                                     additionsSinceLock;
+    private int                                     removalsSinceLock;
 
     /**
      * Default constructor - for Externalizable. This should never be used by a user, as it
@@ -161,8 +162,8 @@
         this.processes = new HashMap();
         this.globals = new HashMap();
         this.statefulSessions = new ObjectHashSet();
-		this.objenesis = createObjenesis();
-	}
+        this.objenesis = createObjenesis();
+    }
 
     // ------------------------------------------------------------
     // Instance methods
@@ -200,7 +201,7 @@
      *
      */
     public void doReadExternal(final ObjectInput stream) throws IOException,
-                                                      ClassNotFoundException {
+                                                        ClassNotFoundException {
         // PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
         this.pkgs = (Map) stream.readObject();
 
@@ -215,10 +216,10 @@
         }
 
         this.packageClassLoader.addClassLoader( this.classLoader );
-		this.objenesis = createObjenesis();
+        this.objenesis = createObjenesis();
 
-		for ( final Iterator it = this.pkgs.values().iterator(); it.hasNext(); ) {
-            this.packageClassLoader.addClassLoader( ((Package) it.next()).getPackageCompilationData().getClassLoader() );
+        for ( final Iterator it = this.pkgs.values().iterator(); it.hasNext(); ) {
+            this.packageClassLoader.addClassLoader( ((Package) it.next()).getDialectDatas().getClassLoader() );
         }
 
         // Return the rules stored as a byte[]
@@ -243,15 +244,15 @@
         this.statefulSessions = new ObjectHashSet();
     }
 
-	/**
-	 * Creates Objenesis instance for the RuleBase. 
-	 * @return a standart Objenesis instanse with caching turned on.
-	 */
-	protected Objenesis createObjenesis() {
-		return new ObjenesisStd(true);
-	}
+    /**
+     * Creates Objenesis instance for the RuleBase. 
+     * @return a standart Objenesis instanse with caching turned on.
+     */
+    protected Objenesis createObjenesis() {
+        return new ObjenesisStd( true );
+    }
 
-	/**
+    /**
      * @return the id
      */
     public String getId() {
@@ -272,7 +273,7 @@
 
     public synchronized void disposeStatefulSession(final StatefulSession statefulSession) {
         this.statefulSessions.remove( statefulSession );
-        for( Iterator it = statefulSession.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
+        for ( Iterator it = statefulSession.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
             this.removeEventListener( (RuleBaseEventListener) it.next() );
         }
     }
@@ -428,7 +429,7 @@
                 }
             }
 
-            this.packageClassLoader.addClassLoader( newPkg.getPackageCompilationData().getClassLoader() );
+            this.packageClassLoader.addClassLoader( newPkg.getDialectDatas().getClassLoader() );
 
             this.eventSupport.fireAfterPackageAdded( newPkg );
 
@@ -451,29 +452,9 @@
         final Map globals = pkg.getGlobals();
         final Map<String, ImportDeclaration> imports = pkg.getImports();
 
-        // First update the binary files
-        // @todo: this probably has issues if you add classes in the incorrect order - functions, rules, invokers.
-        final PackageCompilationData compilationData = pkg.getPackageCompilationData();
-        final PackageCompilationData newCompilationData = newPkg.getPackageCompilationData();
-        final String[] files = newCompilationData.list();
-        for ( int i = 0, length = files.length; i < length; i++ ) {
-            compilationData.write( files[i],
-                                   newCompilationData.read( files[i] ) );
-        }
-
         // Merge imports
         imports.putAll( newPkg.getImports() );
 
-        // Add invokers
-        compilationData.putAllInvokers( newCompilationData.getInvokers() );
-
-        if ( compilationData.isDirty() ) {
-            if ( this.reloadPackageCompilationData == null ) {
-                this.reloadPackageCompilationData = new ReloadPackageCompilationData();
-            }
-            this.reloadPackageCompilationData.addPackageCompilationData( compilationData );
-        }
-
         // Add globals
         for ( final Iterator it = newPkg.getGlobals().keySet().iterator(); it.hasNext(); ) {
             final String identifier = (String) it.next();
@@ -503,6 +484,13 @@
                 pkg.addRuleFlow( flow );
             }
         }
+
+        pkg.getDialectDatas().merge( newPkg.getDialectDatas() );
+
+        if ( this.reloadPackageCompilationData == null ) {
+            this.reloadPackageCompilationData = new ReloadPackageCompilationData();
+        }
+        this.reloadPackageCompilationData.addDialectDatas( pkg.getDialectDatas() );
     }
 
     private synchronized void addRule(final Package pkg,
@@ -544,7 +532,7 @@
                                 rules[i] );
                 }
 
-                this.packageClassLoader.removeClassLoader( pkg.getPackageCompilationData().getClassLoader() );
+                this.packageClassLoader.removeClassLoader( pkg.getDialectDatas().getClassLoader() );
 
                 // getting the list of referenced globals
                 final Set referencedGlobals = new HashSet();
@@ -604,15 +592,13 @@
             }
             this.removalsSinceLock++;
 
-            PackageCompilationData compilationData = null;
-
             removeRule( pkg,
                         rule );
-            compilationData = pkg.removeRule( rule );
+            pkg.removeRule( rule );
             if ( this.reloadPackageCompilationData == null ) {
                 this.reloadPackageCompilationData = new ReloadPackageCompilationData();
             }
-            this.reloadPackageCompilationData.addPackageCompilationData( compilationData );
+            this.reloadPackageCompilationData.addDialectDatas( pkg.getDialectDatas() );
 
             // only unlock if it had been acquired implicitely
             if ( doUnlock ) {
@@ -643,15 +629,16 @@
             this.eventSupport.fireBeforeFunctionRemoved( pkg,
                                                          functionName );
 
-            final PackageCompilationData compilationData = pkg.removeFunction( functionName );
-            if ( compilationData == null ) {
+            if ( !pkg.getFunctions().containsKey( functionName ) ) {
                 throw new IllegalArgumentException( "function name '" + packageName + "' does not exist in the Package '" + packageName + "'." );
             }
 
+            pkg.removeFunction( functionName );
+
             if ( this.reloadPackageCompilationData == null ) {
                 this.reloadPackageCompilationData = new ReloadPackageCompilationData();
             }
-            this.reloadPackageCompilationData.addPackageCompilationData( compilationData );
+            this.reloadPackageCompilationData.addDialectDatas( pkg.getDialectDatas() );
 
             this.eventSupport.fireAfterFunctionRemoved( pkg,
                                                         functionName );
@@ -680,11 +667,11 @@
         return process;
     }
 
-	public Objenesis getObjenesis() {
-		return objenesis;
-	}
+    public Objenesis getObjenesis() {
+        return objenesis;
+    }
 
-	protected synchronized void addStatefulSession(final StatefulSession statefulSession) {
+    protected synchronized void addStatefulSession(final StatefulSession statefulSession) {
         this.statefulSessions.add( statefulSession );
     }
 
@@ -726,15 +713,15 @@
 
         synchronized ( this.pkgs ) {
             ((InternalWorkingMemory) session).setRuleBase( this );
-            ((InternalWorkingMemory) session).setId( ( nextWorkingMemoryCounter() ) );
+            ((InternalWorkingMemory) session).setId( (nextWorkingMemoryCounter()) );
 
-            ExecutorService executor = ExecutorServiceFactory.createExecutorService(  this.config.getExecutorService() );
+            ExecutorService executor = ExecutorServiceFactory.createExecutorService( this.config.getExecutorService() );
 
             executor.setCommandExecutor( new CommandExecutor( session ) );
 
             if ( keepReference ) {
                 addStatefulSession( session );
-                for( Iterator it = session.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
+                for ( Iterator it = session.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
                     addEventListener( (RuleBaseEventListener) it.next() );
                 }
             }
@@ -781,10 +768,10 @@
         // since the event support is thread-safe, no need for locks... right?
         return this.eventSupport.getEventListeners();
     }
-    
-    public boolean isEvent( Class clazz ) {
-        for( Package pkg : this.pkgs.values() ) {
-            if( pkg.isEvent( clazz ) ) {
+
+    public boolean isEvent(Class clazz) {
+        for ( Package pkg : this.pkgs.values() ) {
+            if ( pkg.isEvent( clazz ) ) {
                 return true;
             }
         }
@@ -797,18 +784,18 @@
         private static final long serialVersionUID = 1L;
         private Set               set;
 
-        public void addPackageCompilationData(final PackageCompilationData packageCompilationData) {
+        public void addDialectDatas(final DialectDatas dialectDatas) {
             if ( this.set == null ) {
                 this.set = new HashSet();
             }
 
-            this.set.add( packageCompilationData );
+            this.set.add( dialectDatas );
         }
 
         public void execute(final InternalRuleBase ruleBase) {
             for ( final Iterator it = this.set.iterator(); it.hasNext(); ) {
-                final PackageCompilationData packageCompilationData = (PackageCompilationData) it.next();
-                packageCompilationData.reload();
+                final DialectDatas dialectDatas = (DialectDatas) it.next();
+                dialectDatas.reloadDirty();
             }
         }
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -109,7 +109,6 @@
     /** The actual memory for the <code>JoinNode</code>s. */
     protected final NodeMemories                         nodeMemories;
 
-    
     protected final ObjectStore                          objectStore;
 
     protected Map                                        queryResults                                  = Collections.EMPTY_MAP;
@@ -126,10 +125,10 @@
 
     protected AgendaEventSupport                         agendaEventSupport                            = new AgendaEventSupport();
 
-    protected RuleFlowEventSupport                workflowEventSupport                          = new RuleFlowEventSupport();
-    
-    protected List                                  __ruleBaseEventListeners                      = new LinkedList();                      
+    protected RuleFlowEventSupport                       workflowEventSupport                          = new RuleFlowEventSupport();
 
+    protected List                                       __ruleBaseEventListeners                      = new LinkedList();
+
     /** The <code>RuleBase</code> with which this memory is associated. */
     protected transient InternalRuleBase                 ruleBase;
 
@@ -164,7 +163,7 @@
     private int                                          processCounter;
 
     private WorkItemManager                              workItemManager;
-    
+
     private Map<String, ProcessInstanceFactory>          processInstanceFactories                      = new HashMap();
 
     private TimeMachine                                  timeMachine                                   = new TimeMachine();
@@ -192,7 +191,7 @@
         this.globalResolver = new MapGlobalResolver();
         this.maintainTms = this.ruleBase.getConfiguration().isMaintainTms();
         this.sequential = this.ruleBase.getConfiguration().isSequential();
-        
+
         this.nodeMemories = new ConcurrentNodeMemories( this.ruleBase );
 
         if ( this.maintainTms ) {
@@ -200,11 +199,12 @@
         } else {
             this.tms = null;
         }
-        
+
         final RuleBaseConfiguration conf = this.ruleBase.getConfiguration();
-        
-        this.objectStore = new SingleThreadedObjectStore(conf, this.lock);        
 
+        this.objectStore = new SingleThreadedObjectStore( conf,
+                                                          this.lock );
+
         // Only takes effect if are using idententity behaviour for assert
         if ( conf.getLogicalOverride() == LogicalOverride.DISCARD ) {
             this.discardOnLogicalOverride = true;
@@ -213,8 +213,8 @@
         }
 
         this.workItemManager = new WorkItemManager( this );
-        this.processInstanceFactories.put(
-            RuleFlowProcess.RULEFLOW_TYPE, new RuleFlowProcessInstanceFactory());
+        this.processInstanceFactories.put( RuleFlowProcess.RULEFLOW_TYPE,
+                                           new RuleFlowProcessInstanceFactory() );
 
         this.typeConfMap = new HashMap<EntryPoint, Map<Object, ObjectTypeConf>>();
     }
@@ -519,7 +519,7 @@
     public Object getObject(final FactHandle handle) {
         return this.objectStore.getObjectForHandle( (InternalFactHandle) handle );
     }
-    
+
     public ObjectStore getObjectStore() {
         return this.objectStore;
     }
@@ -530,7 +530,7 @@
     public FactHandle getFactHandle(final Object object) {
         return this.objectStore.getHandleForObject( object );
     }
-    
+
     /**
      * @see WorkingMemory
      */
@@ -543,7 +543,7 @@
      * iteration may give unexpected results
      */
     public Iterator iterateObjects() {
-        return this.objectStore.iterateObjects( );
+        return this.objectStore.iterateObjects();
     }
 
     /**
@@ -741,7 +741,8 @@
                                                        typeConf.isEvent(),
                                                        duration,
                                                        this );
-            this.objectStore.addHandle( handle, object );
+            this.objectStore.addHandle( handle,
+                                        object );
             insert( entryPoint,
                     handle,
                     object,
@@ -753,7 +754,7 @@
         try {
             this.lock.lock();
             // check if the object already exists in the WM
-            handle = (InternalFactHandle) this.objectStore.getHandleForObject(object);
+            handle = (InternalFactHandle) this.objectStore.getHandleForObject( object );
 
             if ( this.maintainTms ) {
 
@@ -799,7 +800,8 @@
                                                                typeConf.isEvent(),
                                                                duration,
                                                                this );
-                    this.objectStore.addHandle( handle, object );
+                    this.objectStore.addHandle( handle,
+                                                object );
 
                     key = new EqualityKey( handle );
                     handle.setEqualityKey( key );
@@ -834,7 +836,8 @@
                                 // before replacing the object
                                 // and then re-add the handle. Otherwise we may
                                 // end up with a leak.
-                                this.objectStore.updateHandle( handle, object );
+                                this.objectStore.updateHandle( handle,
+                                                               object );
                             } else {
                                 Object oldObject = handle.getObject();
                                 if ( oldObject instanceof ShadowProxy ) {
@@ -854,7 +857,8 @@
                                                                        this );
                             handle.setEqualityKey( key );
                             key.addFactHandle( handle );
-                            this.objectStore.addHandle( handle, object );
+                            this.objectStore.addHandle( handle,
+                                                        object );
 
                         }
 
@@ -863,7 +867,8 @@
                                                                    typeConf.isEvent(),
                                                                    duration,
                                                                    this );
-                        this.objectStore.addHandle( handle, object );
+                        this.objectStore.addHandle( handle,
+                                                    object );
                         key.addFactHandle( handle );
                         handle.setEqualityKey( key );
 
@@ -894,7 +899,8 @@
                                                            typeConf.isEvent(),
                                                            duration,
                                                            this );
-                this.objectStore.addHandle( handle, object );
+                this.objectStore.addHandle( handle,
+                                            object );
 
             }
 
@@ -1105,23 +1111,23 @@
         }
     }
 
-//    private void addHandleToMaps(InternalFactHandle handle) {
-//        this.assertMap.put( handle,
-//                            handle,
-//                            false );
-//        if ( this.ruleBase.getConfiguration().getAssertBehaviour() == AssertBehaviour.EQUALITY ) {
-//            this.identityMap.put( handle,
-//                                  handle,
-//                                  false );
-//        }
-//    }
-//
-//    private void removeHandleFromMaps(final InternalFactHandle handle) {
-//        this.assertMap.remove( handle );
-//        if ( this.ruleBase.getConfiguration().getAssertBehaviour() == AssertBehaviour.EQUALITY ) {
-//            this.identityMap.remove( handle );
-//        }
-//    }
+    //    private void addHandleToMaps(InternalFactHandle handle) {
+    //        this.assertMap.put( handle,
+    //                            handle,
+    //                            false );
+    //        if ( this.ruleBase.getConfiguration().getAssertBehaviour() == AssertBehaviour.EQUALITY ) {
+    //            this.identityMap.put( handle,
+    //                                  handle,
+    //                                  false );
+    //        }
+    //    }
+    //
+    //    private void removeHandleFromMaps(final InternalFactHandle handle) {
+    //        this.assertMap.remove( handle );
+    //        if ( this.ruleBase.getConfiguration().getAssertBehaviour() == AssertBehaviour.EQUALITY ) {
+    //            this.identityMap.remove( handle );
+    //        }
+    //    }
 
     public void modifyRetract(final FactHandle factHandle) {
         modifyRetract( factHandle,
@@ -1349,7 +1355,8 @@
 
                 // set anyway, so that it updates the hashCodes
                 handle.setObject( object );
-                this.objectStore.addHandle( handle, object );
+                this.objectStore.addHandle( handle,
+                                            object );
             }
 
             if ( this.maintainTms ) {
@@ -1504,16 +1511,18 @@
     }
 
     public ProcessInstance startProcess(final String processId) {
-        return startProcess(processId, null);
+        return startProcess( processId,
+                             null );
     }
-    
-    public ProcessInstance startProcess(String processId, Map<String, Object> parameters) {
+
+    public ProcessInstance startProcess(String processId,
+                                        Map<String, Object> parameters) {
         final Process process = ((InternalRuleBase) getRuleBase()).getProcess( processId );
         if ( process == null ) {
             throw new IllegalArgumentException( "Unknown process ID: " + processId );
         }
-        ProcessInstanceFactory factory = processInstanceFactories.get(process.getType());
-        if (factory == null) {
+        ProcessInstanceFactory factory = processInstanceFactories.get( process.getType() );
+        if ( factory == null ) {
             throw new IllegalArgumentException( "Could not create process instance for type: " + process.getType() );
         }
         ProcessInstance processInstance = factory.createProcessInstance();
@@ -1522,9 +1531,10 @@
         processInstance.setId( ++processCounter );
         processInstances.put( new Long( processInstance.getId() ),
                               processInstance );
-        if (parameters != null) {
-            for (Map.Entry<String, Object> entry: parameters.entrySet()) {
-                processInstance.setVariable(entry.getKey(), entry.getValue());
+        if ( parameters != null ) {
+            for ( Map.Entry<String, Object> entry : parameters.entrySet() ) {
+                processInstance.setVariable( entry.getKey(),
+                                             entry.getValue() );
             }
         }
         getRuleFlowEventSupport().fireBeforeRuleFlowProcessStarted( processInstance,
@@ -1547,9 +1557,11 @@
     public void removeProcessInstance(ProcessInstance processInstance) {
         processInstances.remove( processInstance );
     }
-    
-    public void registerProcessInstanceFactory(String type, ProcessInstanceFactory processInstanceFactory) {
-        processInstanceFactories.put(type, processInstanceFactory);
+
+    public void registerProcessInstanceFactory(String type,
+                                               ProcessInstanceFactory processInstanceFactory) {
+        processInstanceFactories.put( type,
+                                      processInstanceFactory );
     }
 
     public WorkItemManager getWorkItemManager() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -10,6 +10,7 @@
 import java.util.HashMap;
 
 import org.drools.base.ClassFieldExtractorCache;
+import org.drools.rule.DialectDatas;
 import org.drools.rule.Package;
 
 public class DroolsObjectInputStream extends ObjectInputStream {
@@ -17,6 +18,7 @@
     private InternalRuleBase         ruleBase;
     private InternalWorkingMemory    workingMemory;
     private Package                  pkg;
+    private DialectDatas             dialectDatas;
     private ClassFieldExtractorCache extractorFactory;
 
     /** table mapping primitive type names to corresponding class objects */
@@ -107,8 +109,16 @@
 
     public void setPackage(Package pkg) {
         this.pkg = pkg;
+    }      
+
+    public DialectDatas getDialectDatas() {
+        return this.dialectDatas;
     }
 
+    public void setDialectDatas(DialectDatas dialectDatas) {
+        this.dialectDatas = dialectDatas;
+    }
+
     public ClassFieldExtractorCache getExtractorFactory() {
         return extractorFactory;
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,10 +1,12 @@
 package org.drools.rule;
 
+import java.io.InputStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-public class CompositePackageClassLoader extends ClassLoader {
+public class CompositePackageClassLoader extends ClassLoader implements DroolsClassLoader  {
 
     private final List classLoaders = new ArrayList();
 
@@ -25,7 +27,7 @@
         }
     }
 
-    private Class compositeFastFindClass(final String name) {
+    public Class fastFindClass(final String name) {
         for ( final Iterator it = this.classLoaders.iterator(); it.hasNext(); ) {
             final DroolsClassLoader classLoader = (DroolsClassLoader) it.next();
             final Class clazz = classLoader.fastFindClass( name );
@@ -48,7 +50,7 @@
         Class clazz = findLoadedClass( name );
 
         if ( clazz == null ) {
-            clazz = compositeFastFindClass( name );
+            clazz = fastFindClass( name );
 
             if ( clazz == null ) {
 
@@ -67,9 +69,22 @@
 
         return clazz;
     }
+    
+    public InputStream getResourceAsStream(final String name) {
+        InputStream stream =  super.getResourceAsStream( name );
+        
+        for ( final Iterator it = this.classLoaders.iterator(); it.hasNext(); ) {
+            final DroolsClassLoader classLoader = (DroolsClassLoader) it.next();
+            stream = classLoader.getResourceAsStream( name );
+            if ( stream != null ) {
+                return stream;
+            }
+        }        
+        return stream;
+    }
 
     protected Class findClass(final String name) throws ClassNotFoundException {
-        final Class clazz = compositeFastFindClass( name );
+        final Class clazz = fastFindClass( name );
         if ( clazz == null ) {
             throw new ClassNotFoundException( name );
         }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DroolsClassLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DroolsClassLoader.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DroolsClassLoader.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,5 +1,10 @@
 package org.drools.rule;
 
+import java.io.InputStream;
+
 public interface DroolsClassLoader {
+    
+    InputStream getResourceAsStream(final String name);
+    
     public Class fastFindClass(final String name);
 }

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java (from rev 18199, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -0,0 +1,473 @@
+package org.drools.rule;
+
+/*
+ * 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.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.drools.CheckedDroolsException;
+import org.drools.RuntimeDroolsException;
+import org.drools.base.accumulators.JavaAccumulatorFunctionExecutor;
+import org.drools.common.DroolsObjectInputStream;
+import org.drools.spi.Accumulator;
+import org.drools.spi.Consequence;
+import org.drools.spi.EvalExpression;
+import org.drools.spi.PredicateExpression;
+import org.drools.spi.ReturnValueEvaluator;
+import org.drools.spi.ReturnValueExpression;
+import org.drools.util.StringUtils;
+import org.drools.workflow.core.node.ActionNode;
+import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
+
+public class JavaDialectData
+    implements
+    DialectData,
+    Externalizable {
+
+    /**
+     *
+     */
+    private static final long             serialVersionUID = 400L;
+
+    private static final ProtectionDomain PROTECTION_DOMAIN;
+
+    private Map                           invokerLookups;
+
+    private Object                        AST;
+
+    private Map                           store;
+    
+    private DialectDatas                  datas;
+
+    private transient PackageClassLoader  classLoader;
+
+    private boolean                       dirty;
+
+    static {
+        PROTECTION_DOMAIN = (ProtectionDomain) AccessController.doPrivileged( new PrivilegedAction() {
+            public Object run() {
+                return JavaDialectData.class.getProtectionDomain();
+            }
+        } );
+    }
+
+    /**
+     * Default constructor - for Externalizable. This should never be used by a user, as it
+     * will result in an invalid state for the instance.
+     */
+    public JavaDialectData() {
+
+    }
+
+    public JavaDialectData(final DialectDatas datas) {
+        this.datas = datas;
+        this.classLoader = new PackageClassLoader( this.datas.getParentClassLoader() );
+        this.datas.addClassLoader( this.classLoader );
+        this.invokerLookups = new HashMap();
+        this.store = new HashMap();
+        this.dirty = false;
+    }
+
+    public boolean isDirty() {
+        return this.dirty;
+    }
+
+    /**
+     * Handles the write serialization of the PackageCompilationData. Patterns in Rules may reference generated data which cannot be serialized by
+     * default methods. The PackageCompilationData holds a reference to the generated bytecode. The generated bytecode must be restored before any Rules.
+     *
+     */
+    public void writeExternal(final ObjectOutput stream) throws IOException {
+        stream.writeObject( this.store );
+        stream.writeObject( this.AST );
+
+        // Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
+        // a byte[]
+        final ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        final ObjectOutput out = new ObjectOutputStream( bos );
+        out.writeObject( this.invokerLookups );
+        stream.writeObject( bos.toByteArray() );
+    }
+
+    /**
+     * Handles the read serialization of the PackageCompilationData. Patterns in Rules may reference generated data which cannot be serialized by
+     * default methods. The PackageCompilationData holds a reference to the generated bytecode; which must be restored before any Rules.
+     * A custom ObjectInputStream, able to resolve classes against the bytecode, is used to restore the Rules.
+     *
+     */
+    public void readExternal(final ObjectInput stream) throws IOException,
+                                                      ClassNotFoundException {
+        DroolsObjectInputStream droolsStream = (DroolsObjectInputStream) stream;
+        this.datas = droolsStream.getDialectDatas();
+        this.classLoader = new PackageClassLoader( this.datas.getParentClassLoader() );
+        this.datas.addClassLoader( this.classLoader );
+                
+        this.store = (Map) stream.readObject();
+        this.AST = stream.readObject();
+
+        // Return the rules stored as a byte[]
+        final byte[] bytes = (byte[]) stream.readObject();
+
+        //  Use a custom ObjectInputStream that can resolve against a given classLoader
+        final DroolsObjectInputStream streamWithLoader = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),
+                                                                                      this.classLoader );
+        this.invokerLookups = (Map) streamWithLoader.readObject();
+    }
+
+    public ClassLoader getClassLoader() {
+        return this.classLoader;
+    }
+
+    public void removeRule(Package pkg,
+                           Rule rule) {
+        final String consequenceName = rule.getConsequence().getClass().getName();
+
+        // check for compiled code and remove if present.
+        if ( remove( consequenceName ) ) {
+            removeClasses( rule.getLhs() );
+
+            // Now remove the rule class - the name is a subset of the consequence name
+            remove( consequenceName.substring( 0,
+                                               consequenceName.indexOf( "ConsequenceInvoker" ) ) );
+        }
+    }
+
+    public void removeFunction(Package pkg,
+                               Function function) {
+        remove( pkg.getName() + "." + StringUtils.ucFirst( function.getName() ) );
+    }
+
+    public void merge(DialectData newData) {
+        JavaDialectData newJavaData = (JavaDialectData) newData;
+
+        // First update the binary files
+        // @todo: this probably has issues if you add classes in the incorrect order - functions, rules, invokers.
+        final String[] files = newJavaData.list();
+        for ( int i = 0, length = files.length; i < length; i++ ) {
+            write( files[i],
+                   newJavaData.read( files[i] ) );
+        }
+
+        // Add invokers
+        putAllInvokers( newJavaData.getInvokers() );
+    }
+
+    private void removeClasses(final ConditionalElement ce) {
+        if ( ce instanceof GroupElement ) {
+            final GroupElement group = (GroupElement) ce;
+            for ( final Iterator it = group.getChildren().iterator(); it.hasNext(); ) {
+                final Object object = it.next();
+                if ( object instanceof ConditionalElement ) {
+                    removeClasses( (ConditionalElement) object );
+                } else if ( object instanceof Pattern ) {
+                    removeClasses( (Pattern) object );
+                }
+            }
+        } else if ( ce instanceof EvalCondition ) {
+            remove( ((EvalCondition) ce).getEvalExpression().getClass().getName() );
+        }
+    }
+
+    private void removeClasses(final Pattern pattern) {
+        for ( final Iterator it = pattern.getConstraints().iterator(); it.hasNext(); ) {
+            final Object object = it.next();
+            if ( object instanceof PredicateConstraint ) {
+                remove( ((PredicateConstraint) object).getPredicateExpression().getClass().getName() );
+            } else if ( object instanceof ReturnValueConstraint ) {
+                remove( ((ReturnValueConstraint) object).getExpression().getClass().getName() );
+            }
+        }
+    }
+
+    public byte[] read(final String resourceName) {
+        byte[] bytes = null;
+
+        if ( this.store != null ) {
+            bytes = (byte[]) this.store.get( resourceName );
+        }
+        return bytes;
+    }
+
+    public void write(final String resourceName,
+                      final byte[] clazzData) throws RuntimeDroolsException {
+        if ( this.store.put( resourceName,
+                             clazzData ) != null ) {
+            // we are updating an existing class so reload();
+            //reload();
+            this.dirty = true;
+        } else {
+            try {
+                wire( convertResourceToClassName( resourceName ) );
+            } catch ( final Exception e ) {
+                e.printStackTrace();
+                throw new RuntimeDroolsException( e );
+            }
+        }
+
+    }
+
+    public boolean remove(final String resourceName) throws RuntimeDroolsException {
+        this.invokerLookups.remove( resourceName );
+        if ( this.store.remove( convertClassToResourcePath( resourceName ) ) != null ) {
+            // we need to make sure the class is removed from the classLoader
+            // reload();
+            this.dirty = true;
+            return true;
+        }
+        return false;
+    }
+
+    public String[] list() {
+        if ( this.store == null ) {
+            return new String[0];
+        }
+        final List names = new ArrayList();
+
+        for ( final Iterator it = this.store.keySet().iterator(); it.hasNext(); ) {
+            final String name = (String) it.next();
+            names.add( name );
+        }
+
+        return (String[]) names.toArray( new String[this.store.size()] );
+    }
+
+    /**
+     * This class drops the classLoader and reloads it. During this process  it must re-wire all the invokeables.
+     * @throws CheckedDroolsException
+     */
+    public void reload() throws RuntimeDroolsException {
+        // drops the classLoader and adds a new one
+        this.classLoader = new PackageClassLoader( this.datas.getParentClassLoader() );
+        this.datas.addClassLoader( this.classLoader );
+
+        // Wire up invokers
+        try {
+            for ( final Iterator it = this.invokerLookups.entrySet().iterator(); it.hasNext(); ) {
+                Entry entry = (Entry) it.next();
+                wire( (String) entry.getKey(),
+                      entry.getValue() );
+            }
+        } catch ( final ClassNotFoundException e ) {
+            throw new RuntimeDroolsException( e );
+        } catch ( final InstantiationError e ) {
+            throw new RuntimeDroolsException( e );
+        } catch ( final IllegalAccessException e ) {
+            throw new RuntimeDroolsException( e );
+        } catch ( final InstantiationException e ) {
+            throw new RuntimeDroolsException( e );
+        } finally {
+            this.dirty = false;
+        }
+    }
+
+    public void clear() {
+        this.store.clear();
+        this.invokerLookups.clear();
+        this.AST = null;
+        reload();
+    }
+
+    public void wire(final String className) throws ClassNotFoundException,
+                                            InstantiationException,
+                                            IllegalAccessException {
+        final Object invoker = this.invokerLookups.get( className );
+        wire( className,
+              invoker );
+    }
+
+    public void wire(final String className,
+                     final Object invoker) throws ClassNotFoundException,
+                                          InstantiationException,
+                                          IllegalAccessException {
+        final Class clazz = this.classLoader.findClass( className );
+        if ( invoker instanceof ReturnValueRestriction ) {
+            ((ReturnValueRestriction) invoker).setReturnValueExpression( (ReturnValueExpression) clazz.newInstance() );
+        } else if ( invoker instanceof PredicateConstraint ) {
+            ((PredicateConstraint) invoker).setPredicateExpression( (PredicateExpression) clazz.newInstance() );
+        } else if ( invoker instanceof EvalCondition ) {
+            ((EvalCondition) invoker).setEvalExpression( (EvalExpression) clazz.newInstance() );
+        } else if ( invoker instanceof Accumulate ) {
+            ((Accumulate) invoker).setAccumulator( (Accumulator) clazz.newInstance() );
+        } else if ( invoker instanceof Rule ) {
+            ((Rule) invoker).setConsequence( (Consequence) clazz.newInstance() );
+        } else if ( invoker instanceof JavaAccumulatorFunctionExecutor ) {
+            ((JavaAccumulatorFunctionExecutor) invoker).setExpression( (ReturnValueExpression) clazz.newInstance() );
+        } else if ( invoker instanceof ActionNode ) {
+            ((ActionNode) invoker).setAction( clazz.newInstance() );
+        } else if ( invoker instanceof ReturnValueConstraintEvaluator ) {
+            ((ReturnValueConstraintEvaluator) invoker).setEvaluator( (ReturnValueEvaluator) clazz.newInstance() );
+        }
+    }
+
+    public String toString() {
+        return this.getClass().getName() + this.store.toString();
+    }
+
+    public void putInvoker(final String className,
+                           final Object invoker) {
+        this.invokerLookups.put( className,
+                                 invoker );
+    }
+
+    public void putAllInvokers(final Map invokers) {
+        this.invokerLookups.putAll( invokers );
+
+    }
+
+    public Map getInvokers() {
+        return this.invokerLookups;
+    }
+
+    public void removeInvoker(final String className) {
+        this.invokerLookups.remove( className );
+    }
+
+    public Object getAST() {
+        return this.AST;
+    }
+
+    public void setAST(final Object ast) {
+        this.AST = ast;
+    }
+
+    /**
+     * Lifted and adapted from Jakarta commons-jci
+     *
+     * @author mproctor
+     *
+     */
+    public class PackageClassLoader extends ClassLoader
+        implements
+        DroolsClassLoader {
+
+        public PackageClassLoader(final ClassLoader parentClassLoader) {
+            super( parentClassLoader );
+        }
+
+        public Class fastFindClass(final String name) {
+            final Class clazz = findLoadedClass( name );
+
+            if ( clazz == null ) {
+                final byte[] clazzBytes = read( convertClassToResourcePath( name ) );
+                if ( clazzBytes != null ) {
+                    return defineClass( name,
+                                        clazzBytes,
+                                        0,
+                                        clazzBytes.length,
+                                        PROTECTION_DOMAIN );
+                }
+            }
+
+            return clazz;
+        }
+
+        /**
+         * Javadocs recommend that this method not be overloaded. We overload this so that we can prioritise the fastFindClass
+         * over method calls to parent.loadClass(name, false); and c = findBootstrapClass0(name); which the default implementation
+         * would first - hence why we call it "fastFindClass" instead of standard findClass, this indicates that we give it a
+         * higher priority than normal.
+         *
+         */
+        protected synchronized Class loadClass(final String name,
+                                               final boolean resolve) throws ClassNotFoundException {
+            Class clazz = fastFindClass( name );
+
+            if ( clazz == null ) {
+                final ClassLoader parent = getParent();
+                if ( parent != null ) {
+                    clazz = parent.loadClass( name );
+                } else {
+                    throw new ClassNotFoundException( name );
+                }
+            }
+
+            if ( resolve ) {
+                resolveClass( clazz );
+            }
+
+            return clazz;
+        }
+
+        protected Class findClass(final String name) throws ClassNotFoundException {
+            final Class clazz = fastFindClass( name );
+            if ( clazz == null ) {
+                throw new ClassNotFoundException( name );
+            }
+            return clazz;
+        }
+
+
+        public InputStream getResourceAsStream(final String name) {
+            final byte[] bytes = (byte[]) JavaDialectData.this.store.get( name );
+            if ( bytes != null ) {
+                return new ByteArrayInputStream( bytes );
+            } else {
+                InputStream input = this.getParent().getResourceAsStream( name );
+                if ( input == null ) {
+                    input = super.getResourceAsStream( name );
+                }
+                return input;
+            }
+        }
+    }
+
+    /**
+     * Please do not use - internal
+     * org/my/Class.xxx -> org.my.Class
+     */
+    public static String convertResourceToClassName(final String pResourceName) {
+        return stripExtension( pResourceName ).replace( '/',
+                                                        '.' );
+    }
+
+    /**
+     * Please do not use - internal
+     * org.my.Class -> org/my/Class.class
+     */
+    public static String convertClassToResourcePath(final String pName) {
+        return pName.replace( '.',
+                              '/' ) + ".class";
+    }
+
+    /**
+     * Please do not use - internal
+     * org/my/Class.xxx -> org/my/Class
+     */
+    public static String stripExtension(final String pResourceName) {
+        final int i = pResourceName.lastIndexOf( '.' );
+        final String withoutExtension = pResourceName.substring( 0,
+                                                                 i );
+        return withoutExtension;
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LineMappings.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LineMappings.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LineMappings.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,6 +1,8 @@
 package org.drools.rule;
 
-public class LineMappings {
+import java.io.Serializable;
+
+public class LineMappings implements Serializable {
     private String className;
     private int    startLine;
     private int    offset;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -71,7 +71,7 @@
 
     private Map<String, ImportDeclaration> imports;
 
-    private List                           functions;
+    private Map<String, Function>          functions;
 
     private Set                            staticImports;
 
@@ -81,7 +81,8 @@
 
     private Map                            ruleFlows;
 
-    private PackageCompilationData         packageCompilationData;
+    //    private JavaDialectData         packageCompilationData;
+    private DialectDatas                   dialectDatas;
 
     /** This is to indicate the the package has no errors during the compilation/building phase */
     private boolean                        valid            = true;
@@ -127,7 +128,7 @@
         this.ruleFlows = Collections.EMPTY_MAP;
         this.globals = Collections.EMPTY_MAP;
         this.factTemplates = Collections.EMPTY_MAP;
-        this.functions = Collections.EMPTY_LIST;
+        this.functions = Collections.EMPTY_MAP;
 
         // This classloader test should only be here for unit testing, too much legacy api to want to change by hand at the moment
         if ( parentClassLoader == null ) {
@@ -136,7 +137,8 @@
                 parentClassLoader = getClass().getClassLoader();
             }
         }
-        this.packageCompilationData = new PackageCompilationData( parentClassLoader );
+        //this.packageCompilationData = new JavaDialectData( parentClassLoader );
+        this.dialectDatas = new DialectDatas( parentClassLoader );
     }
 
     /**
@@ -145,7 +147,7 @@
      *
      */
     public void writeExternal(final ObjectOutput stream) throws IOException {
-        stream.writeObject( this.packageCompilationData );
+        stream.writeObject( this.dialectDatas );
         stream.writeObject( this.name );
         stream.writeObject( this.imports );
         stream.writeObject( this.staticImports );
@@ -172,11 +174,11 @@
     public void readExternal(final ObjectInput stream) throws IOException,
                                                       ClassNotFoundException {
         // PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
-        this.packageCompilationData = (PackageCompilationData) stream.readObject();
+        this.dialectDatas = (DialectDatas) stream.readObject();
         this.name = (String) stream.readObject();
         this.imports = (Map<String, ImportDeclaration>) stream.readObject();
         this.staticImports = (Set) stream.readObject();
-        this.functions = (List) stream.readObject();
+        this.functions = (Map) stream.readObject();
         this.factTemplates = (Map) stream.readObject();
         this.ruleFlows = (Map) stream.readObject();
         this.globals = (Map) stream.readObject();
@@ -187,7 +189,7 @@
 
         //  Use a custom ObjectInputStream that can resolve against a given classLoader
         final DroolsObjectInputStream streamWithLoader = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),
-                                                                                      this.packageCompilationData.getClassLoader() );
+                                                                                      this.dialectDatas.getClassLoader() );
 
         this.rules = (Map) streamWithLoader.readObject();
     }
@@ -205,8 +207,13 @@
         return this.name;
     }
 
+    public DialectDatas getDialectDatas() {
+        return this.dialectDatas;
+    }
+
     public void addImport(final ImportDeclaration importDecl) {
-        this.imports.put( importDecl.getTarget(), importDecl );
+        this.imports.put( importDecl.getTarget(),
+                          importDecl );
     }
 
     public void removeImport(final String importEntry) {
@@ -224,15 +231,16 @@
         this.staticImports.add( functionImport );
     }
 
-    public void addFunction(final String functionName) {
-        if ( this.functions == Collections.EMPTY_LIST ) {
-            this.functions = new ArrayList( 1 );
+    public void addFunction(final Function function) {
+        if ( this.functions == Collections.EMPTY_MAP ) {
+            this.functions = new HashMap<String, Function>( 1 );
         }
 
-        this.functions.add( functionName );
+        this.functions.put( function.getName(),
+                            function );
     }
 
-    public List getFunctions() {
+    public Map<String, Function> getFunctions() {
         return this.functions;
     }
 
@@ -261,12 +269,12 @@
         return this.globals;
     }
 
-    public PackageCompilationData removeFunction(final String functionName) {
-        if ( !this.functions.remove( functionName ) ) {
-            return null;
+    public void removeFunction(final String functionName) {
+        Function function = this.functions.remove( functionName );
+        if ( function != null ) {
+            this.dialectDatas.removeFunction( this,
+                                              function );
         }
-        this.packageCompilationData.remove( this.name + "." + StringUtils.ucFirst( functionName ) );
-        return this.packageCompilationData;
     }
 
     public FactTemplate getFactTemplate(final String name) {
@@ -330,48 +338,52 @@
         this.ruleFlows.remove( id );
     }
 
-    public PackageCompilationData removeRule(final Rule rule) {
+    public void removeRule(final Rule rule) {
         this.rules.remove( rule.getName() );
-        final String consequenceName = rule.getConsequence().getClass().getName();
-
-        // check for compiled code and remove if present.
-        if ( this.packageCompilationData.remove( consequenceName ) ) {
-            removeClasses( rule.getLhs() );
-
-            // Now remove the rule class - the name is a subset of the consequence name
-            this.packageCompilationData.remove( consequenceName.substring( 0,
-                                                                           consequenceName.indexOf( "ConsequenceInvoker" ) ) );
-        }
-        return this.packageCompilationData;
+        this.dialectDatas.removeRule( this,
+                                      rule );
+        //        final String consequenceName = rule.getConsequence().getClass().getName();
+        //        
+        //        Object object = this.dialectData.getDialectData( rule.getDialect() );
+        //
+        //        // check for compiled code and remove if present.
+        //        if ( this.packageCompilationData.remove( consequenceName ) ) {
+        //            removeClasses( rule.getLhs() );
+        //
+        //            // Now remove the rule class - the name is a subset of the consequence name
+        //            this.packageCompilationData.remove( consequenceName.substring( 0,
+        //                                                                           consequenceName.indexOf( "ConsequenceInvoker" ) ) );
+        //        }
+        //        return this.packageCompilationData;
     }
 
-    private void removeClasses(final ConditionalElement ce) {
-        if ( ce instanceof GroupElement ) {
-            final GroupElement group = (GroupElement) ce;
-            for ( final Iterator it = group.getChildren().iterator(); it.hasNext(); ) {
-                final Object object = it.next();
-                if ( object instanceof ConditionalElement ) {
-                    removeClasses( (ConditionalElement) object );
-                } else if ( object instanceof Pattern ) {
-                    removeClasses( (Pattern) object );
-                }
-            }
-        } else if ( ce instanceof EvalCondition ) {
-            this.packageCompilationData.remove( ((EvalCondition) ce).getEvalExpression().getClass().getName() );
-        }
-    }
+    //    private void removeClasses(final ConditionalElement ce) {
+    //        if ( ce instanceof GroupElement ) {
+    //            final GroupElement group = (GroupElement) ce;
+    //            for ( final Iterator it = group.getChildren().iterator(); it.hasNext(); ) {
+    //                final Object object = it.next();
+    //                if ( object instanceof ConditionalElement ) {
+    //                    removeClasses( (ConditionalElement) object );
+    //                } else if ( object instanceof Pattern ) {
+    //                    removeClasses( (Pattern) object );
+    //                }
+    //            }
+    //        } else if ( ce instanceof EvalCondition ) {
+    //            this.packageCompilationData.remove( ((EvalCondition) ce).getEvalExpression().getClass().getName() );
+    //        }
+    //    }
+    //
+    //    private void removeClasses(final Pattern pattern) {
+    //        for ( final Iterator it = pattern.getConstraints().iterator(); it.hasNext(); ) {
+    //            final Object object = it.next();
+    //            if ( object instanceof PredicateConstraint ) {
+    //                this.packageCompilationData.remove( ((PredicateConstraint) object).getPredicateExpression().getClass().getName() );
+    //            } else if ( object instanceof ReturnValueConstraint ) {
+    //                this.packageCompilationData.remove( ((ReturnValueConstraint) object).getExpression().getClass().getName() );
+    //            }
+    //        }
+    //    }
 
-    private void removeClasses(final Pattern pattern) {
-        for ( final Iterator it = pattern.getConstraints().iterator(); it.hasNext(); ) {
-            final Object object = it.next();
-            if ( object instanceof PredicateConstraint ) {
-                this.packageCompilationData.remove( ((PredicateConstraint) object).getPredicateExpression().getClass().getName() );
-            } else if ( object instanceof ReturnValueConstraint ) {
-                this.packageCompilationData.remove( ((ReturnValueConstraint) object).getExpression().getClass().getName() );
-            }
-        }
-    }
-
     /**
      * Retrieve a <code>Rule</code> by name.
      *
@@ -395,9 +407,9 @@
         return (Rule[]) this.rules.values().toArray( new Rule[this.rules.size()] );
     }
 
-    public PackageCompilationData getPackageCompilationData() {
-        return this.packageCompilationData;
-    }
+    //    public JavaDialectData getPackageCompilationData() {
+    //        return this.packageCompilationData;
+    //    }
 
     public String toString() {
         return "[Package name=" + this.name + "]";
@@ -447,30 +459,30 @@
     public int hashCode() {
         return this.name.hashCode();
     }
-    
+
     /**
      * Returns true if clazz is imported as an Event class in this package 
      * @param clazz
      * @return
      */
-    public boolean isEvent( Class clazz ) {
-        if( clazz == null ) {
+    public boolean isEvent(Class clazz) {
+        if ( clazz == null ) {
             return false;
         }
         // check if clazz is resolved by any of the import declarations
-        for( ImportDeclaration imp : this.imports.values() ) {
-            if( imp.isEvent() && imp.matches( clazz ) ) {
+        for ( ImportDeclaration imp : this.imports.values() ) {
+            if ( imp.isEvent() && imp.matches( clazz ) ) {
                 return true;
             }
         }
         // if it is not resolved, try superclass 
-        if( this.isEvent( clazz.getSuperclass() ) ) {
+        if ( this.isEvent( clazz.getSuperclass() ) ) {
             return true;
         }
-        
+
         // if it is no resolved, try interfaces
-        for( Class interf : clazz.getInterfaces() ) {
-            if( this.isEvent( interf ) ) {
+        for ( Class interf : clazz.getInterfaces() ) {
+            if ( this.isEvent( interf ) ) {
                 return true;
             }
         }
@@ -479,7 +491,7 @@
 
     public void clear() {
         this.rules.clear();
-        this.packageCompilationData.clear();
+        this.dialectDatas.clear();
         this.ruleFlows.clear();
         this.imports.clear();
         this.functions.clear();

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,429 +0,0 @@
-package org.drools.rule;
-
-/*
- * 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.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.ProtectionDomain;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.drools.CheckedDroolsException;
-import org.drools.RuntimeDroolsException;
-import org.drools.base.accumulators.JavaAccumulatorFunctionExecutor;
-import org.drools.common.DroolsObjectInputStream;
-import org.drools.spi.Accumulator;
-import org.drools.spi.Consequence;
-import org.drools.spi.EvalExpression;
-import org.drools.spi.PredicateExpression;
-import org.drools.spi.ReturnValueEvaluator;
-import org.drools.spi.ReturnValueExpression;
-import org.drools.workflow.core.node.ActionNode;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
-
-public class PackageCompilationData
-    implements
-    Externalizable {
-
-    /**
-     *
-     */
-    private static final long             serialVersionUID = 400L;
-
-    private static final ProtectionDomain PROTECTION_DOMAIN;
-
-    private Map                           invokerLookups;
-
-    private Object                        AST;
-
-    private Map                           store;
-
-    private Map                           lineMappings;
-
-    private transient PackageClassLoader  classLoader;
-
-    private transient ClassLoader         parentClassLoader;
-    
-    private boolean                       dirty;
-
-    static {
-        PROTECTION_DOMAIN = (ProtectionDomain) AccessController.doPrivileged( new PrivilegedAction() {
-            public Object run() {
-                return PackageCompilationData.class.getProtectionDomain();
-            }
-        } );
-    }
-
-    /**
-     * Default constructor - for Externalizable. This should never be used by a user, as it
-     * will result in an invalid state for the instance.
-     */
-    public PackageCompilationData() {
-
-    }
-
-    public PackageCompilationData(final ClassLoader parentClassLoader) {
-        initClassLoader( parentClassLoader );
-        this.invokerLookups = new HashMap();
-        this.store = new HashMap();
-        this.lineMappings = new HashMap();
-        this.dirty = false;
-    }
-    
-    public boolean isDirty() {
-        return this.dirty;
-    }
-
-    private void initClassLoader(ClassLoader parentClassLoader) {
-        if ( parentClassLoader == null ) {
-            throw new RuntimeDroolsException( "PackageCompilationData cannot have a null parentClassLoader" );
-        }
-        this.parentClassLoader = parentClassLoader;
-        this.classLoader = new PackageClassLoader( this.parentClassLoader );
-    }
-
-    /**
-     * Handles the write serialization of the PackageCompilationData. Patterns in Rules may reference generated data which cannot be serialized by
-     * default methods. The PackageCompilationData holds a reference to the generated bytecode. The generated bytecode must be restored before any Rules.
-     *
-     */
-    public void writeExternal(final ObjectOutput stream) throws IOException {
-        stream.writeObject( this.store );
-        stream.writeObject( this.AST );
-
-        // Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
-        // a byte[]
-        final ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        final ObjectOutput out = new ObjectOutputStream( bos );
-        out.writeObject( this.invokerLookups );
-        stream.writeObject( bos.toByteArray() );
-    }
-
-    /**
-     * Handles the read serialization of the PackageCompilationData. Patterns in Rules may reference generated data which cannot be serialized by
-     * default methods. The PackageCompilationData holds a reference to the generated bytecode; which must be restored before any Rules.
-     * A custom ObjectInputStream, able to resolve classes against the bytecode, is used to restore the Rules.
-     *
-     */
-    public void readExternal(final ObjectInput stream) throws IOException,
-                                                      ClassNotFoundException {
-        if ( stream instanceof DroolsObjectInputStream ) {
-            DroolsObjectInputStream droolsStream = (DroolsObjectInputStream) stream;
-            initClassLoader( droolsStream.getClassLoader() );
-        } else {
-            initClassLoader( Thread.currentThread().getContextClassLoader() );
-        }
-
-        this.store = (Map) stream.readObject();
-        this.AST = stream.readObject();
-
-        // Return the rules stored as a byte[]
-        final byte[] bytes = (byte[]) stream.readObject();
-
-        //  Use a custom ObjectInputStream that can resolve against a given classLoader
-        final DroolsObjectInputStream streamWithLoader = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),
-                                                                                      this.classLoader );
-        this.invokerLookups = (Map) streamWithLoader.readObject();
-    }
-
-    public ClassLoader getClassLoader() {
-        return this.classLoader;
-    }
-
-    public byte[] read(final String resourceName) {
-        byte[] bytes = null;
-
-        if ( this.store != null ) {
-            bytes = ( byte[] ) this.store.get( resourceName );
-        }
-        return bytes;
-    }
-
-    public void write(final String resourceName,
-                      final byte[] clazzData) throws RuntimeDroolsException {
-        if ( this.store.put( resourceName,
-                             clazzData ) != null ) {
-            // we are updating an existing class so reload();
-            //reload();
-            this.dirty = true;
-        } else {
-            try {
-                wire( convertResourceToClassName( resourceName ) );
-            } catch ( final Exception e ) {
-                e.printStackTrace();
-                throw new RuntimeDroolsException( e );
-            }
-        }
-
-    }
-
-    public boolean remove(final String resourceName) throws RuntimeDroolsException {
-        this.invokerLookups.remove( resourceName );
-        if ( this.store.remove( convertClassToResourcePath( resourceName ) ) != null ) {
-            // we need to make sure the class is removed from the classLoader
-            // reload();
-            this.dirty = true;
-            return true;
-        }
-        return false;
-    }
-
-    public String[] list() {
-        if ( this.store == null ) {
-            return new String[0];
-        }
-        final List names = new ArrayList();
-
-        for ( final Iterator it = this.store.keySet().iterator(); it.hasNext(); ) {
-            final String name = (String) it.next();
-            names.add( name );
-        }
-
-        return (String[]) names.toArray( new String[this.store.size()] );
-    }
-
-    /**
-     * This class drops the classLoader and reloads it. During this process  it must re-wire all the invokeables.
-     * @throws CheckedDroolsException
-     */
-    public void reload() throws RuntimeDroolsException {
-        // drops the classLoader and adds a new one
-        this.classLoader = new PackageClassLoader( this.parentClassLoader );
-
-        // Wire up invokers
-        try {
-            for ( final Iterator it = this.invokerLookups.entrySet().iterator(); it.hasNext(); ) {
-                Entry entry = (Entry) it.next();
-                wire( (String) entry.getKey(),
-                      entry.getValue() );
-            }
-        } catch ( final ClassNotFoundException e ) {
-            throw new RuntimeDroolsException( e );
-        } catch ( final InstantiationError e ) {
-            throw new RuntimeDroolsException( e );
-        } catch ( final IllegalAccessException e ) {
-            throw new RuntimeDroolsException( e );
-        } catch ( final InstantiationException e ) {
-            throw new RuntimeDroolsException( e );
-        } finally {
-            this.dirty = false;
-        }
-    }
-
-    public void clear() {
-        this.store.clear();
-        this.invokerLookups.clear();
-        this.AST = null;
-        reload();
-    }
-
-    public void wire(final String className) throws ClassNotFoundException,
-                                            InstantiationException,
-                                            IllegalAccessException {
-        final Object invoker = this.invokerLookups.get( className );
-        wire( className,
-              invoker );
-    }
-
-    public void wire(final String className,
-                     final Object invoker) throws ClassNotFoundException,
-                                          InstantiationException,
-                                          IllegalAccessException {
-        final Class clazz = this.classLoader.findClass( className );
-        if ( invoker instanceof ReturnValueRestriction ) {
-            ((ReturnValueRestriction) invoker).setReturnValueExpression( (ReturnValueExpression) clazz.newInstance() );
-        } else if ( invoker instanceof PredicateConstraint ) {
-            ((PredicateConstraint) invoker).setPredicateExpression( (PredicateExpression) clazz.newInstance() );
-        } else if ( invoker instanceof EvalCondition ) {
-            ((EvalCondition) invoker).setEvalExpression( (EvalExpression) clazz.newInstance() );
-        } else if ( invoker instanceof Accumulate ) {
-            ((Accumulate) invoker).setAccumulator( (Accumulator) clazz.newInstance() );
-        } else if ( invoker instanceof Rule ) {
-            ((Rule) invoker).setConsequence( (Consequence) clazz.newInstance() );
-        } else if ( invoker instanceof JavaAccumulatorFunctionExecutor ) {
-            ((JavaAccumulatorFunctionExecutor) invoker).setExpression( (ReturnValueExpression) clazz.newInstance() );
-        } else if ( invoker instanceof ActionNode ) {
-            ((ActionNode) invoker).setAction( clazz.newInstance() );
-        } else if ( invoker instanceof ReturnValueConstraintEvaluator ) {
-            ((ReturnValueConstraintEvaluator) invoker).setEvaluator( (ReturnValueEvaluator) clazz.newInstance() );
-        }
-    }
-
-    public String toString() {
-        return this.getClass().getName() + this.store.toString();
-    }
-
-    public void putInvoker(final String className,
-                           final Object invoker) {
-        this.invokerLookups.put( className,
-                                 invoker );
-    }
-
-    public void putAllInvokers(final Map invokers) {
-        this.invokerLookups.putAll( invokers );
-
-    }
-
-    public Map getInvokers() {
-        return this.invokerLookups;
-    }
-
-    public void removeInvoker(final String className) {
-        this.invokerLookups.remove( className );
-    }
-
-    public Map getLineMappings() {
-        if ( this.lineMappings == null ) {
-            this.lineMappings = new HashMap();
-        }
-        return this.lineMappings;
-    }
-
-    public LineMappings getLineMappings(final String className) {
-        return (LineMappings) getLineMappings().get( className );
-    }
-
-    public Object getAST() {
-        return this.AST;
-    }
-
-    public void setAST(final Object ast) {
-        this.AST = ast;
-    }
-
-    /**
-     * Lifted and adapted from Jakarta commons-jci
-     *
-     * @author mproctor
-     *
-     */
-    public class PackageClassLoader extends ClassLoader
-        implements
-        DroolsClassLoader {
-
-        public PackageClassLoader(final ClassLoader parentClassLoader) {
-            super( parentClassLoader );
-        }
-
-        public Class fastFindClass(final String name) {
-            final Class clazz = findLoadedClass( name );
-
-            if ( clazz == null ) {
-                final byte[] clazzBytes = read( convertClassToResourcePath( name ) );
-                if ( clazzBytes != null ) {
-                    return defineClass( name,
-                                        clazzBytes,
-                                        0,
-                                        clazzBytes.length,
-                                        PROTECTION_DOMAIN );
-                }
-            }
-
-            return clazz;
-        }
-
-        /**
-         * Javadocs recommend that this method not be overloaded. We overload this so that we can prioritise the fastFindClass
-         * over method calls to parent.loadClass(name, false); and c = findBootstrapClass0(name); which the default implementation
-         * would first - hence why we call it "fastFindClass" instead of standard findClass, this indicates that we give it a
-         * higher priority than normal.
-         *
-         */
-        protected synchronized Class loadClass(final String name,
-                                               final boolean resolve) throws ClassNotFoundException {
-            Class clazz = fastFindClass( name );
-
-            if ( clazz == null ) {
-                final ClassLoader parent = getParent();
-                if ( parent != null ) {
-                    clazz = parent.loadClass( name );
-                } else {
-                    throw new ClassNotFoundException( name );
-                }
-            }
-
-            if ( resolve ) {
-                resolveClass( clazz );
-            }
-
-            return clazz;
-        }
-
-        protected Class findClass(final String name) throws ClassNotFoundException {
-            final Class clazz = fastFindClass( name );
-            if ( clazz == null ) {
-                throw new ClassNotFoundException( name );
-            }
-            return clazz;
-        }
-
-        public InputStream getResourceAsStream(final String name) {
-            final byte[] bytes = (byte[]) PackageCompilationData.this.store.get( name );
-            if ( bytes != null ) {
-                return new ByteArrayInputStream( bytes );
-            } else {
-                InputStream input = this.getParent().getResourceAsStream( name );
-                if ( input == null ) {
-                    input = super.getResourceAsStream( name );
-                }
-                return input;
-            }
-        }
-    }
-
-    /**
-     * Please do not use - internal
-     * org/my/Class.xxx -> org.my.Class
-     */
-    public static String convertResourceToClassName(final String pResourceName) {
-        return stripExtension( pResourceName ).replace( '/',
-                                                        '.' );
-    }
-
-    /**
-     * Please do not use - internal
-     * org.my.Class -> org/my/Class.class
-     */
-    public static String convertClassToResourcePath(final String pName) {
-        return pName.replace( '.',
-                              '/' ) + ".class";
-    }
-
-    /**
-     * Please do not use - internal
-     * org/my/Class.xxx -> org/my/Class
-     */
-    public static String stripExtension(final String pResourceName) {
-        final int i = pResourceName.lastIndexOf( '.' );
-        final String withoutExtension = pResourceName.substring( 0,
-                                                                 i );
-        return withoutExtension;
-    }
-
-}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -42,7 +42,7 @@
 import org.drools.workflow.core.node.SubProcessNode;
 import org.drools.workflow.core.node.WorkItemNode;
 import org.mvel.ErrorDetail;
-import org.mvel.ExpressionCompiler;
+import org.mvel.compiler.ExpressionCompiler;
 import org.mvel.ParserContext;
 
 /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -242,30 +242,73 @@
         public HashTableIterator(final AbstractHashTable hashTable) {
             this.hashTable = hashTable;
         }
-
+        
         /* (non-Javadoc)
          * @see org.drools.util.Iterator#next()
          */
-        public Object next() {
-            if ( this.entry == null ) {
-                // keep skipping rows until we come to the end, or find one that is populated
-                while ( this.entry == null ) {
-                    this.row++;
-                    if ( this.row == this.length ) {
-                        return null;
-                    }
-                    this.entry = this.table[this.row];
-                }
-            } else {
+        public Object next() {            
+            if ( this.entry != null  ) {
                 this.entry = this.entry.getNext();
-                if ( this.entry == null ) {
-                    this.entry = (Entry) next();
+            }
+            
+            // if no entry keep skipping rows until we come to the end, or find one that is populated
+            while ( this.entry == null ) {
+                this.row++;
+                if ( this.row == this.length ) {
+                    return null;
                 }
-            }
-
+                this.entry = this.table[this.row];
+            }            
+            
             return this.entry;
-        }
+        }        
+        
+//        /* (non-Javadoc)
+//         * @see org.drools.util.Iterator#next()
+//         */
+//        public Object next() {
+//            if ( this.entry == null ) {
+//                // keep skipping rows until we come to the end, or find one that is populated
+//                while ( this.entry == null ) {
+//                    this.row++;
+//                    if ( this.row == this.length ) {
+//                        return null;
+//                    }
+//                    this.entry = this.table[this.row];
+//                }
+//            } else {
+//                this.entry = this.entry.getNext();
+//                if ( this.entry == null ) {
+//                    this.entry = (Entry) next();
+//                }
+//            }
+//
+//            return this.entry;
+//        }        
 
+//        /* (non-Javadoc)
+//         * @see org.drools.util.Iterator#next()
+//         */
+//        public Object next() {
+//            if ( this.entry == null ) {
+//                // keep skipping rows until we come to the end, or find one that is populated
+//                while ( this.entry == null ) {
+//                    this.row++;
+//                    if ( this.row == this.length ) {
+//                        return null;
+//                    }
+//                    this.entry = this.table[this.row];
+//                }
+//            } else {
+//                this.entry = this.entry.getNext();
+//                if ( this.entry == null ) {
+//                    this.entry = (Entry) next();
+//                }
+//            }
+//
+//            return this.entry;
+//        }
+
         /* (non-Javadoc)
          * @see org.drools.util.Iterator#reset()
          */

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PackageCompilationDataTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PackageCompilationDataTest.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PackageCompilationDataTest.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -21,7 +21,8 @@
 
     public void testCodeSourceUrl() throws IOException {
         final String className = TestEvalExpression.class.getName();
-        final PackageCompilationData pcData = new PackageCompilationData(getClass().getClassLoader());
+        
+        final JavaDialectData pcData = new JavaDialectData( new DialectDatas(getClass().getClassLoader()) );
         final EvalCondition invoker = new EvalCondition(null);
         pcData.putInvoker(className, invoker);
         final InputStream is = getClass().getClassLoader().getResourceAsStream(className.replace('.', '/') + ".class");

Modified: labs/jbossrules/trunk/drools-decisiontables/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-decisiontables/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,12 +5,12 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="src" path="/drools-compiler"/>
+  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
   <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="src" path="/drools-core"/>
   <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
-  <classpathentry kind="src" path="/drools-compiler"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
+  <classpathentry kind="src" path="/drools-core"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-decisiontables/.project
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/.project	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-decisiontables/.project	2008-02-05 18:38:51 UTC (rev 18319)
@@ -2,8 +2,8 @@
   <name>drools-decisiontables</name>
   <comment>A rule production system</comment>
   <projects>
+    <project>drools-compiler</project>
     <project>drools-core</project>
-    <project>drools-compiler</project>
   </projects>
   <buildSpec>
     <buildCommand>

Modified: labs/jbossrules/trunk/drools-decisiontables/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-decisiontables/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	<version>4.1.0.SNAPSHOT</version>
+	<version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-decisiontables</artifactId>

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-feature/feature.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-feature/feature.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-feature/feature.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -2,7 +2,7 @@
 <feature
       id="org.drools.eclipse.feature"
       label="JBossRules Feature"
-      version="4.1.0.SNAPSHOT"
+      version="5.0.0.SNAPSHOT"
       provider-name="JBoss, Inc.">
 
    <description url="http://www.example.com/description">
@@ -43,7 +43,7 @@
          id="org.drools.eclipse"
          download-size="0"
          install-size="0"
-         version="4.1.0.SNAPSHOT"
+         version="5.0.0.SNAPSHOT"
          unpack="false"/>
 
 </feature>

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-test-feature/feature.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-test-feature/feature.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-test-feature/feature.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -2,7 +2,7 @@
 <feature
       id="org.drools.eclipse.test-feature"
       label="JBossRules Feature"
-      version="4.1.0.SNAPSHOT"
+      version="5.0.0.SNAPSHOT"
       provider-name="JBoss, Inc.">
 
    <description url="http://www.example.com/description">
@@ -21,6 +21,6 @@
          id="org.drools.eclipse.test"
          download-size="0"
          install-size="0"
-         version="4.1.0.SNAPSHOT"/>
+         version="5.0.0.SNAPSHOT"/>
 
 </feature>

Modified: labs/jbossrules/trunk/drools-eclipse/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-eclipse/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -4,7 +4,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-    <version>4.1.0.SNAPSHOT</version>
+    <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,15 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
-	<classpathentry excluding="**/*.java" kind="src" path="src/main/rules"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="lib" path="lib/foxtrot-2.0.jar"/>
-	<classpathentry kind="lib" path="lib/jgoodies-forms-1.0.4.jar"/>
-	<classpathentry kind="con" path="DROOLS/Drools"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/rules"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="lib/foxtrot-2.0.jar"/>
+	<classpathentry kind="lib" path="lib/jgoodies-forms-1.0.4.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-    <version>4.1.0.SNAPSHOT</version>
+    <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <!--

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -48,7 +48,7 @@
 			String arg = args[0];
 			filename = arg;
 		} else {
-			filename = "manners64.dat";
+			filename = "manners128.dat";
 		}
 
 		InputStream is = MannersBenchmark.class.getResourceAsStream(filename);

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -24,6 +24,7 @@
 import java.util.regex.Pattern;
 
 import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
 import org.drools.RuleBaseFactory;
 import org.drools.StatefulSession;
 import org.drools.WorkingMemory;
@@ -41,7 +42,9 @@
             Package pkg = builder.getPackage();
             
             //add the package to a rulebase
-            final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+            RuleBaseConfiguration conf = new RuleBaseConfiguration();
+            //conf.setAlphaMemory( true );
+            final RuleBase ruleBase = RuleBaseFactory.newRuleBase( conf );
             ruleBase.addPackage( pkg );
             
             StatefulSession session = ruleBase.newStatefulSession();
@@ -58,8 +61,9 @@
             
             Stage stage = new Stage(Stage.DUPLICATE);
             session.insert( stage );
-            
+                        
             long start = System.currentTimeMillis();
+            session.setGlobal( "time", start );
             session.fireAllRules();
             System.out.println( (System.currentTimeMillis() - start) / 1000 );
             session.dispose();

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java	2008-02-05 18:38:51 UTC (rev 18319)
@@ -2,6 +2,8 @@
 
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
@@ -43,6 +45,7 @@
         ruleBase.addPackage( pkg );
 
         final StatefulSession session = ruleBase.newStatefulSession();
+        session.setGlobal( "list", new ArrayList() );
         
         session.addEventListener( new DebugAgendaEventListener() );
         session.addEventListener( new DebugWorkingMemoryEventListener() );
@@ -89,6 +92,15 @@
         public void setStatus(final int status) {
             this.status = status;
         }
+        
+        public static Message doSomething(Message message) {
+            return message;
+        }
+        
+        public boolean isSomething(String msg, List list) {
+            list.add( this );        
+            return this.message.equals( msg );
+        }
     }
 
 }

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl	2008-02-05 18:38:51 UTC (rev 18319)
@@ -7,6 +7,8 @@
 import org.drools.benchmark.waltz.Junction
 import org.drools.benchmark.waltz.WaltzUtil
 
+global Long time
+
 #If the duplicate flag is set, and there is still a line in WM, delete the line
 #and add two edges. One edge runs from p1 to p2 and the other runs from p2 to
 #p1.  We then plot the edge.
@@ -30,7 +32,9 @@
 	then
         $stage.setValue ( Stage.DETECT_JUNCTIONS );
         update($stage);
-    	System.out.println("reversing done");
+        long current = System.currentTimeMillis();
+    	System.out.println("reversing done  : " + ( current - time ) );
+    	drools.getWorkingMemory().setGlobal( "time", current);
 end
 
 #If three edges meet at a point and none of them have already been joined in

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,7 +1,9 @@
 package org.drools.examples
  
 import org.drools.examples.HelloWorldExample.Message;
- 
+
+global java.util.List list
+ /*
 rule "Hello World"
     dialect "mvel"
 	when
@@ -21,4 +23,14 @@
 		System.out.println( message ); 
 	System.out.println( message ); 
 	System.out.println( message ); 			
+end
+*/
+
+rule "new rule"
+		dialect "mvel"
+	when
+	    m : Message( status == Message.HELLO, message : message )
+		eval( null )
+	then
+		System.out.println( list );
 end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-examples/drools-insurance/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-insurance/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-examples/drools-insurance/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -8,7 +8,7 @@
     <artifactId>insurance</artifactId>
     <packaging>war</packaging>
     <name>DroolsInsurance</name>
-    <version>4.1.0.SNAPSHOT</version>
+    <version>5.0.0.SNAPSHOT</version>
     <description>
     </description>
 
@@ -263,7 +263,7 @@
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-core</artifactId>
-            <version>4.1.0.SNAPSHOT</version>
+            <version>5.0.0.SNAPSHOT</version>
         </dependency>
 
     </dependencies>

Modified: labs/jbossrules/trunk/drools-jbrms/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-jbrms/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,63 +1,62 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/1.1.2/svnkit-1.1.2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6/dom4j-1.6.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.0.0.ga/hibernate-commons-annotations-3.0.0.ga.jar"/>
-	<classpathentry kind="var" path="M2_REPO/emma/emma/2.0.5312/emma-2.0.5312.jar"/>
-	<classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.2/el-api-1.2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar"/>
-	<classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.3.0/slf4j-api-1.3.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.2.1.6/derby-10.2.1.6.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.1/commons-io-1.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.GA.jar"/>
-	<classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
-	<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
-	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
-	<classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.3.0/slf4j-log4j12-1.3.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.0.0/lucene-core-2.0.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
-	<classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>
-	<classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/1.4.60/gwt-servlet-1.4.60.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.3/jackrabbit-jcr-commons-1.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.3/jackrabbit-core-1.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/jboss/javassist/3.3.ga/javassist-3.3.ga.jar"/>
-	<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-text-extractors/1.3/jackrabbit-text-extractors-1.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.0.0.CR2/jboss-seam-2.0.0.CR2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/javax/el/el-ri/1.2/el-ri-1.2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.3/jackrabbit-api-1.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.4.sp1/hibernate-3.2.4.sp1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-el/2.0.0.CR1/jboss-el-2.0.0.CR1.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/drools-analytics"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/drools-decisiontables"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/drools-repository"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+  <classpathentry kind="src" path="src/main/java"/>
+  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
+  <classpathentry kind="output" path="target/classes"/>
+  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="var" path="M2_REPO/emma/emma/2.0.5312/emma-2.0.5312.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.4.sp1/hibernate-3.2.4.sp1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.3/jackrabbit-api-1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>
+  <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+  <classpathentry kind="src" path="/drools-repository"/>
+  <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.1/commons-io-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jboss/javassist/3.3.ga/javassist-3.3.ga.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.0.0.ga/hibernate-commons-annotations-3.0.0.ga.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/el/el-ri/1.2/el-ri-1.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-el/2.0.0.CR1/jboss-el-2.0.0.CR1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.3.0/slf4j-api-1.3.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.0.0/lucene-core-2.0.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.3.0/slf4j-log4j12-1.3.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"/>
+  <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.2.1.6/derby-10.2.1.6.jar"/>
+  <classpathentry kind="src" path="/drools-decisiontables"/>
+  <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/1.4.60/gwt-servlet-1.4.60.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.2/el-api-1.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.0.0.CR2/jboss-seam-2.0.0.CR2.jar"/>
+  <classpathentry kind="src" path="/drools-compiler"/>
+  <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar"/>
+  <classpathentry kind="src" path="/drools-analytics"/>
+  <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/1.1.2/svnkit-1.1.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar"/>
+  <classpathentry kind="src" path="/drools-core"/>
+  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6/dom4j-1.6.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.3/jackrabbit-jcr-commons-1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.3/jackrabbit-core-1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-text-extractors/1.3/jackrabbit-text-extractors-1.3.jar"/>
+</classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/.project
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/.project	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-jbrms/.project	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,7 +1,13 @@
 <projectDescription>
   <name>drools-jbrms</name>
   <comment>A rule production system</comment>
-  <projects/>
+  <projects>
+    <project>drools-repository</project>
+    <project>drools-decisiontables</project>
+    <project>drools-compiler</project>
+    <project>drools-analytics</project>
+    <project>drools-core</project>
+  </projects>
   <buildSpec>
     <buildCommand>
       <name>org.eclipse.jdt.core.javabuilder</name>

Modified: labs/jbossrules/trunk/drools-jbrms/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-jbrms/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -17,7 +17,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	  <version>4.1.0.SNAPSHOT</version>
+	  <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-jbrms</artifactId>

Modified: labs/jbossrules/trunk/drools-jsr94/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-jsr94/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,16 +5,16 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94/1.1/jsr94-1.1.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94-sigtest/1.1/jsr94-sigtest-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94/1.1/jsr94-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-alpha2-dp2-java1.5/mvel-2.0-alpha2-dp2-java1.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94-tck/1.0.3/jsr94-tck-1.0.3.jar"/>
+  <classpathentry kind="src" path="/drools-decisiontables"/>
   <classpathentry kind="src" path="/drools-core"/>
   <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94-sigtest/1.1/jsr94-sigtest-1.1.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
   <classpathentry kind="src" path="/drools-compiler"/>
-  <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94-tck/1.0.3/jsr94-tck-1.0.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
-  <classpathentry kind="src" path="/drools-decisiontables"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jsr94/.project
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/.project	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-jsr94/.project	2008-02-05 18:38:51 UTC (rev 18319)
@@ -1,7 +1,11 @@
 <projectDescription>
   <name>drools-jsr94</name>
   <comment>A rule production system</comment>
-  <projects/>
+  <projects>
+    <project>drools-decisiontables</project>
+    <project>drools-core</project>
+    <project>drools-compiler</project>
+  </projects>
   <buildSpec>
     <buildCommand>
       <name>org.eclipse.jdt.core.javabuilder</name>

Modified: labs/jbossrules/trunk/drools-jsr94/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-jsr94/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	<version>4.1.0.SNAPSHOT</version>
+	<version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-jsr94</artifactId>

Modified: labs/jbossrules/trunk/drools-repository/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-repository/.classpath	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-repository/.classpath	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,20 +5,20 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.3/jackrabbit-jcr-commons-1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.2.1.6/derby-10.2.1.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.3.0/slf4j-log4j12-1.3.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.0.0/lucene-core-2.0.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/1.1.2/svnkit-1.1.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
+  <classpathentry kind="var" path="M2_REPO/ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-text-extractors/1.3/jackrabbit-text-extractors-1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.3/jackrabbit-core-1.3.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.3/jackrabbit-api-1.3.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.3.0/slf4j-api-1.3.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.3.0/slf4j-log4j12-1.3.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.3/jackrabbit-jcr-commons-1.3.jar"/>
   <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/1.1.2/svnkit-1.1.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-text-extractors/1.3/jackrabbit-text-extractors-1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.3/jackrabbit-core-1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-repository/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-repository/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-repository/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	  <version>4.1.0.SNAPSHOT</version>
+	  <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-repository</artifactId>

Modified: labs/jbossrules/trunk/drools-server/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-server/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-server/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -5,7 +5,7 @@
   <parent>
     <artifactId>drools</artifactId>
     <groupId>org.drools</groupId>
-	  <version>4.1.0.SNAPSHOT</version>
+	  <version>5.0.0.SNAPSHOT</version>
   </parent>
 
   <artifactId>drools-server</artifactId>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -6,7 +6,7 @@
     <parent>
       <groupId>org.drools.solver</groupId>
       <artifactId>drools-solver</artifactId>
-      <version>4.1.0.SNAPSHOT</version>
+      <version>5.0.0.SNAPSHOT</version>
     </parent>
 
     <artifactId>drools-solver-core</artifactId>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.drools.solver</groupId>
         <artifactId>drools-solver</artifactId>
-        <version>4.1.0.SNAPSHOT</version>
+        <version>5.0.0.SNAPSHOT</version>
     </parent>
 
     <artifactId>drools-solver-examples</artifactId>

Modified: labs/jbossrules/trunk/drools-solver/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/drools-solver/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.drools</groupId>
         <artifactId>drools</artifactId>
-        <version>4.1.0.SNAPSHOT</version>
+        <version>5.0.0.SNAPSHOT</version>
     </parent>
 
     <groupId>org.drools.solver</groupId>

Modified: labs/jbossrules/trunk/pom.xml
===================================================================
--- labs/jbossrules/trunk/pom.xml	2008-02-05 17:56:14 UTC (rev 18318)
+++ labs/jbossrules/trunk/pom.xml	2008-02-05 18:38:51 UTC (rev 18319)
@@ -8,7 +8,7 @@
   <packaging>pom</packaging>
   <name>Drools</name>
   <!-- TODO Use -SNAPSHOT instead of .SNAPSHOT (gives problems with building the drools eclipse plugin) -->
-  <version>4.1.0.SNAPSHOT</version>
+  <version>5.0.0.SNAPSHOT</version>
   <description>A rule production system</description>
   <url>http://www.jboss.com/products/rules</url>
 
@@ -186,7 +186,7 @@
       <id>basedir</id>
       <url>file://${basedir}/m2_repo</url>
     </repository>
-
+    
     <repository>
       <id>Maven Snapshots</id>
       <url>http://snapshots.maven.codehaus.org/maven2/</url>
@@ -210,6 +210,7 @@
        <enabled>false</enabled>
      </releases>
    </repository>
+   
   </repositories>
 
   <pluginRepositories>
@@ -618,6 +619,7 @@
     <module>drools-ant</module>
     <module>drools-repository</module>
     <module>drools-jbrms</module>
+    <module>drools-clips</module>
     <!--module>drools-examples</module-->
     <!--module>drools-solver</module--><!-- Use the profile solver to add it -->
   </modules>
@@ -782,7 +784,7 @@
       <dependency><!-- TODO deploy mvel to the jboss repo or snapshot repo, instead of the dir m2_repo hack -->
         <groupId>org.mvel</groupId>
         <artifactId>mvel</artifactId>
-        <version>1.2.21</version>
+        <version>2.0-alpha2-dp2-java1.5</version>
       </dependency>
 
       <!-- drools-compiler -->




More information about the jboss-svn-commits mailing list