[jboss-svn-commits] JBL Code SVN: r19423 - in labs/jbossrules/trunk: drools-analytics/src/main/java/org/drools/analytics/report/html and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Apr 6 00:10:52 EDT 2008


Author: cbrock
Date: 2008-04-06 00:10:51 -0400 (Sun, 06 Apr 2008)
New Revision: 19423

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/test/
Modified:
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaProcessBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaRuleBuilder.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/JavaFunctionBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java
   labs/jbossrules/trunk/pom.xml
Log:
MVEL 2.0 Templates integrated

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -10,7 +10,7 @@
 import org.drools.analytics.report.components.AnalyticsMessageBase;
 import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
 import org.drools.analytics.report.components.Cause;
-import org.mvel.TemplateInterpreter;
+import org.mvel.templates.TemplateRuntime;
 
 /**
  * 
@@ -38,7 +38,7 @@
 		map.put("title", title);
 		map.put("messages", messageTemplates);
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 
 	public static String visitAnalyticsMessage(AnalyticsMessageBase message,
@@ -76,6 +76,6 @@
 		map.put("message", message.getMessage());
 		map.put("causes", causeUrls);
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 }

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -12,7 +12,7 @@
 import org.drools.analytics.dao.AnalyticsData;
 import org.drools.analytics.dao.AnalyticsResult;
 import org.drools.analytics.report.components.RangeCheckCause;
-import org.mvel.TemplateInterpreter;
+import org.mvel.templates.TemplateRuntime;
 
 class ComponentsReportVisitor extends ReportVisitor {
 
@@ -30,7 +30,7 @@
 
 		String myTemplate = readFile("packages.htm");
 
-		String result = TemplateInterpreter.evalToString(myTemplate, map);
+		String result = String.valueOf(TemplateRuntime.eval(myTemplate, map));
 
 		return result;
 	}
@@ -46,7 +46,7 @@
 
 		String myTemplate = readFile("objectTypes.htm");
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 
 	public static String visitRule(String sourceFolder, AnalyticsRule rule,
@@ -63,7 +63,7 @@
 
 		String myTemplate = readFile("rule.htm");
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 
 	public static String visitObjectType(String sourceFolder,
@@ -81,7 +81,7 @@
 
 		String myTemplate = readFile("objectType.htm");
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 
 	public static String visitField(String sourceFolder, Field field,
@@ -116,6 +116,6 @@
 
 		String myTemplate = readFile("field.htm");
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 }

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -14,7 +14,7 @@
 import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
 import org.drools.analytics.report.components.RangeCheckCause;
 import org.drools.base.evaluators.Operator;
-import org.mvel.TemplateInterpreter;
+import org.mvel.templates.TemplateRuntime;
 
 class MissingRangesReportVisitor extends ReportVisitor {
 
@@ -103,9 +103,9 @@
 
 		String myTemplate = readFile("ranges.htm");
 
-		String result = TemplateInterpreter.evalToString(myTemplate, map);
+        String result = String.valueOf(TemplateRuntime.eval(myTemplate, map));
 
-		return result;
+        return result;
 	}
 
 	private static void processRangeOutput(DataRow dataRow,
@@ -145,9 +145,9 @@
 
 		String myTemplate = readFile("missingRange.htm");
 
-		String result = TemplateInterpreter.evalToString(myTemplate, map);
+        String result = String.valueOf(TemplateRuntime.eval(myTemplate, map));
 
-		return result;
+        return result;
 	}
 }
 

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -1,5 +1,7 @@
 package org.drools.analytics.report.html;
 
+import org.mvel.templates.TemplateRuntime;
+
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
@@ -11,8 +13,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.mvel.TemplateInterpreter;
-
 abstract class ReportModeller {
 
 	protected static String formPage(String sourceFolder, String content) {
@@ -25,7 +25,7 @@
 		map.put("header", ReportVisitor.processHeader(sourceFolder));
 		map.put("content", content);
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 
 	public static void copyFile(String destination, String filename)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -1,12 +1,13 @@
 package org.drools.analytics.report.html;
 
+import org.mvel.templates.TemplateRuntime;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.mvel.TemplateInterpreter;
 
 abstract class ReportVisitor {
 
@@ -20,7 +21,7 @@
 
 		String myTemplate = readFile("header.htm");
 
-		return TemplateInterpreter.evalToString(myTemplate, map);
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
 	}
 
 	protected static String readFile(String fileName) {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaProcessBuilder.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaProcessBuilder.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -1,29 +1,34 @@
 package org.drools.rule.builder.dialect.java;
 
-import java.io.InputStreamReader;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.rule.builder.ProcessBuildContext;
+import org.drools.util.StringUtils;
+import org.mvel.templates.SimpleTemplateRegistry;
+import org.mvel.templates.TemplateRegistry;
+import org.mvel.templates.TemplateCompiler;
+import org.mvel.templates.TemplateRuntime;
+import org.mvel.integration.impl.MapVariableResolverFactory;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.drools.lang.descr.BaseDescr;
-import org.drools.rule.builder.ProcessBuildContext;
-import org.drools.util.StringUtils;
-import org.mvel.MVEL;
-import org.mvel.MVELTemplateRegistry;
-import org.mvel.TemplateInterpreter;
-import org.mvel.TemplateRegistry;
-
 public class AbstractJavaProcessBuilder {
 
-    protected static final TemplateRegistry RULE_REGISTRY    = new MVELTemplateRegistry();
-    protected static final TemplateRegistry INVOKER_REGISTRY = new MVELTemplateRegistry();
+    protected static final TemplateRegistry RULE_REGISTRY = new SimpleTemplateRegistry();
+    protected static final TemplateRegistry INVOKER_REGISTRY = new SimpleTemplateRegistry();
 
     static {
-        MVEL.setThreadSafe( true );        
-        RULE_REGISTRY.registerTemplate( new InputStreamReader( AbstractJavaProcessBuilder.class.getResourceAsStream( "javaRule.mvel" ) ) );
-        INVOKER_REGISTRY.registerTemplate( new InputStreamReader( AbstractJavaProcessBuilder.class.getResourceAsStream( "javaInvokers.mvel" ) ) );
+        RULE_REGISTRY.addNamedTemplate("rules", TemplateCompiler.compileTemplate(AbstractJavaProcessBuilder.class.getResourceAsStream("javaRule.mvel"), null));
+        INVOKER_REGISTRY.addNamedTemplate("invokers", TemplateCompiler.compileTemplate(AbstractJavaProcessBuilder.class.getResourceAsStream("javaInvokers.mvel"), null));
 
+        /**
+         * Process these templates
+         */
+        TemplateRuntime.execute(RULE_REGISTRY.getNamedTemplate("rules"), null, null, RULE_REGISTRY);
+        TemplateRuntime.execute(INVOKER_REGISTRY.getNamedTemplate("invokers"), null, null, INVOKER_REGISTRY);
+
     }
 
     public TemplateRegistry getRuleTemplateRegistry() {
@@ -40,37 +45,37 @@
                                      final String[] globals) {
         final Map map = new HashMap();
 
-        map.put( "methodName",
-                 className );
+        map.put("methodName",
+                className);
 
-        map.put( "package",
-                 context.getPkg().getName() );
+        map.put("package",
+                context.getPkg().getName());
 
-        map.put( "processClassName",
-                 StringUtils.ucFirst( context.getProcessDescr().getClassName() ) );
+        map.put("processClassName",
+                StringUtils.ucFirst(context.getProcessDescr().getClassName()));
 
-        map.put( "invokerClassName",
-                 context.getProcessDescr().getClassName() + StringUtils.ucFirst( className ) + "Invoker" );
+        map.put("invokerClassName",
+                context.getProcessDescr().getClassName() + StringUtils.ucFirst(className) + "Invoker");
 
-        if ( text != null ) {
-            map.put( "text",
-                     text );
+        if (text != null) {
+            map.put("text",
+                    text);
 
-            map.put( "hashCode",
-                     new Integer( text.hashCode() ) );
+            map.put("hashCode",
+                    new Integer(text.hashCode()));
         }
 
-        final List globalTypes = new ArrayList( globals.length );
-        for ( int i = 0, length = globals.length; i < length; i++ ) {
-            globalTypes.add( ((Class) context.getPkg().getGlobals().get( globals[i] )).getName().replace( '$',
-                                                                                                          '.' ) );
+        final List globalTypes = new ArrayList(globals.length);
+        for (int i = 0, length = globals.length; i < length; i++) {
+            globalTypes.add(((Class) context.getPkg().getGlobals().get(globals[i])).getName().replace('$',
+                    '.'));
         }
 
-        map.put( "globals",
-                 globals );
+        map.put("globals",
+                globals);
 
-        map.put( "globalTypes",
-                 globalTypes );
+        map.put("globalTypes",
+                globalTypes);
 
         return map;
     }
@@ -83,22 +88,21 @@
                                  final Object invokerLookup,
                                  final BaseDescr descrLookup) {
         TemplateRegistry registry = getRuleTemplateRegistry();
-        context.getMethods().add( TemplateInterpreter.parse( registry.getTemplate( ruleTemplate ),
-                                                             null,
-                                                             vars,
-                                                             registry ) );
 
+        context.getMethods().add(
+                TemplateRuntime.execute(registry.getNamedTemplate(ruleTemplate), null, new MapVariableResolverFactory(vars), registry)
+        );
+
         registry = getInvokerTemplateRegistry();
-        final String invokerClassName = context.getPkg().getName() + "." + context.getProcessDescr().getClassName() + StringUtils.ucFirst( className ) + "Invoker";
-        context.getInvokers().put( invokerClassName,
-                                   TemplateInterpreter.parse( registry.getTemplate( invokerTemplate ),
-                                                              null,
-                                                              vars,
-                                                              registry ) );
+        final String invokerClassName = context.getPkg().getName() + "." + context.getProcessDescr().getClassName() + StringUtils.ucFirst(className) + "Invoker";
 
-        context.getInvokerLookups().put( invokerClassName,
-                                         invokerLookup );
-        context.getDescrLookups().put( invokerClassName,
-                                       descrLookup );
+        context.getInvokers().put(invokerClassName,
+                TemplateRuntime.execute(registry.getNamedTemplate(invokerTemplate), null, new MapVariableResolverFactory(vars), registry)
+        );
+
+        context.getInvokerLookups().put(invokerClassName,
+                invokerLookup);
+        context.getDescrLookups().put(invokerClassName,
+                descrLookup);
     }
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaRuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaRuleBuilder.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaRuleBuilder.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -11,22 +11,31 @@
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.util.StringUtils;
 import org.mvel.MVEL;
-import org.mvel.MVELTemplateRegistry;
-import org.mvel.TemplateInterpreter;
-import org.mvel.TemplateRegistry;
+import org.mvel.integration.impl.MapVariableResolverFactory;
+import org.mvel.templates.TemplateRegistry;
+import org.mvel.templates.SimpleTemplateRegistry;
+import org.mvel.templates.TemplateRuntime;
+import org.mvel.templates.TemplateCompiler;
 import org.mvel.optimizers.OptimizerFactory;
+import com.sun.org.apache.xalan.internal.xsltc.compiler.Template;
 
 public class AbstractJavaRuleBuilder {
 
-    protected static final TemplateRegistry RULE_REGISTRY    = new MVELTemplateRegistry();
-    protected static final TemplateRegistry INVOKER_REGISTRY = new MVELTemplateRegistry();
+    protected static final TemplateRegistry RULE_REGISTRY = new SimpleTemplateRegistry();
+    protected static final TemplateRegistry INVOKER_REGISTRY = new SimpleTemplateRegistry();
 
     static {
-        MVEL.setThreadSafe( true );
-        OptimizerFactory.setDefaultOptimizer( "reflective" );
-        RULE_REGISTRY.registerTemplate( new InputStreamReader( AbstractJavaRuleBuilder.class.getResourceAsStream( "javaRule.mvel" ) ) );
-        INVOKER_REGISTRY.registerTemplate( new InputStreamReader( AbstractJavaRuleBuilder.class.getResourceAsStream( "javaInvokers.mvel" ) ) );
-        
+        OptimizerFactory.setDefaultOptimizer("reflective");
+
+        RULE_REGISTRY.addNamedTemplate("rules", TemplateCompiler.compileTemplate(AbstractJavaRuleBuilder.class.getResourceAsStream("javaRule.mvel"), null));
+        INVOKER_REGISTRY.addNamedTemplate("invokers", TemplateCompiler.compileTemplate(AbstractJavaRuleBuilder.class.getResourceAsStream("javaInvokers.mvel"), null));
+
+        /**
+         * Process these templates
+         */
+        TemplateRuntime.execute(RULE_REGISTRY.getNamedTemplate("rules"), null, null, RULE_REGISTRY);
+        TemplateRuntime.execute(INVOKER_REGISTRY.getNamedTemplate("invokers"), null, null, INVOKER_REGISTRY);
+
     }
 
     public TemplateRegistry getRuleTemplateRegistry() {
@@ -45,61 +54,61 @@
                                      final String[] globals) {
         final Map map = new HashMap();
 
-        map.put( "methodName",
-                 className );
+        map.put("methodName",
+                className);
 
-        map.put( "package",
-                 context.getPkg().getName() );
+        map.put("package",
+                context.getPkg().getName());
 
-        map.put( "ruleClassName",
-                 StringUtils.ucFirst( context.getRuleDescr().getClassName() ) );
+        map.put("ruleClassName",
+                StringUtils.ucFirst(context.getRuleDescr().getClassName()));
 
-        map.put( "invokerClassName",
-                 context.getRuleDescr().getClassName() + StringUtils.ucFirst( className ) + "Invoker" );
+        map.put("invokerClassName",
+                context.getRuleDescr().getClassName() + StringUtils.ucFirst(className) + "Invoker");
 
-        if ( text != null ) {
-            map.put( "text",
-                     text );
+        if (text != null) {
+            map.put("text",
+                    text);
 
-            map.put( "hashCode",
-                     new Integer( text.hashCode() ) );
+            map.put("hashCode",
+                    new Integer(text.hashCode()));
         }
 
         final String[] declarationTypes = new String[declarations.length];
-        for ( int i = 0, size = declarations.length; i < size; i++ ) {
-            declarationTypes[i] = ((JavaDialect) context.getDialect()).getTypeFixer().fix( declarations[i] );
+        for (int i = 0, size = declarations.length; i < size; i++) {
+            declarationTypes[i] = ((JavaDialect) context.getDialect()).getTypeFixer().fix(declarations[i]);
         }
 
-        map.put( "declarations",
-                 declarations );
+        map.put("declarations",
+                declarations);
 
-        map.put( "declarationTypes",
-                 declarationTypes );
+        map.put("declarationTypes",
+                declarationTypes);
 
-        if ( localDeclarations != null ) {
+        if (localDeclarations != null) {
             final String[] localDeclarationTypes = new String[localDeclarations.length];
-            for ( int i = 0, size = localDeclarations.length; i < size; i++ ) {
-                localDeclarationTypes[i] = ((JavaDialect) context.getDialect()).getTypeFixer().fix( localDeclarations[i] );
+            for (int i = 0, size = localDeclarations.length; i < size; i++) {
+                localDeclarationTypes[i] = ((JavaDialect) context.getDialect()).getTypeFixer().fix(localDeclarations[i]);
             }
 
-            map.put( "localDeclarations",
-                     localDeclarations );
+            map.put("localDeclarations",
+                    localDeclarations);
 
-            map.put( "localDeclarationTypes",
-                     localDeclarationTypes );
+            map.put("localDeclarationTypes",
+                    localDeclarationTypes);
         }
 
-        final List globalTypes = new ArrayList( globals.length );
-        for ( int i = 0, length = globals.length; i < length; i++ ) {
-            globalTypes.add( ((Class) context.getPkg().getGlobals().get( globals[i] )).getName().replace( '$',
-                                                                                                          '.' ) );
+        final List globalTypes = new ArrayList(globals.length);
+        for (int i = 0, length = globals.length; i < length; i++) {
+            globalTypes.add(((Class) context.getPkg().getGlobals().get(globals[i])).getName().replace('$',
+                    '.'));
         }
 
-        map.put( "globals",
-                 globals );
+        map.put("globals",
+                globals);
 
-        map.put( "globalTypes",
-                 globalTypes );
+        map.put("globalTypes",
+                globalTypes);
 
         return map;
     }
@@ -112,22 +121,28 @@
                                  final Object invokerLookup,
                                  final BaseDescr descrLookup) {
         TemplateRegistry registry = getRuleTemplateRegistry();
-        context.getMethods().add( TemplateInterpreter.parse( registry.getTemplate( ruleTemplate ),
-                                                             null,
-                                                             vars,
-                                                             registry ) );
 
+        context.getMethods().add(
+             TemplateRuntime.execute(registry.getNamedTemplate(ruleTemplate), null, new MapVariableResolverFactory(vars), registry)
+        );
+
+
         registry = getInvokerTemplateRegistry();
-        final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + StringUtils.ucFirst( className ) + "Invoker";
-        context.getInvokers().put( invokerClassName,
-                                   TemplateInterpreter.parse( registry.getTemplate( invokerTemplate ),
-                                                              null,
-                                                              vars,
-                                                              registry ) );
+        final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + StringUtils.ucFirst(className) + "Invoker";
 
-        context.getInvokerLookups().put( invokerClassName,
-                                         invokerLookup );
-        context.getDescrLookups().put( invokerClassName,
-                                       descrLookup );
+
+        Object debug;
+        context.getInvokers().put(invokerClassName,
+              debug = TemplateRuntime.execute(registry.getNamedTemplate(invokerTemplate), null, new MapVariableResolverFactory(vars), registry)
+        );
+
+        System.out.println("----");
+        System.out.println(String.valueOf(debug));
+        System.out.println("----");
+
+        context.getInvokerLookups().put(invokerClassName,
+                invokerLookup);
+        context.getDescrLookups().put(invokerClassName,
+                descrLookup);
     }
 }

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-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -78,53 +78,53 @@
 import org.drools.util.StringUtils;
 
 public class JavaDialect
-    implements
-    Dialect {
+        implements
+        Dialect {
 
-    public static final String                       ID                          = "java";
+    public static final String ID = "java";
 
-    private final static String                      EXPRESSION_DIALECT_NAME     = "mvel";
+    private final static String EXPRESSION_DIALECT_NAME = "mvel";
     // builders
-    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 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 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;
-    private DeclarationTypeFixer                     typeFixer;
-    private JavaExprAnalyzer                         analyzer;
+    private KnowledgeHelperFixer knowledgeHelperFixer;
+    private DeclarationTypeFixer typeFixer;
+    private JavaExprAnalyzer analyzer;
 
-    private JavaDialectConfiguration                 configuration;
+    private JavaDialectConfiguration configuration;
 
-    private Package                                  pkg;
-    private JavaCompiler                             compiler;
-    private List                                     generatedClassList;
-    private MemoryResourceReader                     src;
-    private PackageStore                             packageStoreWrapper;
-    private Map                                      errorHandlers;
-    private List                                     results;
-    private PackageBuilder                           packageBuilder;
+    private Package pkg;
+    private JavaCompiler compiler;
+    private List generatedClassList;
+    private MemoryResourceReader src;
+    private PackageStore packageStoreWrapper;
+    private Map errorHandlers;
+    private List results;
+    private PackageBuilder packageBuilder;
 
-    private TypeResolver                             typeResolver;
-    private ClassFieldExtractorCache                 classFieldExtractorCache;
+    private TypeResolver typeResolver;
+    private ClassFieldExtractorCache classFieldExtractorCache;
 
     // a map of registered builders
-    private static Map                               builders;
-    
+    private static Map builders;
+
     public JavaDialect() {
 
     }
@@ -132,7 +132,7 @@
     public void init(PackageBuilder builder) {
         this.packageBuilder = builder;
         this.pkg = builder.getPackage();
-        this.configuration = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "java" );
+        this.configuration = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration("java");
         this.typeResolver = builder.getTypeResolver();
         this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
 
@@ -140,11 +140,11 @@
         this.typeFixer = new DeclarationTypeFixer();
         this.analyzer = new JavaExprAnalyzer();
 
-        if ( pkg != null ) {
-            init( pkg );
+        if (pkg != null) {
+            init(pkg);
         }
 
-        if ( this.builders == null ) {
+        if (this.builders == null) {
             initBuilder();
         }
 
@@ -157,43 +157,43 @@
         // if we want to
         this.builders = new HashMap();
 
-        this.builders.put( CollectDescr.class,
-                           collect );
+        this.builders.put(CollectDescr.class,
+                collect);
 
-        this.builders.put( ForallDescr.class,
-                           forall );
+        this.builders.put(ForallDescr.class,
+                forall);
 
         final GroupElementBuilder gebuilder = new GroupElementBuilder();
 
-        this.builders.put( AndDescr.class,
-                           gebuilder );
+        this.builders.put(AndDescr.class,
+                gebuilder);
 
-        this.builders.put( OrDescr.class,
-                           gebuilder );
+        this.builders.put(OrDescr.class,
+                gebuilder);
 
-        this.builders.put( NotDescr.class,
-                           gebuilder );
+        this.builders.put(NotDescr.class,
+                gebuilder);
 
-        this.builders.put( ExistsDescr.class,
-                           gebuilder );
+        this.builders.put(ExistsDescr.class,
+                gebuilder);
 
-        this.builders.put( PatternDescr.class,
-                           getPatternBuilder() );
+        this.builders.put(PatternDescr.class,
+                getPatternBuilder());
 
-        this.builders.put( QueryDescr.class,
-                           getQueryBuilder() );
+        this.builders.put(QueryDescr.class,
+                getQueryBuilder());
 
-        this.builders.put( FromDescr.class,
-                           getFromBuilder() );
+        this.builders.put(FromDescr.class,
+                getFromBuilder());
 
-        this.builders.put( AccumulateDescr.class,
-                           getAccumulateBuilder() );
+        this.builders.put(AccumulateDescr.class,
+                getAccumulateBuilder());
 
-        this.builders.put( EvalDescr.class,
-                           getEvalBuilder() );
+        this.builders.put(EvalDescr.class,
+                getEvalBuilder());
 
-        this.builders.put( EntryPointDescr.class,
-                           getEntryPointBuilder() );
+        this.builders.put(EntryPointDescr.class,
+                getEntryPointBuilder());
     }
 
     public Map getBuilders() {
@@ -211,30 +211,30 @@
 
         this.generatedClassList = new ArrayList();
 
-        JavaDialectData data = new JavaDialectData( this.pkg.getDialectDatas() );
-        this.pkg.getDialectDatas().setDialectData( ID,
-                                                   data );
+        JavaDialectData data = new JavaDialectData(this.pkg.getDialectDatas());
+        this.pkg.getDialectDatas().setDialectData(ID,
+                data);
 
-        this.packageStoreWrapper = new PackageStore( data,
-                                                     this.results );
+        this.packageStoreWrapper = new PackageStore(data,
+                this.results);
     }
 
     public void init(final RuleDescr ruleDescr) {
-        final String ruleClassName = getUniqueLegalName( this.pkg.getName(),
-                                                         ruleDescr.getName(),
-                                                         "java",
-                                                         "Rule",
-                                                         this.src );
-        ruleDescr.setClassName( StringUtils.ucFirst( ruleClassName ) );
+        final String ruleClassName = getUniqueLegalName(this.pkg.getName(),
+                ruleDescr.getName(),
+                "java",
+                "Rule",
+                this.src);
+        ruleDescr.setClassName(StringUtils.ucFirst(ruleClassName));
     }
 
     public void init(final ProcessDescr processDescr) {
-        final String processDescrClassName = getUniqueLegalName( this.pkg.getName(),
-                                                                 processDescr.getName(),
-                                                                 "java",
-                                                                 "Process",
-                                                                 this.src );
-        processDescr.setClassName( StringUtils.ucFirst( processDescrClassName ) );
+        final String processDescrClassName = getUniqueLegalName(this.pkg.getName(),
+                processDescr.getName(),
+                "java",
+                "Process",
+                this.src);
+        processDescr.setClassName(StringUtils.ucFirst(processDescrClassName));
     }
 
     public String getExpressionDialectName() {
@@ -248,14 +248,15 @@
         JavaAnalysisResult result = null;
         try {
             //new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()}
-            result = this.analyzer.analyzeExpression( (String) content,
-                                                      availableIdentifiers );
-        } catch ( final Exception e ) {
-            context.getErrors().add( new DescrBuildError( context.getParentDescr(),
-                                                          descr,
-                                                          e,
-                                                          "Unable to determine the used declarations.\n" + e ) );
+            result = this.analyzer.analyzeExpression((String) content,
+                    availableIdentifiers);
         }
+        catch (final Exception e) {
+            context.getErrors().add(new DescrBuildError(context.getParentDescr(),
+                    descr,
+                    e,
+                    "Unable to determine the used declarations.\n" + e));
+        }
         return result;
     }
 
@@ -266,19 +267,21 @@
         JavaAnalysisResult result = null;
         try {
             // new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()} 
-            result = this.analyzer.analyzeBlock( text,
-                                                 availableIdentifiers );
-        } catch ( final Exception e ) {
-            context.getErrors().add( new DescrBuildError( context.getParentDescr(),
-                                                          descr,
-                                                          e,
-                                                          "Unable to determine the used declarations.\n" + e ) );
+            result = this.analyzer.analyzeBlock(text,
+                    availableIdentifiers);
         }
+        catch (final Exception e) {
+            context.getErrors().add(new DescrBuildError(context.getParentDescr(),
+                    descr,
+                    e,
+                    "Unable to determine the used declarations.\n" + e));
+        }
         return result;
     }
 
     /**
      * Returns the current type resolver instance
+     *
      * @return
      */
     public TypeResolver getTypeResolver() {
@@ -287,6 +290,7 @@
 
     /**
      * Returns the cache of field extractors
+     *
      * @return
      */
     public ClassFieldExtractorCache getClassFieldExtractorCache() {
@@ -295,6 +299,7 @@
 
     /**
      * Returns the Knowledge Helper Fixer
+     *
      * @return
      */
     public KnowledgeHelperFixer getKnowledgeHelperFixer() {
@@ -309,7 +314,7 @@
     }
 
     public RuleConditionBuilder getBuilder(final Class clazz) {
-        return (RuleConditionBuilder) this.builders.get( clazz );
+        return (RuleConditionBuilder) this.builders.get(clazz);
     }
 
     public PatternBuilder getPatternBuilder() {
@@ -378,46 +383,58 @@
      * code.
      */
     public void compileAll() {
-        if ( this.generatedClassList.isEmpty() ) {
+        if (this.generatedClassList.isEmpty()) {
             return;
         }
         final String[] classes = new String[this.generatedClassList.size()];
-        this.generatedClassList.toArray( classes );
-        
-        File dumpDir = this.configuration.getPackageBuilderConfiguration().getDumpDir(); 
-        if(  dumpDir != null ) {
-            dumpResources( classes,
-                           dumpDir );
+        this.generatedClassList.toArray(classes);
+
+
+        File dumpDir = this.configuration.getPackageBuilderConfiguration().getDumpDir();
+        if (dumpDir != null) {
+            dumpResources(classes,
+                    dumpDir);
         }
 
-        final CompilationResult result = this.compiler.compile( classes,
-                                                                this.src,
-                                                                this.packageStoreWrapper,
-                                                                this.pkg.getDialectDatas().getClassLoader() );
 
+//        for (String clazz : classes) {
+//            System.out.println("---" + clazz + "----");
+//            for (byte b : src.getBytes(clazz)) {
+//                System.out.print((char) b);
+//            }
+//            System.out.println("--- END: " + clazz + "----");
+//        }
+
+
+        final CompilationResult result = this.compiler.compile(classes,
+                this.src,
+                this.packageStoreWrapper,
+                this.pkg.getDialectDatas().getClassLoader());
+
         //this will sort out the errors based on what class/file they happened in
-        if ( result.getErrors().length > 0 ) {
-            for ( int i = 0; i < result.getErrors().length; i++ ) {
+        if (result.getErrors().length > 0) {
+            for (int i = 0; i < result.getErrors().length; i++) {
                 final CompilationProblem err = result.getErrors()[i];
 
                 //                System.out.println("Line: "+err.getStartLine());
                 //                LineMappings maps = this.pkg.getPackageCompilationData().getLineMappings( err.getFileName().replace( '/', '.' ).substring( 0, err.getFileName().length() - 5 ) );
                 //                int line = err.getStartLine() + maps.getStartLine() - maps.getOffset() -1;
                 //                System.out.println("Map:  "+line);
-                final ErrorHandler handler = (ErrorHandler) this.errorHandlers.get( err.getFileName() );
-                if ( handler instanceof RuleErrorHandler ) {
+                final ErrorHandler handler = (ErrorHandler) this.errorHandlers.get(err.getFileName());
+                if (handler instanceof RuleErrorHandler) {
                     final RuleErrorHandler rh = (RuleErrorHandler) handler;
                 }
-                handler.addError( err );
+                handler.addError(err);
             }
 
             final Collection errors = this.errorHandlers.values();
-            for ( final Iterator iter = errors.iterator(); iter.hasNext(); ) {
+            for (final Iterator iter = errors.iterator(); iter.hasNext();) {
                 final ErrorHandler handler = (ErrorHandler) iter.next();
-                if ( handler.isInError() ) {
-                    if ( !(handler instanceof RuleInvokerErrorHandler) ) {
-                        this.results.add( handler.getError() );
-                    } else {
+                if (handler.isInError()) {
+                    if (!(handler instanceof RuleInvokerErrorHandler)) {
+                        this.results.add(handler.getError());
+                    }
+                    else {
                         //we don't really want to report invoker errors.
                         //mostly as they can happen when there is a syntax error in the RHS
                         //and otherwise, it is a programmatic error in drools itself.
@@ -439,24 +456,31 @@
      */
     private void dumpResources(final String[] classes,
                                File dumpDir) {
-        for( int i = 0; i < classes.length; i++ ) {
-            File target = new File( dumpDir, classes[i] );
+        for (int i = 0; i < classes.length; i++) {
+            File target = new File(dumpDir, classes[i]);
             FileOutputStream out = null;
             try {
                 File parent = target.getParentFile();
-                if( parent != null && ! parent.exists() ) {
+                if (parent != null && !parent.exists()) {
                     parent.mkdirs();
                 }
                 target.createNewFile();
-                out = new FileOutputStream( target );
-                out.write( this.src.getBytes( classes[i] ) );
-            } catch ( FileNotFoundException e ) {
+                out = new FileOutputStream(target);
+                out.write(this.src.getBytes(classes[i]));
+            }
+            catch (FileNotFoundException e) {
                 e.printStackTrace();
-            } catch ( IOException e ) {
+            }
+            catch (IOException e) {
                 e.printStackTrace();
-            } finally {
-                if( out != null ) try { out.close(); } catch (Exception e) {}
             }
+            finally {
+                if (out != null) try {
+                    out.close();
+                }
+                catch (Exception e) {
+                }
+            }
         }
     }
 
@@ -467,9 +491,9 @@
     public void addRule(final RuleBuildContext context) {
         RuleClassBuilder classBuilder = context.getDialect().getRuleClassBuilder();
 
-        String ruleClass = classBuilder.buildRule( context );
+        String ruleClass = classBuilder.buildRule(context);
         // return if there is no ruleclass name;
-        if ( ruleClass == null ) {
+        if (ruleClass == null) {
             return;
         }
 
@@ -477,47 +501,47 @@
         final RuleDescr ruleDescr = context.getRuleDescr();
 
         // The compilation result is for the entire rule, so difficult to associate with any descr
-        addClassCompileTask( this.pkg.getName() + "." + ruleDescr.getClassName(),
-                             ruleDescr,
-                             ruleClass,
-                             this.src,
-                             new RuleErrorHandler( ruleDescr,
-                                                   rule,
-                                                   "Rule Compilation error" ) );
+        addClassCompileTask(this.pkg.getName() + "." + ruleDescr.getClassName(),
+                ruleDescr,
+                ruleClass,
+                this.src,
+                new RuleErrorHandler(ruleDescr,
+                        rule,
+                        "Rule Compilation error"));
 
-        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData( this.ID );
+        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData(this.ID);
 
-        for ( final Iterator it = context.getInvokers().keySet().iterator(); it.hasNext(); ) {
+        for (final Iterator it = context.getInvokers().keySet().iterator(); it.hasNext();) {
             final String className = (String) it.next();
 
             // Check if an invoker - returnvalue, predicate, eval or consequence has been associated
             // 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 ) {
-                data.putInvoker( className,
-                                 invoker );
+            final Object invoker = context.getInvokerLookups().get(className);
+            if (invoker != null) {
+                data.putInvoker(className,
+                        invoker);
             }
-            final String text = (String) context.getInvokers().get( className );
+            final String text = (String) context.getInvokers().get(className);
 
-            final BaseDescr descr = (BaseDescr) context.getDescrLookups().get( className );
-            addClassCompileTask( className,
-                                 descr,
-                                 text,
-                                 this.src,
-                                 new RuleInvokerErrorHandler( descr,
-                                                              rule,
-                                                              "Unable to generate rule invoker." ) );
+            final BaseDescr descr = (BaseDescr) context.getDescrLookups().get(className);
+            addClassCompileTask(className,
+                    descr,
+                    text,
+                    this.src,
+                    new RuleInvokerErrorHandler(descr,
+                            rule,
+                            "Unable to generate rule invoker."));
 
         }
 
         // setup the line mappins for this rule
-        final String name = this.pkg.getName() + "." + StringUtils.ucFirst( ruleDescr.getClassName() );
-        final LineMappings mapping = new LineMappings( name );
-        mapping.setStartLine( ruleDescr.getConsequenceLine() );
-        mapping.setOffset( ruleDescr.getConsequenceOffset() );
+        final String name = this.pkg.getName() + "." + StringUtils.ucFirst(ruleDescr.getClassName());
+        final LineMappings mapping = new LineMappings(name);
+        mapping.setStartLine(ruleDescr.getConsequenceLine());
+        mapping.setOffset(ruleDescr.getConsequenceOffset());
 
-        this.pkg.getDialectDatas().getLineMappings().put( name,
-                                                          mapping );
+        this.pkg.getDialectDatas().getLineMappings().put(name,
+                mapping);
 
     }
 
@@ -528,8 +552,8 @@
     public void addProcess(final ProcessBuildContext context) {
         ProcessClassBuilder classBuilder = context.getDialect().getProcessClassBuilder();
 
-        String processClass = classBuilder.buildRule( context );
-        if ( processClass == null ) {
+        String processClass = classBuilder.buildRule(context);
+        if (processClass == null) {
             // nothing to compile.
             return;
         }
@@ -538,36 +562,36 @@
         final ProcessDescr processDescr = context.getProcessDescr();
 
         // The compilation result is for the entire rule, so difficult to associate with any descr
-        addClassCompileTask( this.pkg.getName() + "." + processDescr.getClassName(),
-                             processDescr,
-                             processClass,
-                             this.src,
-                             new ProcessErrorHandler( processDescr,
-                                                      process,
-                                                      "Process Compilation error" ) );
+        addClassCompileTask(this.pkg.getName() + "." + processDescr.getClassName(),
+                processDescr,
+                processClass,
+                this.src,
+                new ProcessErrorHandler(processDescr,
+                        process,
+                        "Process Compilation error"));
 
-        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData( this.ID );
+        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData(this.ID);
 
-        for ( final Iterator it = context.getInvokers().keySet().iterator(); it.hasNext(); ) {
+        for (final Iterator it = context.getInvokers().keySet().iterator(); it.hasNext();) {
             final String className = (String) it.next();
 
             // Check if an invoker - Action has been associated
             // 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 ) {
-                data.putInvoker( className,
-                                 invoker );
+            final Object invoker = context.getInvokerLookups().get(className);
+            if (invoker != null) {
+                data.putInvoker(className,
+                        invoker);
             }
-            final String text = (String) context.getInvokers().get( className );
+            final String text = (String) context.getInvokers().get(className);
 
-            final BaseDescr descr = (BaseDescr) context.getDescrLookups().get( className );
-            addClassCompileTask( className,
-                                 descr,
-                                 text,
-                                 this.src,
-                                 new ProcessInvokerErrorHandler( processDescr,
-                                                                 process,
-                                                                 "Unable to generate action invoker." ) );
+            final BaseDescr descr = (BaseDescr) context.getDescrLookups().get(className);
+            addClassCompileTask(className,
+                    descr,
+                    text,
+                    this.src,
+                    new ProcessInvokerErrorHandler(processDescr,
+                            process,
+                            "Unable to generate action invoker."));
 
         }
 
@@ -586,48 +610,48 @@
     public void addFunction(final FunctionDescr functionDescr,
                             final TypeResolver typeResolver) {
 
-        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData( this.ID );
+        JavaDialectData data = (JavaDialectData) this.pkg.getDialectDatas().getDialectData(this.ID);
         //System.out.println( functionDescr + " : " + typeResolver );
-        final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
-        functionDescr.setClassName( functionClassName );
+        final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst(functionDescr.getName());
+        functionDescr.setClassName(functionClassName);
 
-        this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
+        this.pkg.addStaticImport(functionClassName + "." + functionDescr.getName());
 
-        Function function = new Function( functionDescr.getName(),
-                                          this.ID );
-        this.pkg.addFunction( function );
+        Function function = new Function(functionDescr.getName(),
+                this.ID);
+        this.pkg.addFunction(function);
 
-        final String functionSrc = getFunctionBuilder().build( this.pkg,
-                                                               functionDescr,
-                                                               typeResolver,
-                                                               this.pkg.getDialectDatas().getLineMappings(),
-                                                               this.results );
+        final String functionSrc = getFunctionBuilder().build(this.pkg,
+                functionDescr,
+                typeResolver,
+                this.pkg.getDialectDatas().getLineMappings(),
+                this.results);
 
-        addClassCompileTask( functionClassName,
-                             functionDescr,
-                             functionSrc,
-                             this.src,
-                             new FunctionErrorHandler( functionDescr,
-                                                       "Function Compilation error" ) );
+        addClassCompileTask(functionClassName,
+                functionDescr,
+                functionSrc,
+                this.src,
+                new FunctionErrorHandler(functionDescr,
+                        "Function Compilation error"));
 
-        final LineMappings mapping = new LineMappings( functionClassName );
-        mapping.setStartLine( functionDescr.getLine() );
-        mapping.setOffset( functionDescr.getOffset() );
-        this.pkg.getDialectDatas().getLineMappings().put( functionClassName,
-                                                          mapping );
+        final LineMappings mapping = new LineMappings(functionClassName);
+        mapping.setStartLine(functionDescr.getLine());
+        mapping.setOffset(functionDescr.getOffset());
+        this.pkg.getDialectDatas().getLineMappings().put(functionClassName,
+                mapping);
     }
 
     public void preCompileAddFunction(FunctionDescr functionDescr,
                                       TypeResolver typeResolver) {
-        final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
-        this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
+        final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst(functionDescr.getName());
+        this.pkg.addStaticImport(functionClassName + "." + functionDescr.getName());
     }
 
     public void postCompileAddFunction(FunctionDescr functionDescr,
                                        TypeResolver typeResolver) {
-        final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
+        final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst(functionDescr.getName());
 
-        this.packageBuilder.getDialectRegistry().addStaticImport( functionClassName + "." + functionDescr.getName() );
+        this.packageBuilder.getDialectRegistry().addStaticImport(functionClassName + "." + functionDescr.getName());
     }
 
     /**
@@ -643,37 +667,37 @@
                                      final MemoryResourceReader src,
                                      final ErrorHandler handler) {
 
-        final String fileName = className.replace( '.',
-                                                   '/' ) + ".java";
+        final String fileName = className.replace('.',
+                '/') + ".java";
 
-        src.add( fileName,
-                 text.getBytes() );
+        src.add(fileName,
+                text.getBytes());
 
-        this.errorHandlers.put( fileName,
-                                handler );
+        this.errorHandlers.put(fileName,
+                handler);
 
-        addClassName( fileName );
+        addClassName(fileName);
     }
 
     public void addClassName(final String className) {
-        this.generatedClassList.add( className );
+        this.generatedClassList.add(className);
     }
 
     private void loadCompiler() {
-        switch ( this.configuration.getCompiler() ) {
-            case JavaDialectConfiguration.JANINO : {
-                this.compiler = JavaCompilerFactory.getInstance().createCompiler( "janino" );
+        switch (this.configuration.getCompiler()) {
+            case JavaDialectConfiguration.JANINO: {
+                this.compiler = JavaCompilerFactory.getInstance().createCompiler("janino");
                 break;
             }
-            case JavaDialectConfiguration.ECLIPSE :
-            default : {
-                this.compiler = JavaCompilerFactory.getInstance().createCompiler( "eclipse" );
+            case JavaDialectConfiguration.ECLIPSE:
+            default: {
+                this.compiler = JavaCompilerFactory.getInstance().createCompiler("eclipse");
                 JavaCompilerSettings settings = this.compiler.createDefaultSettings();
 
                 String lngLevel = this.configuration.getJavaLanguageLevel();
-                settings.setTargetVersion( lngLevel );
+                settings.setTargetVersion(lngLevel);
 
-                settings.setSourceVersion( lngLevel );
+                settings.setSourceVersion(lngLevel);
                 break;
             }
         }
@@ -693,7 +717,7 @@
 
     /**
      * Takes a given name and makes sure that its legal and doesn't already exist. If the file exists it increases counter appender untill it is unique.
-     *
+     * <p/>
      * TODO: move out to shared utility class
      *
      * @param packageName
@@ -707,23 +731,23 @@
                                             final String prefix,
                                             final ResourceReader src) {
         // replaces all non alphanumeric or $ chars with _
-        String newName = prefix + "_" + name.replaceAll( "[[^\\w]$]",
-                                                         "_" );
+        String newName = prefix + "_" + name.replaceAll("[[^\\w]$]",
+                "_");
 
         // make sure the class name does not exist, if it does increase the counter
         int counter = -1;
         boolean exists = true;
-        while ( exists ) {
+        while (exists) {
 
             counter++;
-            final String fileName = packageName.replaceAll( "\\.",
-                                                            "/" ) + newName + "_" + counter + ext;
+            final String fileName = packageName.replaceAll("\\.",
+                    "/") + newName + "_" + counter + ext;
 
             //MVEL:test null to Fix failing test on org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilderTest.testImperativeCodeError()
-            exists = src != null && src.isAvailable( fileName );
+            exists = src != null && src.isAvailable(fileName);
         }
         // we have duplicate file names so append counter
-        if ( counter >= 0 ) {
+        if (counter >= 0) {
             newName = newName + "_" + counter;
         }
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -18,8 +18,10 @@
 import org.drools.rule.Package;
 import org.drools.rule.builder.FunctionBuilder;
 import org.drools.util.StringUtils;
-import org.mvel.TemplateInterpreter;
+import org.mvel.templates.TemplateRuntime;
+import org.mvel.integration.impl.MapVariableResolverFactory;
 
+
 public class JavaFunctionBuilder
     implements
     FunctionBuilder {
@@ -93,8 +95,7 @@
         vars.put( "text",
                   functionDescr.getText() );
 
-        final String text = TemplateInterpreter.evalToString( template,
-                                                              vars );
+        final String text = String.valueOf(TemplateRuntime.eval( template, null, new MapVariableResolverFactory(vars)));
 
         //System.out.println( text );
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -44,6 +44,7 @@
     }
     public void setBoundIdentifiers(List[] boundIdentifiers) {
         this.boundIdentifiers = boundIdentifiers;
+        
     }
     public List getIdentifiers() {
         return identifiers;
@@ -71,6 +72,4 @@
     public void setMvelVariables(Map mvelVariables) {
         this.mvelVariables = mvelVariables;
     }
-    
-    
 }

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-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -76,9 +76,7 @@
 import org.mvel.util.CompilerTools;
 import org.mvel.util.ParseTools;
 
-public class MVELDialect
-    implements
-    Dialect, Externalizable {
+public class MVELDialect implements Dialect, Externalizable {
 
     public final static String                           ID                          = "mvel";
 
@@ -156,6 +154,7 @@
         out.writeObject(imports);
         out.writeBoolean(strictMode);
     }
+
     public static void setLanguageLevel(int level) {
         synchronized ( languageSet ) {
             // this synchronisation is needed as setLanguageLevel is now thread safe

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel	2008-04-06 04:10:51 UTC (rev 19423)
@@ -1,17 +1,17 @@
 package @{package};
 
- at foreach{imports as importEntry}
+ at foreach{importEntry : imports}
 import @{importEntry};
 @end{}
 
- at foreach{staticImports as importEntry}
+ at foreach{importEntry : staticImports}
 import static @{importEntry};
 @end{}
 
 public class @{className} implements java.io.Externalizable {
     private static final long serialVersionUID  = 400L;
         
-    public static @{returnType} @{methodName}(@foreach{parameterTypes as type, parameterNames as name}@{type} @{name}@end{","}) throws Exception {
+    public static @{returnType} @{methodName}(@foreach{type : parameterTypes, name : parameterNames}@{type} @{name}@end{","}) throws Exception {
         @{text}
     }      
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel	2008-04-06 04:10:51 UTC (rev 19423)
@@ -1,8 +1,7 @@
-getMethodBytecode() ::=<<
+ at declare{"getMethodBytecode"}
     public java.util.List getMethodBytecode() {
         org.drools.util.asm.MethodComparator.Tracer visit = new org.drools.util.asm.MethodComparator.Tracer("@{methodName}");
 
-
         java.io.InputStream is = @{ruleClassName}.class.getClassLoader().getResourceAsStream( "@{package}.@{ruleClassName}".replace( '.', '/' ) + ".class" );
 
         java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();
@@ -24,10 +23,10 @@
         org.drools.asm.util.TraceMethodVisitor trace = visit.getTrace();
         return trace.getText();
     }
->>=::
+ at end{}
 
 
-equals() ::=<<
+ at declare{"equals"}
     public boolean equals(Object object) {
         if (object == null ) {
             return false;
@@ -43,15 +42,15 @@
 
         return org.drools.util.asm.MethodComparator.compareBytecode( getMethodBytecode(), other.getMethodBytecode() );
     }
->>=::
+ at end{}
 
-hashCode() ::=<<
+ at declare{"hashCode"}
     public int hashCode() {
         return @{hashCode};
     }
->>=::
+ at end{}
 
-returnValueInvoker() ::=<<
+ at declare{"returnValueInvoker"}
 package @{package};
 
 public class @{invokerClassName} implements org.drools.spi.ReturnValueExpression, org.drools.spi.CompiledInvoker, java.io.Externalizable
@@ -67,32 +66,35 @@
                             org.drools.WorkingMemory workingMemory,
                             Object context ) throws Exception {
 
-        @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} = ( @{type} ) previousDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[@{i0}] ) ).getObject() );
+        @code{i0=0}@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} = ( @{type} ) previousDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[@{i0}] ) ).getObject() );
+        @code{i0++}
         @end{}
         @if{readLocalsFromTuple}
-          @foreach{localDeclarationTypes as type, localDeclarations as  declr} @{type} @{declr.identifier} = ( @{type} ) localDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( localDeclarations[@{i0}] ) ).getObject() );
+          @code{i0=0}@foreach{type : localDeclarationTypes, declr : localDeclarations} @{type} @{declr.identifier} = ( @{type} ) localDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( localDeclarations[@{i0}] ) ).getObject() );
+          @code{i0++}
           @end{}
         @else{}
-          @foreach{localDeclarationTypes as type, localDeclarations as declr} @{type} @{declr.identifier} = ( @{type} ) localDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, object );
+          @code{i0=0}@foreach{type : localDeclarationTypes, declr : localDeclarations} @{type} @{declr.identifier} = ( @{type} ) localDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, object );
+          @code{i0++}
           @end{}
         @end{}
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         return @{ruleClassName}.@{methodName}(
-            @foreach{declarations as declr} @{declr.identifier}
+            @foreach{declr : declarations} @{declr.identifier}
             @end{","}  @if{localDeclarations != empty && declarations != empty}, at end{}
-            @foreach{localDeclarations as declr} @{declr.identifier}
+            @foreach{declr :localDeclarations} @{declr.identifier}
             @end{","}@if{globals != empty && (localDeclarations != empty || declarations != empty)}, at end{}
-            @foreach{globals as identifier}@{identifier}
+            @foreach{identifier : globals}@{identifier}
             @end{","} );
     }
 
-    @includeByRef{hashCode(hashCode = hashCode)}
+    @includeNamed{"hashCode"}
 
-    @includeByRef{getMethodBytecode(package = package, ruleClassName = ruleClassName, methodName = methodName)}
+    @includeNamed{"getMethodBytecode"}
 
-    @includeByRef{equals()}
+    @includeNamed{"equals"}
 
     public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
     }
@@ -100,9 +102,9 @@
     public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
     }
 }
->>=::
+ at end{}
 
-predicateInvoker() ::=<<
+ at declare{"predicateInvoker"}
 package @{package};
 
 public class @{invokerClassName} implements org.drools.spi.PredicateExpression, org.drools.spi.CompiledInvoker, java.io.Externalizable
@@ -118,37 +120,40 @@
                             org.drools.WorkingMemory workingMemory,
                             Object context ) throws Exception {
 
-        @foreach{declarationTypes as type, declarations as  declr} @{type} @{declr.identifier} = ( @{type} ) previousDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[@{i0}] ) ).getObject() );
+        @code{i0=0}@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} = ( @{type} ) previousDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[@{i0}] ) ).getObject() );
+          @code{i0++}
         @end{}
-        @foreach{localDeclarationTypes as type, localDeclarations as  declr} @{type} @{declr.identifier} = ( @{type} ) localDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, object );
+        @code{i0=0}@foreach{type : localDeclarationTypes, declr : localDeclarations} @{type} @{declr.identifier} = ( @{type} ) localDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, object );
+          @code{i0++}
         @end{}
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         return @{ruleClassName}.@{methodName}(
-            @foreach{declarations as declr} @{declr.identifier}
+            @foreach{declr : declarations} @{declr.identifier}
             @end{","}  @if{localDeclarations != empty && declarations != empty}, at end{}
-            @foreach{localDeclarations as declr} @{declr.identifier}
+            @foreach{declr : localDeclarations} @{declr.identifier}
             @end{","}@if{globals != empty && (localDeclarations != empty || declarations != empty)}, at end{}
-            @foreach{globals as identifier}@{identifier}
+            @foreach{identifier : globals}@{identifier}
             @end{","} );
     }
 
-    @includeByRef{hashCode(hashCode = hashCode)}
 
-    @includeByRef{getMethodBytecode(package = package, ruleClassName = ruleClassName, methodName = methodName)}
+    @includeNamed{"hashCode"}
 
-    @includeByRef{equals()}
+    @includeNamed{"getMethodBytecode"}
 
+    @includeNamed{"equals"}
+
     public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
     }
 
     public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
     }
 }
->>=::
+ at end{}
 
-evalInvoker() ::=<<
+ at declare{"evalInvoker"}
 package @{package};
 
 public class @{invokerClassName} implements org.drools.spi.EvalExpression, org.drools.spi.CompiledInvoker, java.io.Externalizable
@@ -163,33 +168,36 @@
                             org.drools.WorkingMemory workingMemory,
                             Object context ) throws Exception {
 
-        @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( declarations[@{i0}] ) ).getObject() );
+        @code{i0=0}@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( declarations[@{i0}] ) ).getObject() );
+            @code{i0++}
         @end{}
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         return @{ruleClassName}.@{methodName}(
-            @foreach{declarations as declr} @{declr.identifier}
+            @foreach{declr : declarations} @{declr.identifier}
             @end{","} @if{globals != empty && declarations != empty}, at end{}
-            @foreach{globals as identifier}@{identifier}
+            @foreach{identifier : globals}@{identifier}
             @end{","} );
     }
 
-    @includeByRef{hashCode(hashCode = hashCode)}
+    @includeNamed{"hashCode"}
 
-    @includeByRef{getMethodBytecode(package = package, ruleClassName = ruleClassName, methodName = methodName)}
+    @includeNamed{"getMethodBytecode"}
 
-    @includeByRef{equals()}
+    @includeNamed{"equals"}
 
+
     public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
     }
 
     public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
     }
 }
->>=::
+ at end{}
 
-accumulateInvoker() ::=<<
+
+ at declare{"accumulateInvoker"}
 package @{package};
 
 import org.drools.asm.ClassReader;
@@ -209,14 +217,15 @@
                      org.drools.spi.Tuple leftTuple,
                      org.drools.rule.Declaration[] declarations,
                      org.drools.WorkingMemory workingMemory) throws Exception {
-        @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+        @code{i0=0}@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+            @code{i0++}
         @end{}
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         ((@{ruleClassName}.@{className})context).init(
-            @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
-	        @foreach{globals as identifier} @{identifier}@end{","} );
+            @foreach{declr : declarations} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
+	        @foreach{identifier : globals} @{identifier}@end{","} );
 
     }
 
@@ -227,24 +236,27 @@
                            org.drools.rule.Declaration[] declarations,
                            org.drools.rule.Declaration[] innerDeclarations,
                            org.drools.WorkingMemory workingMemory) throws Exception {
-        @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+        @code{ i0 = 0 }@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+            @code{ i0++ }
         @end{}
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
         @if{isMultiPattern}
-          @foreach{innerDeclarations as declr} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( innerDeclarations[@{i0}] ) ).getObject() );
+          @code{ i0 = 0 }@foreach{declr : innerDeclarations} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( innerDeclarations[@{i0}] ) ).getObject() );
+            @code{ i0++ }
           @end{}
         @else{}
-          @foreach{innerDeclarations as declr} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, handle.getObject() );
+          @code{ i0 = 0 }@foreach{declr : innerDeclarations} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, handle.getObject() );
+            @code{ i0++ }
           @end{}
         @end{}
         ((@{ruleClassName}.@{className})context).accumulate(
             workingMemory,
             innerDeclarations,
             handle.getObject()@if{declarations != empty}, at end{}
-            @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
-	        @foreach{globals as identifier} @{identifier}@end{","}@if{innerDeclarations != empty}, at end{}
-            @foreach{innerDeclarations as declr} @{declr.identifier}@end{","});
+            @foreach{declr : declarations} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+	        @foreach{identifier: globals} @{identifier}@end{","}@if{innerDeclarations != empty}, at end{}
+            @foreach{declr : innerDeclarations} @{declr.identifier}@end{","});
     }
 
     public void reverse(java.lang.Object workingMemoryContext,
@@ -254,15 +266,18 @@
                            org.drools.rule.Declaration[] declarations,
                            org.drools.rule.Declaration[] innerDeclarations,
                            org.drools.WorkingMemory workingMemory) throws Exception {
-        @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+        @code{ i0 = 0 }@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+            @code{ i0++ }
         @end{}
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
         @if{isMultiPattern}
-          @foreach{innerDeclarations as declr} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( innerDeclarations[@{i0}] ) ).getObject() );
+          @code{ i0 = 0}@foreach{declr : innerDeclarations} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( innerDeclarations[@{i0}] ) ).getObject() );
+            @code{ i0++ }
           @end{}
         @else{}
-          @foreach{innerDeclarations as declr} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, handle.getObject() );
+          @code{ i0 = 0 }@foreach{declr : innerDeclarations} @{declr.extractor.extractToClassName} @{declr.identifier} = (@{declr.extractor.extractToClassName}) innerDeclarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, handle.getObject() );
+            @code{ i0++ }
           @end{}
         @end{}
 
@@ -270,9 +285,9 @@
             workingMemory,
             innerDeclarations,
             handle.getObject()@if{declarations != empty}, at end{}
-            @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
-	        @foreach{globals as identifier} @{identifier}@end{","}@if{innerDeclarations != empty}, at end{}
-            @foreach{innerDeclarations as declr} @{declr.identifier}@end{","});
+            @foreach{declr : declarations} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+	        @foreach{identifier : globals} @{identifier}@end{","}@if{innerDeclarations != empty}, at end{}
+            @foreach{declr : innerDeclarations} @{declr.identifier}@end{","});
     }
 
     public Object getResult(java.lang.Object workingMemoryContext,
@@ -280,14 +295,15 @@
                             org.drools.spi.Tuple leftTuple,
                             org.drools.rule.Declaration[] declarations,
                             org.drools.WorkingMemory workingMemory) throws Exception {
-        @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+        @code{ i0 = 0 }@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} = ( @{type} ) declarations[@{i0}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) leftTuple.get( declarations[@{i0}] ) ).getObject() );
+            @code{ i0++ }
         @end{}
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         return ((@{ruleClassName}.@{className})context).getResult(
-            @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
-	        @foreach{globals as identifier} @{identifier}@end{","} );
+            @foreach{declr : declarations} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
+	        @foreach{identifier : globals} @{identifier}@end{","} );
     }
 
     public boolean supportsReverse() {
@@ -298,9 +314,9 @@
         return null;
     }
 
-    @includeByRef{hashCode(hashCode = hashCode)}
+    @includeNamed{"hashCode"}
 
-    @includeByRef{equals()}
+    @includeNamed("equals"}
 
     public java.util.List getMethodBytecode() {
         java.io.InputStream is = @{ruleClassName}.class.getClassLoader().getResourceAsStream( "@{package}.@{ruleClassName}".replace( '.', '/' ) + "$@{className}" + ".class" );
@@ -328,9 +344,9 @@
     }
 
 }
->>=::
+ at end{}
 
-consequenceInvoker() ::=<<
+ at declare{"consequenceInvoker"}
 package @{package};
 
 public class @{invokerClassName} implements org.drools.spi.Consequence, java.io.Externalizable
@@ -344,20 +360,20 @@
         org.drools.rule.Rule rule = knowledgeHelper.getRule();
         org.drools.rule.Declaration[] declarations = rule.getDeclarations();
 
-        @foreach{declarationTypes as type, declarations as declr ,indexes as index, notPatterns as  notPattern}
+        @foreach{type : declarationTypes, declr : declarations, index : indexes, notPattern : notPatterns}
           org.drools.common.InternalFactHandle @{declr.identifier}__Handle__ = ( org.drools.common.InternalFactHandle ) tuple.get( knowledgeHelper.getDeclaration( declarations[@{index}].getIdentifier() ) );
           @{type} @{declr.identifier} = ( @{type} )  declarations[@{index}].@{declr.nativeReadMethod.name}( (org.drools.common.InternalWorkingMemory) workingMemory, @{declr.identifier}__Handle__.getObject() );
           @if{notPattern}@{declr.identifier}__Handle__ =  (org.drools.common.InternalFactHandle) knowledgeHelper.getWorkingMemory().getFactHandle( @{declr.identifier} );@end{}
         @end{}
 
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         @{ruleClassName}.@{methodName} (
             knowledgeHelper at if{declarations != empty}, at end{}
-            @foreach{declarations as declr} @{declr.identifier}, @{declr.identifier}__Handle__
+            @foreach{declr : declarations} @{declr.identifier}, @{declr.identifier}__Handle__
             @end{","}@if{globals != empty}, at end{}
-	        @foreach{globals as identifier} @{identifier}
+	        @foreach{identifier : globals} @{identifier}
 	        @end{","} );
     }
     public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
@@ -366,9 +382,10 @@
     public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
     }
 }
->>=::
+ at end{}
 
-actionInvoker() ::=<<
+
+ at declare{"actionInvoker"}
 package @{package};
 
 public class @{invokerClassName} implements org.drools.spi.Action, java.io.Externalizable
@@ -377,11 +394,11 @@
 
     public void execute(org.drools.WorkingMemory workingMemory) throws Exception {
 
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         @{processClassName}.@{methodName} (
-	        @foreach{globals as identifier} @{identifier}
+	        @foreach{identifier : globals} @{identifier}
 	        @end{","} );
     }
 
@@ -391,9 +408,9 @@
     public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
     }
 }
->>=::
+ at end{}
 
-returnValueEvaluatorInvoker() ::=<<
+ at declare{"returnValueEvaluatorInvoker"}
 package @{package};
 
 public class @{invokerClassName} implements org.drools.spi.ReturnValueEvaluator, java.io.Externalizable
@@ -402,11 +419,11 @@
 
     public Object evaluate(org.drools.WorkingMemory workingMemory) throws Exception {
 
-        @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         return @{processClassName}.@{methodName} (
-	        @foreach{globals as identifier} @{identifier}
+	        @foreach{identifier : globals} @{identifier}
 	        @end{","} );
     }
 
@@ -416,4 +433,4 @@
     public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
     }
 }
->>=::
\ No newline at end of file
+ at end{}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel	2008-04-06 04:10:51 UTC (rev 19423)
@@ -1,37 +1,37 @@
-returnValueMethod() ::=<<
-public static org.drools.spi.FieldValue @{methodName}(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} @end{","} @if{localDeclarations != empty && declarations != empty}, at end{}
-                                                      @foreach{localDeclarationTypes as type, localDeclarations as declr } @{type} @{declr.identifier} @end{","} @if{globals != empty && (localDeclarations != empty || declarations != empty)}, at end{}
-                                                      @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} @end{","} ) throws Exception {
+ at declare{"returnValueMethod"}
+public static org.drools.spi.FieldValue @{methodName}(@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} @end{","} @if{localDeclarations != empty && declarations != empty}, at end{}
+                                                      @foreach{type : localDeclarationTypes, declr : localDeclarations} @{type} @{declr.identifier} @end{","} @if{globals != empty && (localDeclarations != empty || declarations != empty)}, at end{}
+                                                      @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","} ) throws Exception {
     return org.drools.base.FieldFactory.getFieldValue( @{text} );
 }
->>=::
+ at end{}
 
-predicateMethod() ::=<<
-public static boolean @{methodName}(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} @end{","} @if{localDeclarations != empty && declarations != empty}, at end{}
-                                                      @foreach{localDeclarationTypes as type, localDeclarations as declr } @{type} @{declr.identifier} @end{","} @if{globals != empty && (localDeclarations != empty || declarations != empty)}, at end{}
-                                                      @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} @end{","} ) throws Exception {
+ at declare{"predicateMethod"}
+public static boolean @{methodName}(@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} @end{","} @if{localDeclarations != empty && declarations != empty}, at end{}
+                                                      @foreach{type : localDeclarationTypes, declr : localDeclarations } @{type} @{declr.identifier} @end{","} @if{globals != empty && (localDeclarations != empty || declarations != empty)}, at end{}
+                                                      @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","} ) throws Exception {
     return ( @{text} );
 }
->>=::
+ at end{}
 
-evalMethod() ::=<<
-public static boolean @{methodName}(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier} @end{","} @if{globals != empty && declarations != empty}, at end{}
-                                    @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} @end{","} ) throws Exception {
+ at declare{"evalMethod"}
+public static boolean @{methodName}(@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier} @end{","} @if{globals != empty && declarations != empty}, at end{}
+                                    @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","} ) throws Exception {
     return ( @{text} );
 }
->>=::
+ at end{}
 
-accumulateInnerClass() ::=<<
+ at declare{"accumulateInnerClass"}
 public static class @{className} {
 
-    @foreach{attributesTypes as type, attributes as attr} private @{type} @{attr};
+    @foreach{type : attributesTypes, attr : attributes} private @{type} @{attr};
     @end{}    
     
     public @{className}() {
     }
 
-    public void init(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{} 
-                     @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} @end{","}
+    public void init(@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{} 
+                     @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","}
                      ) throws Exception {
         @{initCode}
     }
@@ -39,9 +39,9 @@
     public void accumulate(org.drools.WorkingMemory workingMemory,
                            org.drools.rule.Declaration[] innerDeclarations, 
                            Object object @if{declarations != empty}, @end{}
-                           @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{} 
-                           @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} @end{","}@if{innerDeclarations != empty}, at end{}
-                           @foreach{innerDeclarations as declr}@{declr.extractor.extractToClassName} @{declr.identifier}@end{","}
+                           @foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+                           @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","}@if{innerDeclarations != empty}, at end{}
+                           @foreach{declr : innerDeclarations}@{declr.extractor.extractToClassName} @{declr.identifier}@end{","}
                            ) throws Exception {
         @{actionCode}
     }
@@ -49,15 +49,15 @@
     public void reverse(org.drools.WorkingMemory workingMemory,
                            org.drools.rule.Declaration[] innerDeclarations, 
                            Object object @if{declarations != empty}, @end{}
-                           @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{} 
-                           @foreach{globalTypes as type, globals as identifier} @{type} @{identifier} @end{","}@if{innerDeclarations != empty}, at end{}
-                           @foreach{innerDeclarations as declr}@{declr.extractor.extractToClassName} @{declr.identifier}@end{","}
+                           @foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+                           @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","}@if{innerDeclarations != empty}, at end{}
+                           @foreach{declr : innerDeclarations}@{declr.extractor.extractToClassName} @{declr.identifier}@end{","}
                            ) throws Exception {
         @{reverseCode}
     }
     
-    public Object getResult(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{} 
-                            @foreach{globalTypes as type, globals as identifier}@{type} @{identifier} @end{","}
+    public Object getResult(@foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
+                            @foreach{type : globalTypes, identifier : globals}@{type} @{identifier} @end{","}
                            ) throws Exception {
         return ( @{resultCode} );
     }
@@ -66,22 +66,22 @@
         return @{supportsReverse};
     }
 }
->>=::
+ at end{}
 
-consequenceMethod() ::=<<
-public static void @{methodName}(org.drools.spi.KnowledgeHelper drools at if{declarations != empty}, at end{} @foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}, org.drools.FactHandle @{declr.identifier}__Handle__ @end{","}@if{globals != empty}, at end{} @foreach{globalTypes as type, globals as identifier}  @{type} @{identifier} @end{","} ) throws Exception {
+ at declare{"consequenceMethod"}
+public static void @{methodName}(org.drools.spi.KnowledgeHelper drools at if{declarations != empty}, at end{} @foreach{type : declarationTypes, declr : declarations} @{type} @{declr.identifier}, org.drools.FactHandle @{declr.identifier}__Handle__ @end{","}@if{globals != empty}, at end{} @foreach{type : globalTypes, identifier : globals}  @{type} @{identifier} @end{","} ) throws Exception {
     @{text}
 }
->>=::
+ at end{}
 
-actionMethod() ::=<<
-public static void @{methodName}(@foreach{globalTypes as type, globals as identifier}  @{type} @{identifier} @end{","} ) throws Exception {
+ at declare{"actionMethod"}
+public static void @{methodName}(@foreach{type :globalTypes, identifier : globals}  @{type} @{identifier} @end{","} ) throws Exception {
     @{text}
 }
->>=::
+ at end{}
 
-returnValueEvaluatorMethod() ::=<<
-public static Object @{methodName}(@foreach{globalTypes as type, globals as identifier}  @{type} @{identifier} @end{","} ) throws Exception {
+ at declare{"returnValueEvaluatorMethod"}
+public static Object @{methodName}(@foreach{type : globalTypes, identifier : globals}  @{type} @{identifier} @end{","} ) throws Exception {
     @{text}
 }
->>=::
\ No newline at end of file
+ at end{}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java	2008-04-06 04:10:51 UTC (rev 19423)
@@ -15,9 +15,8 @@
 import org.drools.rule.Declaration;
 import org.drools.spi.PatternExtractor;
 import org.drools.util.StringUtils;
-import org.mvel.MVELTemplateRegistry;
-import org.mvel.TemplateInterpreter;
-import org.mvel.TemplateRegistry;
+import org.mvel.templates.*;
+import org.mvel.integration.impl.MapVariableResolverFactory;
 
 public class AccumulateTemplateTest extends TestCase {
 
@@ -105,11 +104,10 @@
                  new Integer( 10 ) );
 
         TemplateRegistry registry = getRuleTemplateRegistry();
-        Object method = TemplateInterpreter.parse( registry.getTemplate( "accumulateInnerClass" ),
-                                                   null,
-                                                   map,
-                                                   registry );
 
+        Object method = TemplateRuntime.execute(registry.getNamedTemplate("accumulateInnerClass"),
+                null, new MapVariableResolverFactory(map), registry);
+
         //System.out.println( method );
     }
 
@@ -192,11 +190,8 @@
                  Boolean.FALSE );
 
         TemplateRegistry registry = getInvokerTemplateRegistry();
-        Object method = TemplateInterpreter.parse( registry.getTemplate( "accumulateInvoker" ),
-                                                   null,
-                                                   map,
-                                                   registry );
-
+        Object method = TemplateRuntime.execute(registry.getNamedTemplate("accumulateInvoker"), null, new MapVariableResolverFactory(map), registry);
+        
         //System.out.println( method );
     }
 
@@ -277,25 +272,24 @@
                  Boolean.TRUE );
 
         TemplateRegistry registry = getInvokerTemplateRegistry();
-        Object method = TemplateInterpreter.parse( registry.getTemplate( "accumulateInvoker" ),
-                                                   null,
-                                                   map,
-                                                   registry );
+        Object method = TemplateRuntime.execute(registry.getNamedTemplate("accumulateInvoker"), null, new MapVariableResolverFactory(map), registry);
 
         //System.out.println( method );
     }
 
     private TemplateRegistry getRuleTemplateRegistry() {
-        TemplateRegistry ruleRegistry = new MVELTemplateRegistry();
-        ruleRegistry.registerTemplate( new InputStreamReader( AbstractJavaRuleBuilder.class.getResourceAsStream( "javaRule.mvel" ) ) );
+        TemplateRegistry ruleRegistry = new SimpleTemplateRegistry();
+        CompiledTemplate compiled = TemplateCompiler.compileTemplate(AbstractJavaRuleBuilder.class.getResourceAsStream( "javaRule.mvel" ), null);
+        TemplateRuntime.execute(compiled, null, null, ruleRegistry);
 
         return ruleRegistry;
     }
 
     private TemplateRegistry getInvokerTemplateRegistry() {
-        TemplateRegistry invokerRegistry = new MVELTemplateRegistry();
-        invokerRegistry.registerTemplate( new InputStreamReader( AbstractJavaRuleBuilder.class.getResourceAsStream( "javaInvokers.mvel" ) ) );
-
+        TemplateRegistry invokerRegistry = new SimpleTemplateRegistry();
+        CompiledTemplate compiled = TemplateCompiler.compileTemplate(AbstractJavaRuleBuilder.class.getResourceAsStream( "javaInvokers.mvel" ), null);
+        TemplateRuntime.execute(compiled, null, null, invokerRegistry);
+        
         return invokerRegistry;
     }
 

Modified: labs/jbossrules/trunk/pom.xml
===================================================================
--- labs/jbossrules/trunk/pom.xml	2008-04-05 00:38:27 UTC (rev 19422)
+++ labs/jbossrules/trunk/pom.xml	2008-04-06 04:10:51 UTC (rev 19423)
@@ -1,1016 +1,1028 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-  <modelVersion>4.0.0</modelVersion>
-gin
-  <groupId>org.drools</groupId>
-  <artifactId>drools</artifactId>
-  <packaging>pom</packaging>
-  <name>Drools</name>
-  <!-- TODO Use -SNAPSHOT instead of .SNAPSHOT (gives problems with building the drools eclipse plugin) -->
-  <version>5.0.0.SNAPSHOT</version>
-  <description>A rule production system</description>
-  <url>http://www.jboss.com/products/rules</url>
+    <modelVersion>4.0.0</modelVersion>
+    gin
+    <groupId>org.drools</groupId>
+    <artifactId>drools</artifactId>
+    <packaging>pom</packaging>
+    <name>Drools</name>
+    <!-- TODO Use -SNAPSHOT instead of .SNAPSHOT (gives problems with building the drools eclipse plugin) -->
+    <version>5.0.0.SNAPSHOT</version>
+    <description>A rule production system</description>
+    <url>http://www.jboss.com/products/rules</url>
 
-  <issueManagement>
-    <system>jira</system>
-    <url>http://jira.jboss.com/jira/browse/JBRULES</url>
-  </issueManagement>
-  <ciManagement>
-    <system>continuum</system>
-    <url>http://ci.codehaus.org:8001/continuum/servlet/continuum/target/Summary.vm/fid/continuumProject</url>
-    <notifiers>
-      <notifier>
-        <type>mail</type>
-        <configuration>
-          <address>dev at drools.codehaus.org</address>
-        </configuration>
-      </notifier>
+    <issueManagement>
+        <system>jira</system>
+        <url>http://jira.jboss.com/jira/browse/JBRULES</url>
+    </issueManagement>
+    <ciManagement>
+        <system>continuum</system>
+        <url>http://ci.codehaus.org:8001/continuum/servlet/continuum/target/Summary.vm/fid/continuumProject</url>
+        <notifiers>
+            <notifier>
+                <type>mail</type>
+                <configuration>
+                    <address>dev at drools.codehaus.org</address>
+                </configuration>
+            </notifier>
 
-      <notifier>
-        <type>irc</type>
-        <configuration>
-          <host>irc.codehaus.org</host>
-          <port>6667</port>
-          <channel>#drools</channel>
-        </configuration>
-      </notifier>
-    </notifiers>
-  </ciManagement>
-  <inceptionYear>2001</inceptionYear>
+            <notifier>
+                <type>irc</type>
+                <configuration>
+                    <host>irc.codehaus.org</host>
+                    <port>6667</port>
+                    <channel>#drools</channel>
+                </configuration>
+            </notifier>
+        </notifiers>
+    </ciManagement>
+    <inceptionYear>2001</inceptionYear>
 
-  <mailingLists>
-    <mailingList>
-      <name>announce</name>
-      <subscribe>announce-subscribe at drools.codehaus.org</subscribe>
-      <unsubscribe>announce-unsubscribe at drools.codehaus.org</unsubscribe>
-      <archive>http://archive.drools.codehaus.org/announce/</archive>
-    </mailingList>
-    <mailingList>
-      <name>user</name>
-      <subscribe>user-subscribe at drools.codehaus.org</subscribe>
-      <unsubscribe>user-unsubscribe at drools.codehaus.org</unsubscribe>
-      <archive>http://archive.drools.codehaus.org/user/</archive>
-    </mailingList>
-    <mailingList>
-      <name>dev</name>
-      <subscribe>dev-subscribe at drools.codehaus.org</subscribe>
-      <unsubscribe>dev-unsubscribe at drools.codehaus.org</unsubscribe>
-      <archive>http://archive.drools.codehaus.org/dev/</archive>
-    </mailingList>
-    <mailingList>
-      <name>drools cvs messages</name>
-      <subscribe>scm-subscribe at drools.codehaus.org</subscribe>
-      <unsubscribe>scm-unsubscribe at drools.codehaus.org</unsubscribe>
-      <archive>http://archive.drools.codehaus.org/scm/</archive>
-    </mailingList>
-  </mailingLists>
+    <mailingLists>
+        <mailingList>
+            <name>announce</name>
+            <subscribe>announce-subscribe at drools.codehaus.org</subscribe>
+            <unsubscribe>announce-unsubscribe at drools.codehaus.org</unsubscribe>
+            <archive>http://archive.drools.codehaus.org/announce/</archive>
+        </mailingList>
+        <mailingList>
+            <name>user</name>
+            <subscribe>user-subscribe at drools.codehaus.org</subscribe>
+            <unsubscribe>user-unsubscribe at drools.codehaus.org</unsubscribe>
+            <archive>http://archive.drools.codehaus.org/user/</archive>
+        </mailingList>
+        <mailingList>
+            <name>dev</name>
+            <subscribe>dev-subscribe at drools.codehaus.org</subscribe>
+            <unsubscribe>dev-unsubscribe at drools.codehaus.org</unsubscribe>
+            <archive>http://archive.drools.codehaus.org/dev/</archive>
+        </mailingList>
+        <mailingList>
+            <name>drools cvs messages</name>
+            <subscribe>scm-subscribe at drools.codehaus.org</subscribe>
+            <unsubscribe>scm-unsubscribe at drools.codehaus.org</unsubscribe>
+            <archive>http://archive.drools.codehaus.org/scm/</archive>
+        </mailingList>
+    </mailingLists>
 
-  <developers>
-    <developer>
-      <name>Mark Proctor</name>
-      <id>mark</id>
-      <email>mark.proctor at jboss.com</email>
-      <organization>JBoss Inc.</organization>
-      <roles>
-        <role>Project Lead</role>
-      </roles>
-      <timezone>0</timezone>
-    </developer>
+    <developers>
+        <developer>
+            <name>Mark Proctor</name>
+            <id>mark</id>
+            <email>mark.proctor at jboss.com</email>
+            <organization>JBoss Inc.</organization>
+            <roles>
+                <role>Project Lead</role>
+            </roles>
+            <timezone>0</timezone>
+        </developer>
 
-    <developer>
-      <name>Michael Neale</name>
-      <id>mic</id>
-      <email>michael.neale at gmail.com</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>+10</timezone>
-      <organization>JBoss Inc.</organization>
-    </developer>
+        <developer>
+            <name>Michael Neale</name>
+            <id>mic</id>
+            <email>michael.neale at gmail.com</email>
+            <roles>
+                <role>Developer</role>
+            </roles>
+            <timezone>+10</timezone>
+            <organization>JBoss Inc.</organization>
+        </developer>
 
-    <developer>
-      <name>Kris Verlaenen</name>
-      <id>kris</id>
-      <email>kris.verlaenen at gmail.com</email>
-      <organization>JBoss Inc.</organization>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
+        <developer>
+            <name>Kris Verlaenen</name>
+            <id>kris</id>
+            <email>kris.verlaenen at gmail.com</email>
+            <organization>JBoss Inc.</organization>
+            <roles>
+                <role>Developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
 
-    <developer>
-      <name>Bob McWhirter</name>
-      <id>bob</id>
-      <email>bob at werken.com</email>
-      <organization>The Werken Company</organization>
-      <roles>
-        <role>Founder</role>
-      </roles>
-      <timezone>-5</timezone>
-    </developer>
+        <developer>
+            <name>Bob McWhirter</name>
+            <id>bob</id>
+            <email>bob at werken.com</email>
+            <organization>The Werken Company</organization>
+            <roles>
+                <role>Founder</role>
+            </roles>
+            <timezone>-5</timezone>
+        </developer>
 
-    <developer>
-      <name>Edson Tirelli</name>
-      <id>tirelli</id>
-      <email>tirelli at post.com</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>-3</timezone>
-    </developer>
+        <developer>
+            <name>Edson Tirelli</name>
+            <id>tirelli</id>
+            <email>tirelli at post.com</email>
+            <roles>
+                <role>Developer</role>
+            </roles>
+            <timezone>-3</timezone>
+        </developer>
 
-    <developer>
-      <name>Fernando Meyer</name>
-      <id>fmeyer</id>
-      <email>fmcamargo at gmail.com</email>
-      <organization>Red Hat/JBoss </organization>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>-3</timezone>
-    </developer>
+        <developer>
+            <name>Fernando Meyer</name>
+            <id>fmeyer</id>
+            <email>fmcamargo at gmail.com</email>
+            <organization>Red Hat/JBoss</organization>
+            <roles>
+                <role>Developer</role>
+            </roles>
+            <timezone>-3</timezone>
+        </developer>
 
-    <developer>
-      <id>ge0ffrey</id>
-      <name>Geoffrey De Smet</name>
-      <email>ge0ffrey.spam AT gmail DOT com</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
-  </developers>
+        <developer>
+            <id>ge0ffrey</id>
+            <name>Geoffrey De Smet</name>
+            <email>ge0ffrey.spam AT gmail DOT com</email>
+            <roles>
+                <role>Developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+    </developers>
 
-  <contributors/>
+    <contributors/>
 
 
-  <licenses>
-    <license>
-      <name>The Apache Software License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-  <scm>
-    <connection>scm:svn:http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/</connection>
-    <!-- TODO developerConnection-->
-    <url>http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/</url>
-  </scm>
-  <organization>
-    <name>JBoss Inc.</name>
-    <url>http://www.jboss.org/</url>
-  </organization>
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <scm>
+        <connection>scm:svn:http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/</connection>
+        <!-- TODO developerConnection-->
+        <url>http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/</url>
+    </scm>
+    <organization>
+        <name>JBoss Inc.</name>
+        <url>http://www.jboss.org/</url>
+    </organization>
 
-  <repositories>
-    <repository>
-      <id>jboss</id>
-      <url>http://repository.jboss.com/maven2/</url>
-    </repository>
-    <repository>
-        <id>jboss-snapshot</id>
-        <url>http://snapshots.jboss.org/maven2</url>
-    </repository>
+    <repositories>
+        <repository>
+            <id>jboss</id>
+            <url>http://repository.jboss.com/maven2/</url>
+        </repository>
+        <repository>
+            <id>jboss-snapshot</id>
+            <url>http://snapshots.jboss.org/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus-snapshot</id>
+            <url>http://snapshots.repository.codehaus.org/</url>
+        </repository>
 
 
+        <!-- this is needed for Seam which is not in the jboss repo or the maven one in a useful form
+           <repository>
+               <id>softeu-repo</id>
+               <url>http://maven.softeu.cz/</url>
+           </repository>
+        -->
 
-    <!-- this is needed for Seam which is not in the jboss repo or the maven one in a useful form
-    <repository>
-        <id>softeu-repo</id>
-        <url>http://maven.softeu.cz/</url>
-    </repository>
- -->
+        <repository>
+            <id>basedir</id>
+            <url>file://${basedir}/m2_repo</url>
+        </repository>
 
-    <repository>
-      <id>basedir</id>
-      <url>file://${basedir}/m2_repo</url>
-    </repository>
-    
-    <repository>
-      <id>Maven Snapshots</id>
-      <url>http://snapshots.maven.codehaus.org/maven2/</url>
-      <snapshots>
-        <enabled>true</enabled>
-      </snapshots>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-    </repository>
+        <repository>
+            <id>Maven Snapshots</id>
+            <url>http://snapshots.maven.codehaus.org/maven2/</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
 
 
-   <repository>
-     <id>apache.org</id>
-     <name>Maven Snapshots</name>
-     <url>http://people.apache.org/repo/m2-snapshot-repository</url>
-     <snapshots>
-       <enabled>true</enabled>
-     </snapshots>
-     <releases>
-       <enabled>false</enabled>
-     </releases>
-   </repository>
+        <repository>
+            <id>apache.org</id>
+            <name>Maven Snapshots</name>
+            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
 
+        <repository>
+            <id>apache.org</id>
+            <name>Maven Releases</name>
+            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
 
+    </repositories>
 
-   <repository>
-     <id>apache.org</id>
-     <name>Maven Releases</name>
-     <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
-     <snapshots>
-       <enabled>false</enabled>
-     </snapshots>
-     <releases>
-       <enabled>true</enabled>
-     </releases>
-   </repository>
+    <pluginRepositories>
+        <pluginRepository>
+            <id>basedir</id>
+            <url>file://${basedir}/repository</url>
+        </pluginRepository>
+    </pluginRepositories>
 
+    <profiles>
+        <profile>
+            <id>ydoc-doclet</id>
+            <activation>
+                <property>
+                    <name>ydoc.home</name>
+                </property>
+            </activation>
 
-   
-  </repositories>
+            <reporting>
+                <plugins>
 
-  <pluginRepositories>
-    <pluginRepository>
-      <id>basedir</id>
-      <url>file://${basedir}/repository</url>
-    </pluginRepository>
-  </pluginRepositories>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>cobertura-maven-plugin</artifactId>
+                    </plugin>
 
-  <profiles>
-    <profile>
-      <id>ydoc-doclet</id>
-      <activation>
-         <property><name>ydoc.home</name></property>
-      </activation>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <version>2.3</version>
+                        <configuration>
+                            <aggregate>true</aggregate>
+                            <doclet>ydoc.doclets.YStandard</doclet>
+                            <docletPath>
+                                ${ydoc.home}/lib/ydoc.jar${path.separator}${ydoc.home}/lib/class2svg.jar${path.separator}${ydoc.home}/resources
+                            </docletPath>
+                            <author>false</author>
+                            <bottom>true</bottom>
+                            <header>JBoss Rules</header>
+                            <minmemory>128m</minmemory>
+                            <maxmemory>512</maxmemory>
+                            <packagenames>org.drools.*</packagenames>
+                            <use>true</use>
+                            <version>true</version>
+                            <windowtitle>${project.name} ${project.version} API</windowtitle>
+                            <breakiterator>true</breakiterator>
+                            <excludePackageNames>org.drools.asm*,org.drools.objenesis.*,org.drools.commons.jci.*
+                            </excludePackageNames>
+                            <overview>drools-core/target/classes/overview.html</overview>
+                            <groups>
+                                <group title="Runtime Core API" packages="org.drools:org.drools.rule"/>
+                                <group title="Compiler Core API" packages="org.drools.compiler"/>
+                                <group title="Compiler Utilities" packages="org.drools.lang:org.drools.xml"/>
+                                <group title="Runtime Utilities"
+                                       packages="org.drools.audit:org.drools.event:org.drools.visualize"/>
+                                <group title="Decision Tables" packages="org.drools.decisiontable"/>
+                                <group title="Internal" packages="org.drools*"/>
+                            </groups>
+                            <additionalparam>-umlautogen -tag y.precondition -tag y.postcondition -tag y.complexity -tag
+                                param -tag return -tag see -tag y.uml
+                            </additionalparam>
+                        </configuration>
+                    </plugin>
 
-      <reporting>
-        <plugins>
+                </plugins>
+            </reporting>
+        </profile>
 
-          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>cobertura-maven-plugin</artifactId>
-          </plugin>
+        <profile>
+            <id>documentation</id>
+            <activation>
+                <property>
+                    <name>documentation</name>
+                </property>
+            </activation>
+            <modules>
+                <module>drools-docs</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>build-eclipse</id>
+            <activation>
+                <property>
+                    <name>eclipse</name>
+                </property>
+            </activation>
+            <modules>
+                <module>drools-eclipse</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>solver</id>
+            <modules>
+                <module>drools-solver</module>
+            </modules>
+        </profile>
+    </profiles>
 
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <version>2.3</version>
-            <configuration>
-                  <aggregate>true</aggregate>
-                  <doclet>ydoc.doclets.YStandard</doclet>
-                  <docletPath>${ydoc.home}/lib/ydoc.jar${path.separator}${ydoc.home}/lib/class2svg.jar${path.separator}${ydoc.home}/resources</docletPath>
-                  <author>false</author>
-                  <bottom>true</bottom>
-                  <header>JBoss Rules</header>
-                  <minmemory>128m</minmemory>
-                  <maxmemory>512</maxmemory>
-                  <packagenames>org.drools.*</packagenames>
-                  <use>true</use>
-                  <version>true</version>
-                  <windowtitle>${project.name} ${project.version} API</windowtitle>
-                  <breakiterator>true</breakiterator>
-                  <excludePackageNames>org.drools.asm*,org.drools.objenesis.*,org.drools.commons.jci.*</excludePackageNames>
-                  <overview>drools-core/target/classes/overview.html</overview>
-                  <groups>
-                    <group title="Runtime Core API" packages="org.drools:org.drools.rule"/>
-                    <group title="Compiler Core API" packages="org.drools.compiler"/>
-                    <group title="Compiler Utilities" packages="org.drools.lang:org.drools.xml"/>
-                    <group title="Runtime Utilities" packages="org.drools.audit:org.drools.event:org.drools.visualize"/>
-                    <group title="Decision Tables" packages="org.drools.decisiontable"/>
-                    <group title="Internal" packages="org.drools*"/>
-                  </groups>
-                  <additionalparam>-umlautogen -tag y.precondition -tag y.postcondition -tag y.complexity -tag param -tag return -tag see -tag y.uml</additionalparam>
-            </configuration>
-          </plugin>
 
-        </plugins>
-      </reporting>
-    </profile>
+    <build>
 
-    <profile>
-        <id>documentation</id>
-        <activation>
-            <property><name>documentation</name></property>
-        </activation>
-        <modules>
-            <module>drools-docs</module>
-        </modules>
-    </profile>
-    <profile>
-        <id>build-eclipse</id>
-        <activation>
-            <property><name>eclipse</name></property>
-        </activation>
-        <modules>
-            <module>drools-eclipse</module>
-        </modules>
-    </profile>
-    <profile>
-        <id>solver</id>
-        <modules>
-            <module>drools-solver</module>
-        </modules>
-    </profile>
-  </profiles>
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.wagon</groupId>
+                <artifactId>wagon-webdav</artifactId>
+                <version>1.0-beta-2</version>
+            </extension>
+        </extensions>
 
+        <pluginManagement>
+            <plugins>
+                <!--
+                    Last time synchronized with the latest plugin releases:
+                    2006-12-03
+                    See http://news.gmane.org/gmane.comp.apache.maven.announce
+                -->
 
-  <build>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>cobertura-maven-plugin</artifactId>
+                    <configuration>
+                        <instrumentation>
+                            <excludes>
+                                <exclude>org/drools/**/*Test.class</exclude>
+                            </excludes>
+                        </instrumentation>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>clean</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
 
-  <extensions>
-    <extension>
-      <groupId>org.apache.maven.wagon</groupId>
-      <artifactId>wagon-webdav</artifactId>
-      <version>1.0-beta-2</version>
-    </extension>
-  </extensions>
 
-    <pluginManagement>
-      <plugins>
-        <!--
-            Last time synchronized with the latest plugin releases:
-            2006-12-03
-            See http://news.gmane.org/gmane.comp.apache.maven.announce
-        -->
+                <!-- Building -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-help-plugin</artifactId>
+                    <version>2.0.2</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>2.2</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>2.2</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>2.0.2</version>
+                    <configuration>
+                        <source>1.5</source>
+                        <target>1.5</target>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>2.4.2</version>
+                    <configuration>
+                        <includes>
+                            <include>**/*Test.java</include>
+                        </includes>
+                        <excludes>
+                            <exclude>**/*AbstractTest.java</exclude>
+                        </excludes>
+                        <argLine>-Xmx1024m</argLine>
+                    </configuration>
+                </plugin>
 
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <configuration>
-          <instrumentation>
-            <excludes>
-              <exclude>org/drools/**/*Test.class</exclude>
-            </excludes>
-          </instrumentation>
-        </configuration>
-        <executions>
-          <execution>
-            <goals>
-              <goal>clean</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
+                <!-- Packaging -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>2.2</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>test-jar</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <archive>
+                            <manifest>
+                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            </manifest>
+                        </archive>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>2.0.4</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>jar</goal>
+                                <goal>test-jar</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-war-plugin</artifactId>
+                    <version>2.1-alpha-1</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>2.0-alpha-4</version>
+                </plugin>
 
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-assembly-plugin</artifactId>
+                    <version>2.2-beta-2</version>
+                    <configuration>
+                        <descriptors>
+                            <descriptor>src/main/assembly/bin.xml</descriptor>
+                            <!--descriptor>src/main/assembly/src.xml</descriptor>
+                            <descriptor>src/main/assembly/brms.xml</descriptor>
+                            <descriptor>src/main/assembly/eclipse.xml</descriptor>
+                            <descriptor>src/main/assembly/examples.xml</descriptor-->
+                        </descriptors>
+                    </configuration>
+                </plugin>
 
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-archetype-plugin</artifactId>
+                    <version>1.0-alpha-7</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>2.2</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>2.3</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>2.0-beta-7</version>
+                    <configuration>
+                        <tagBase>
+                            http://anonsvn.labs.jboss.com/labs/jbossrules/tags
+                        </tagBase>
+                    </configuration>
+                </plugin>
 
-        <!-- Building -->
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-help-plugin</artifactId>
-          <version>2.0.2</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-clean-plugin</artifactId>
-          <version>2.2</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>2.2</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
-          <configuration>
-            <source>1.5</source>
-            <target>1.5</target>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.4.2</version>
-          <configuration>
-            <includes>
-              <include>**/*Test.java</include>
-            </includes>
-            <excludes>
-              <exclude>**/*AbstractTest.java</exclude>
-            </excludes>
-            <argLine>-Xmx1024m</argLine>
-          </configuration>
-        </plugin>
+                <!-- IDE -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-eclipse-plugin</artifactId>
+                    <version>2.4</version>
+                    <configuration>
+                        <!--<downloadSources>true</downloadSources>-->
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-idea-plugin</artifactId>
+                    <version>2.1</version>
+                    <configuration>
+                        <downloadSources>true</downloadSources>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>exec-maven-plugin</artifactId>
+                    <version>1.1-beta-1</version>
+                </plugin>
 
-        <!-- Packaging -->
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-jar-plugin</artifactId>
-          <version>2.2</version>
-          <executions>
-            <execution>
-              <goals>
-                <goal>test-jar</goal>
-              </goals>
-            </execution>
-          </executions>
-          <configuration>
-            <archive>
-              <manifest>
-                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-              </manifest>
-            </archive>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-source-plugin</artifactId>
-          <version>2.0.4</version>
-          <executions>
-            <execution>
-              <goals>
-                <goal>jar</goal>
-                  <goal>test-jar</goal>
-              </goals>
-            </execution>
-          </executions>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-war-plugin</artifactId>
-          <version>2.1-alpha-1</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-dependency-plugin</artifactId>
-          <version>2.0-alpha-4</version>
-        </plugin>        
+                <!--Site -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-site-plugin</artifactId>
+                    <version>2.0-beta-6</version>
+                </plugin>
 
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-2</version>
-        <configuration>
-          <descriptors>
-            <descriptor>src/main/assembly/bin.xml</descriptor>
-            <!--descriptor>src/main/assembly/src.xml</descriptor>
-            <descriptor>src/main/assembly/brms.xml</descriptor>
-            <descriptor>src/main/assembly/eclipse.xml</descriptor>
-            <descriptor>src/main/assembly/examples.xml</descriptor-->
-          </descriptors>
-        </configuration>
-      </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <!-- Entry needed to create, install and deploy sources jars -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-archetype-plugin</artifactId>
-          <version>1.0-alpha-7</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-install-plugin</artifactId>
-          <version>2.2</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-deploy-plugin</artifactId>
-          <version>2.3</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-release-plugin</artifactId>
-          <version>2.0-beta-7</version>
-          <configuration>
-            <tagBase>
-              http://anonsvn.labs.jboss.com/labs/jbossrules/tags
-            </tagBase>
-          </configuration>
-        </plugin>
+    <reporting>
+        <plugins>
 
-        <!-- IDE -->
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-eclipse-plugin</artifactId>
-          <version>2.4</version>
-          <configuration>
-            <!--<downloadSources>true</downloadSources>-->
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-idea-plugin</artifactId>
-          <version>2.1</version>
-          <configuration>
-            <downloadSources>true</downloadSources>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>exec-maven-plugin</artifactId>
-          <version>1.1-beta-1</version>
-        </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+                <configuration>
+                    <formats>
+                        <format>html</format>
+                        <format>xml</format>
+                    </formats>
+                </configuration>
+            </plugin>
 
-        <!--Site -->
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-site-plugin</artifactId>
-          <version>2.0-beta-6</version>
-        </plugin>
+            <!-- Note: It's not possible to configure reporting plugins in pluginManagement in m2.0.4 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <version>2.0.1</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.3</version>
+                <configuration>
+                    <aggregate>true</aggregate>
+                    <links>
+                        <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
+                    </links>
+                    <minmemory>128m</minmemory>
+                    <maxmemory>512</maxmemory>
+                </configuration>
+            </plugin>
 
-      </plugins>
-    </pluginManagement>
-    <plugins>
-        <plugin>
-          <!-- Entry needed to create, install and deploy sources jars -->
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-source-plugin</artifactId>
-        </plugin>
-    </plugins>
-  </build>
-
-  <reporting>
-    <plugins>
-
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <configuration>
-          <formats>
-            <format>html</format>
-            <format>xml</format>
-          </formats>
-        </configuration>
-      </plugin>
-
-      <!-- Note: It's not possible to configure reporting plugins in pluginManagement in m2.0.4 -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <version>2.0.1</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.3</version>
-        <configuration>
-          <aggregate>true</aggregate>
-          <links>
-            <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
-          </links>
-          <minmemory>128m</minmemory>
-          <maxmemory>512</maxmemory>
-        </configuration>
-      </plugin>
-
-      <!--
-          TODO Changelog is unfinished:
-          - has also a problem with the netbeans (cvs)lib dependency
-          - is moving from mojo.codehaus.org to maven.apache.org
-      -->
-      <!--<plugin>-->
-      <!--<groupId>org.apache.maven.plugins</groupId>-->
-      <!--<artifactId>maven-changelog-plugin</artifactId>-->
-      <!--<version>2.0-beta-1</version>-->
-      <!--</plugin>-->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-report-plugin</artifactId>
-        <version>2.4.2</version>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>report-only</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-      <!--<plugin>-->
-        <!--<groupId>org.apache.maven.plugins</groupId>-->
-        <!--<artifactId>maven-clover-plugin</artifactId>-->
-        <!--<configuration/>-->
-        <!--<executions>-->
-          <!--<execution>-->
+            <!--
+                TODO Changelog is unfinished:
+                - has also a problem with the netbeans (cvs)lib dependency
+                - is moving from mojo.codehaus.org to maven.apache.org
+            -->
+            <!--<plugin>-->
+            <!--<groupId>org.apache.maven.plugins</groupId>-->
+            <!--<artifactId>maven-changelog-plugin</artifactId>-->
+            <!--<version>2.0-beta-1</version>-->
+            <!--</plugin>-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-report-plugin</artifactId>
+                <version>2.4.2</version>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>report-only</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+            <!--<plugin>-->
+            <!--<groupId>org.apache.maven.plugins</groupId>-->
+            <!--<artifactId>maven-clover-plugin</artifactId>-->
+            <!--<configuration/>-->
+            <!--<executions>-->
+            <!--<execution>-->
             <!--<phase>pre-site</phase>-->
             <!--<goals>-->
-              <!--<goal>instrument</goal>-->
-              <!--<goal>aggregate</goal>-->
+            <!--<goal>instrument</goal>-->
+            <!--<goal>aggregate</goal>-->
             <!--</goals>-->
-          <!--</execution>-->
-        <!--</executions>-->
-      <!--</plugin>-->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>taglist-maven-plugin</artifactId>
-        <version>2.1</version>
-      </plugin>
-      <!--<plugin>-->
-        <!--<groupId>org.codehaus.mojo</groupId>-->
-        <!--<artifactId>findbugs-maven-plugin</artifactId>-->
-        <!--<version>1.0-beta-1</version>-->
-      <!--</plugin>-->
-      <!--<plugin>-->
-        <!--<groupId>org.apache.maven.plugins</groupId>-->
-        <!--<artifactId>maven-pmd-plugin</artifactId>-->
-        <!--<version>2.0</version>-->
-      <!--</plugin>-->
-      <!--<plugin>-->
-        <!--<groupId>org.apache.maven.plugins</groupId>-->
-        <!--<artifactId>maven-checkstyle-plugin</artifactId>-->
-        <!--<version>2.1</version>-->
-      <!--</plugin>-->
-      <!--<plugin>-->
-        <!--<groupId>org.codehaus.mojo</groupId>-->
-        <!--<artifactId>jdepend-maven-plugin</artifactId>-->
-        <!--<version>2.0-beta-1</version>-->
-      <!--</plugin>-->
-      <plugin>
-        <!-- In 2.0-beta-1 an aggegate works after running "mvn site" twice -->
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>javancss-maven-plugin</artifactId>
-        <version>2.0-beta-2</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jxr-plugin</artifactId>
-        <version>2.1</version>
-      </plugin>
-    </plugins>
-  </reporting>
+            <!--</execution>-->
+            <!--</executions>-->
+            <!--</plugin>-->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>taglist-maven-plugin</artifactId>
+                <version>2.1</version>
+            </plugin>
+            <!--<plugin>-->
+            <!--<groupId>org.codehaus.mojo</groupId>-->
+            <!--<artifactId>findbugs-maven-plugin</artifactId>-->
+            <!--<version>1.0-beta-1</version>-->
+            <!--</plugin>-->
+            <!--<plugin>-->
+            <!--<groupId>org.apache.maven.plugins</groupId>-->
+            <!--<artifactId>maven-pmd-plugin</artifactId>-->
+            <!--<version>2.0</version>-->
+            <!--</plugin>-->
+            <!--<plugin>-->
+            <!--<groupId>org.apache.maven.plugins</groupId>-->
+            <!--<artifactId>maven-checkstyle-plugin</artifactId>-->
+            <!--<version>2.1</version>-->
+            <!--</plugin>-->
+            <!--<plugin>-->
+            <!--<groupId>org.codehaus.mojo</groupId>-->
+            <!--<artifactId>jdepend-maven-plugin</artifactId>-->
+            <!--<version>2.0-beta-1</version>-->
+            <!--</plugin>-->
+            <plugin>
+                <!-- In 2.0-beta-1 an aggegate works after running "mvn site" twice -->
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>javancss-maven-plugin</artifactId>
+                <version>2.0-beta-2</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jxr-plugin</artifactId>
+                <version>2.1</version>
+            </plugin>
+        </plugins>
+    </reporting>
 
-  <modules>
-    <module>drools-core</module>
-    <module>drools-compiler</module>
-    <module>drools-jsr94</module>
-    <module>drools-decisiontables</module>
-    <!-- TODO enable these or create a profile in which they are enabled (to avoid making the build slow) -->
-    <!--module>drools-server</module-->
-    <module>drools-analytics</module>
-    <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>
+    <modules>
+        <module>drools-core</module>
+        <module>drools-compiler</module>
+        <module>drools-jsr94</module>
+        <module>drools-decisiontables</module>
+        <!-- TODO enable these or create a profile in which they are enabled (to avoid making the build slow) -->
+        <!--module>drools-server</module-->
+        <module>drools-analytics</module>
+        <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>
 
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <dependencyManagement>
     <dependencies>
-      <!--
-          Declare all dependency versions and default scopes here, but not optional.
-          Each module should declare it's direct dependency and possibily overwrite scope/optional.
-      -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
-      <!-- Internal dependencies -->
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-core</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-core</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-compiler</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-compiler</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-jsr94</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-jsr94</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-decisiontables</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-decisiontables</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-docs</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-server</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-ant</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-ant</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
+    <dependencyManagement>
+        <dependencies>
+            <!--
+                Declare all dependency versions and default scopes here, but not optional.
+                Each module should declare it's direct dependency and possibily overwrite scope/optional.
+            -->
 
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-analytics</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-analytics</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
+            <!-- Internal dependencies -->
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-core</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-compiler</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-compiler</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-jsr94</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-jsr94</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-decisiontables</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-decisiontables</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-docs</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-server</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-ant</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-ant</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
 
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-analytics</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-analytics</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
 
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-server</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-repository</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-repository</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-jbrms</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools</groupId>
-        <artifactId>drools-jbrms</artifactId>
-        <type>test-jar</type>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
 
-      <dependency>
-        <groupId>org.drools.solver</groupId>
-        <artifactId>drools-solver-core</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.drools.solver</groupId>
-        <artifactId>drools-solver-examples</artifactId>
-        <version>${project.version}</version>
-      </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-server</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-repository</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-repository</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-jbrms</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-jbrms</artifactId>
+                <type>test-jar</type>
+                <version>${project.version}</version>
+                <scope>test</scope>
+            </dependency>
 
-      <!-- External dependencies -->
-      <!-- drools-core -->
-      <dependency>
-        <groupId>com.thoughtworks.xstream</groupId>
-        <artifactId>xstream</artifactId>
-        <version>1.2.2</version>
-      </dependency>
-      <dependency><!-- TODO remove me as xstream brings in xpp3_min -->
-        <groupId>xpp3</groupId>
-        <artifactId>xpp3</artifactId>
-        <version>1.1.3.4.O</version>
-      </dependency>
-      <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>2.0-alpha2-dp3-java1.5</version>
-      </dependency>
+            <dependency>
+                <groupId>org.drools.solver</groupId>
+                <artifactId>drools-solver-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.drools.solver</groupId>
+                <artifactId>drools-solver-examples</artifactId>
+                <version>${project.version}</version>
+            </dependency>
 
-      <!-- drools-compiler -->
-      <dependency>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr-runtime</artifactId>
-        <version>3.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jdt</groupId>
-        <artifactId>core</artifactId>
-        <version>3.2.3.v_686_R32x</version>
-      </dependency>
-      <dependency>
-        <groupId>janino</groupId>
-        <artifactId>janino</artifactId>
-        <version>2.5.10</version>
-      </dependency>
-      <dependency>
-        <groupId>xerces</groupId>
-        <artifactId>xercesImpl</artifactId>
-        <version>2.4.0</version>
-      </dependency>
-      <dependency>
-        <groupId>xml-apis</groupId>
-        <artifactId>xml-apis</artifactId>
-        <version>1.0.b2</version>
-      </dependency>
+            <!-- External dependencies -->
+            <!-- drools-core -->
+            <dependency>
+                <groupId>com.thoughtworks.xstream</groupId>
+                <artifactId>xstream</artifactId>
+                <version>1.2.2</version>
+            </dependency>
+            <dependency><!-- TODO remove me as xstream brings in xpp3_min -->
+                <groupId>xpp3</groupId>
+                <artifactId>xpp3</artifactId>
+                <version>1.1.3.4.O</version>
+            </dependency>
+            <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>2.0-SNAPSHOT</version>
+            </dependency>
 
-      <!-- drools-jsr94 -->
-      <dependency>
-        <groupId>jsr94</groupId>
-        <artifactId>jsr94</artifactId>
-        <version>1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>jsr94</groupId>
-        <artifactId>jsr94-tck</artifactId>
-        <version>1.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jsr94</groupId>
-        <artifactId>jsr94-sigtest</artifactId>
-        <version>1.1</version>
-      </dependency>
+            <!-- drools-compiler -->
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr-runtime</artifactId>
+                <version>3.0</version>
+            </dependency>
+            <dependency>
+                <groupId>org.eclipse.jdt</groupId>
+                <artifactId>core</artifactId>
+                <version>3.2.3.v_686_R32x</version>
+            </dependency>
+            <dependency>
+                <groupId>janino</groupId>
+                <artifactId>janino</artifactId>
+                <version>2.5.10</version>
+            </dependency>
+            <dependency>
+                <groupId>xerces</groupId>
+                <artifactId>xercesImpl</artifactId>
+                <version>2.4.0</version>
+            </dependency>
+            <dependency>
+                <groupId>xml-apis</groupId>
+                <artifactId>xml-apis</artifactId>
+                <version>1.0.b2</version>
+            </dependency>
 
-      <!-- drools-decisiontables -->
-      <dependency>
-        <groupId>jexcelapi</groupId>
-        <artifactId>jxl</artifactId>
-        <version>2.4.2</version>
-      </dependency>
+            <!-- drools-jsr94 -->
+            <dependency>
+                <groupId>jsr94</groupId>
+                <artifactId>jsr94</artifactId>
+                <version>1.1</version>
+            </dependency>
+            <dependency>
+                <groupId>jsr94</groupId>
+                <artifactId>jsr94-tck</artifactId>
+                <version>1.0.3</version>
+            </dependency>
+            <dependency>
+                <groupId>jsr94</groupId>
+                <artifactId>jsr94-sigtest</artifactId>
+                <version>1.1</version>
+            </dependency>
 
-      <!-- drools-server -->
-      <dependency>
-        <groupId>jboss</groupId>
-        <artifactId>jboss-remoting</artifactId>
-        <version>1.4.1_final</version>
-      </dependency>
+            <!-- drools-decisiontables -->
+            <dependency>
+                <groupId>jexcelapi</groupId>
+                <artifactId>jxl</artifactId>
+                <version>2.4.2</version>
+            </dependency>
 
-      <!-- Logging for drools-repository and drools-solver -->
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-api</artifactId>
-        <version>1.3.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-log4j12</artifactId>
-        <version>1.3.0</version>
-        <!--<scope>runtime</scope> TODO default me on runtime-->
-      </dependency>
-      <dependency>
-        <groupId>log4j</groupId>
-        <artifactId>log4j</artifactId>
-        <version>1.2.13</version>
-        <!--<scope>runtime</scope> TODO default me on runtime-->
-      </dependency>
+            <!-- drools-server -->
+            <dependency>
+                <groupId>jboss</groupId>
+                <artifactId>jboss-remoting</artifactId>
+                <version>1.4.1_final</version>
+            </dependency>
 
-      <!-- drools-repository -->
-      <dependency>
-        <groupId>org.apache.jackrabbit</groupId>
-        <artifactId>jackrabbit-core</artifactId>
-        <version>1.4.1</version>
-        <!-- and getting rid of some annoying transitive junk not really needed for us -->
-        <exclusions>
-          <exclusion>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
-          </exclusion>
-          <exclusion>
-              <groupId>pdfbox</groupId>
-          <artifactId>pdfbox</artifactId>
-        </exclusion>
-          <exclusion>
-          <groupId>poi</groupId>
-          <artifactId>poi</artifactId>
-        </exclusion>
-          <exclusion>
-            <groupId>org.textmining</groupId>
-          <artifactId>tm-extractors</artifactId>
-          </exclusion>
-          <exclusion>
-          <groupId>nekohtml</groupId>
-        <artifactId>nekohtml</artifactId>
-        </exclusion>
-        </exclusions>
-      </dependency>
+            <!-- Logging for drools-repository and drools-solver -->
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>1.3.0</version>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-log4j12</artifactId>
+                <version>1.3.0</version>
+                <!--<scope>runtime</scope> TODO default me on runtime-->
+            </dependency>
+            <dependency>
+                <groupId>log4j</groupId>
+                <artifactId>log4j</artifactId>
+                <version>1.2.13</version>
+                <!--<scope>runtime</scope> TODO default me on runtime-->
+            </dependency>
 
-      <dependency>
-        <groupId>javax.jcr</groupId>
-        <artifactId>jcr</artifactId>
-        <version>1.0</version>
-      </dependency>
+            <!-- drools-repository -->
+            <dependency>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>jackrabbit-core</artifactId>
+                <version>1.4.1</version>
+                <!-- and getting rid of some annoying transitive junk not really needed for us -->
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.apache.geronimo.specs</groupId>
+                        <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>pdfbox</groupId>
+                        <artifactId>pdfbox</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>poi</groupId>
+                        <artifactId>poi</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.textmining</groupId>
+                        <artifactId>tm-extractors</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>nekohtml</groupId>
+                        <artifactId>nekohtml</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
 
-      <dependency>
-        <groupId>org.tmatesoft</groupId>
-        <artifactId>svnkit</artifactId>
-        <version>1.1.2</version>
-      </dependency>
-      
-      <dependency>
-         <groupId>hsqldb</groupId>
-         <artifactId>hsqldb</artifactId>
-         <version>1.8.0.2</version>
-      </dependency>      
+            <dependency>
+                <groupId>javax.jcr</groupId>
+                <artifactId>jcr</artifactId>
+                <version>1.0</version>
+            </dependency>
 
-      <!-- drools-jbrms -->
-      <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>servlet-api</artifactId>
-        <version>2.3</version>
-        <scope>provided</scope>
-      </dependency>
-      <dependency>
-        <groupId>com.google.gwt</groupId>
-        <artifactId>gwt-servlet</artifactId>
-        <version>1.4.60</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-fileupload</groupId>
-        <artifactId>commons-fileupload</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-	<groupId>com.gwtext</groupId>
-	<artifactId>gwtext</artifactId>
-	<version>2.0.1</version>
-      </dependency>
+            <dependency>
+                <groupId>org.tmatesoft</groupId>
+                <artifactId>svnkit</artifactId>
+                <version>1.1.2</version>
+            </dependency>
 
-      <!-- drools-examples -->
-      <dependency>
-        <groupId>foxtrot</groupId>
-        <artifactId>foxtrot</artifactId>
-        <version>2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.jgoodies</groupId>
-        <artifactId>forms</artifactId>
-        <version>1.0.7</version><!-- TODO test that the upgrade from 1.0.4 isn't a problem -->
-      </dependency>
+            <dependency>
+                <groupId>hsqldb</groupId>
+                <artifactId>hsqldb</artifactId>
+                <version>1.8.0.2</version>
+            </dependency>
 
-      <!-- drools-solver -->
-      <dependency>
-        <groupId>commons-lang</groupId>
-        <artifactId>commons-lang</artifactId>
-        <version>2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-io</artifactId>
-        <version>1.3.2</version>
-      </dependency>
+            <!-- drools-jbrms -->
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>servlet-api</artifactId>
+                <version>2.3</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>com.google.gwt</groupId>
+                <artifactId>gwt-servlet</artifactId>
+                <version>1.4.60</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-fileupload</groupId>
+                <artifactId>commons-fileupload</artifactId>
+                <version>1.1.1</version>
+            </dependency>
+            <dependency>
+                <groupId>com.gwtext</groupId>
+                <artifactId>gwtext</artifactId>
+                <version>2.0.1</version>
+            </dependency>
 
-      <!--
-        TODO looks like jsr170:jcr:1.0 isn't used any more, remove it from /repository/jsr170/jcr/1.0
-        It's also in the central repo: http://www.mvnrepository.com/artifact/javax.jcr/jcr
-      -->
-    </dependencies>
-  </dependencyManagement>
+            <!-- drools-examples -->
+            <dependency>
+                <groupId>foxtrot</groupId>
+                <artifactId>foxtrot</artifactId>
+                <version>2.0</version>
+            </dependency>
+            <dependency>
+                <groupId>com.jgoodies</groupId>
+                <artifactId>forms</artifactId>
+                <version>1.0.7</version>
+                <!-- TODO test that the upgrade from 1.0.4 isn't a problem -->
+            </dependency>
 
-  <distributionManagement>
-    <site>
-      <id>rules-site.jboss.org</id>
-      <url>${rules.site.deploy.dir}</url>
-    </site>
+            <!-- drools-solver -->
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>2.3</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>1.3.2</version>
+            </dependency>
 
-    <snapshotRepository>
-      <id>snapshots.jboss.org</id>
-      <name>JBoss Snapshot Repository</name>
-      <url>dav:https://snapshots.jboss.org/maven2</url>
-    </snapshotRepository>
+            <!--
+              TODO looks like jsr170:jcr:1.0 isn't used any more, remove it from /repository/jsr170/jcr/1.0
+              It's also in the central repo: http://www.mvnrepository.com/artifact/javax.jcr/jcr
+            -->
+        </dependencies>
+    </dependencyManagement>
 
-    <!-- TODO configure this if it's needed -->
-    <!--<repository>-->
-      <!--<id>shell.jboss.org?</id>-->
-      <!--<url>scp://???.jboss.org/???/maven2</url>-->
-    <!--</repository>-->
-<!--    <snapshotRepository>
-      <id>snapshots.jboss.org</id>
-    </snapshotRepository> -->
-    <!--<site>-->
-      <!--<id>shell.jboss.org?</id>-->
-      <!--<url>scp://???/???/</url>-->
-    <!--</site>-->
-  </distributionManagement>
+    <distributionManagement>
+        <site>
+            <id>rules-site.jboss.org</id>
+            <url>${rules.site.deploy.dir}</url>
+        </site>
 
+        <snapshotRepository>
+            <id>snapshots.jboss.org</id>
+            <name>JBoss Snapshot Repository</name>
+            <url>dav:https://snapshots.jboss.org/maven2</url>
+        </snapshotRepository>
+
+        <!-- TODO configure this if it's needed -->
+        <!--<repository>-->
+        <!--<id>shell.jboss.org?</id>-->
+        <!--<url>scp://???.jboss.org/???/maven2</url>-->
+        <!--</repository>-->
+        <!--    <snapshotRepository>
+         <id>snapshots.jboss.org</id>
+       </snapshotRepository> -->
+        <!--<site>-->
+        <!--<id>shell.jboss.org?</id>-->
+        <!--<url>scp://???/???/</url>-->
+        <!--</site>-->
+    </distributionManagement>
+
 </project>




More information about the jboss-svn-commits mailing list