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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 26 20:11:02 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-02-26 20:11:02 -0500 (Mon, 26 Feb 2007)
New Revision: 9789

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/BuildUtils.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.stg
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.stg
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.stg
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/builder/
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/builder/dialect/
Removed:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/BuildUtils.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaFunction.stg
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/semantics/
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/AccumulateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/CollectBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ColumnBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConditionalElementBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConsequenceBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ForallBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/FromBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PredicateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ReturnValueBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.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/java/JavaPredicateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/RuleClassBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
Log:
JBRULES-708 MVEL Integration
-More interface/implementation seperation for dialects

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -324,7 +324,7 @@
         this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
         functionDescr.setClassName( functionClassName );
 
-        final JavaFunctionBuilder builder = new FunctionBuilder();
+        final FunctionBuilder builder = new JavaFunctionBuilder();
         this.pkg.addFunction( functionDescr.getName() );
 
         addClassCompileTask( functionClassName,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/AccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/AccumulateBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/AccumulateBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -2,6 +2,7 @@
 
 import org.drools.lang.descr.BaseDescr;
 import org.drools.rule.ConditionalElement;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 public interface AccumulateBuilder {
 

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/BuildUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/BuildUtils.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/BuildUtils.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -1,220 +0,0 @@
-/*
- * Copyright 2006 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.rule.builder;
-
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.antlr.stringtemplate.StringTemplate;
-import org.antlr.stringtemplate.StringTemplateGroup;
-import org.antlr.stringtemplate.language.AngleBracketTemplateLexer;
-import org.codehaus.jfdi.interpreter.TypeResolver;
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.compiler.RuleError;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.rule.Declaration;
-import org.drools.rule.builder.dialect.java.DeclarationTypeFixer;
-import org.drools.rule.builder.dialect.java.JavaExprAnalyzer;
-import org.drools.rule.builder.dialect.java.KnowledgeHelperFixer;
-
-/**
- * A holder class for utility functions
- * 
- * @author etirelli
- */
-public class BuildUtils {
-
-    // the string template groups
-    private final StringTemplateGroup      ruleGroup    = new StringTemplateGroup( new InputStreamReader( RuleBuilder.class.getResourceAsStream( "javaRule.stg" ) ),
-                                                                                   AngleBracketTemplateLexer.class );
-
-    private final StringTemplateGroup      invokerGroup = new StringTemplateGroup( new InputStreamReader( RuleBuilder.class.getResourceAsStream( "javaInvokers.stg" ) ),
-                                                                                   AngleBracketTemplateLexer.class );
-
-    private final KnowledgeHelperFixer     knowledgeHelperFixer;
-  
-    private final DeclarationTypeFixer     typeFixer;
-
-    private final JavaExprAnalyzer         analyzer;
-
-    private final TypeResolver             typeResolver;
-
-    private final ClassFieldExtractorCache classFieldExtractorCache;
-    
-    private final Map                      builders;
-
-    public BuildUtils(final KnowledgeHelperFixer knowledgeHelperFixer,
-                      final DeclarationTypeFixer typeFixer,
-                      final JavaExprAnalyzer analyzer,
-                      final TypeResolver typeResolver,
-                      final ClassFieldExtractorCache classFieldExtractorCache,
-                      final Map builders ) {
-        this.knowledgeHelperFixer = knowledgeHelperFixer;
-        this.typeFixer = typeFixer;
-        this.analyzer = analyzer;
-        this.typeResolver = typeResolver;
-        this.classFieldExtractorCache = classFieldExtractorCache;
-        this.builders = builders;
-    }
-
-    public List[] getUsedIdentifiers(final BuildContext context,
-                                     final BaseDescr descr,
-                                     final String text) {
-        List[] usedIdentifiers = null;
-        try {
-            usedIdentifiers = this.analyzer.analyzeExpression( text,
-                                                               new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()} );
-        } catch ( final Exception e ) {
-            context.getErrors().add( new RuleError( context.getRule(),
-                                                    descr,
-                                                    null,
-                                                    "Unable to determine the used declarations" ) );
-        }
-        return usedIdentifiers;
-    }
-
-    public List[] getUsedCIdentifiers(final BuildContext context,
-                                      final BaseDescr descr,
-                                      final String text) {
-        List[] usedIdentifiers = null;
-        try {
-            usedIdentifiers = this.analyzer.analyzeBlock( text,
-                                                          new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()} );
-        } catch ( final Exception e ) {
-            context.getErrors().add( new RuleError( context.getRule(),
-                                                    descr,
-                                                    null,
-                                                    "Unable to determine the used declarations" ) );
-        }
-        return usedIdentifiers;
-    }
-
-    /**
-     * Sets usual string template attributes:
-     * 
-     * <li> list of declarations and declaration types</li>
-     * <li> list of globals and global types</li>
-     *
-     * @param context the current build context
-     * @param st the string template whose attributes will be set 
-     * @param declarations array of declarations to set
-     * @param globals array of globals to set
-     */
-    public void setStringTemplateAttributes(final BuildContext context,
-                                            final StringTemplate st,
-                                            final Declaration[] declarations,
-                                            final String[] globals) {
-        final String[] declarationTypes = new String[declarations.length];
-        for ( int i = 0, size = declarations.length; i < size; i++ ) {
-            declarationTypes[i] = this.typeFixer.fix( declarations[i] ); 
-        }
-
-        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( '$',
-                                                                                                          '.' ) );
-        }
-
-        st.setAttribute( "declarations",
-                         declarations );
-        st.setAttribute( "declarationTypes",
-                         declarationTypes );
-
-        st.setAttribute( "globals",
-                         globals );
-        st.setAttribute( "globalTypes",
-                         globalTypes );
-    }
-
-    /**
-     * Upper case the first letter of "name"
-     * 
-     * @param name
-     * @return
-     */
-    public String ucFirst(final String name) {
-        return name.toUpperCase().charAt( 0 ) + name.substring( 1 );
-    }
-
-    /**
-     * Returns the string template group of invokers
-     * @return
-     */
-    public StringTemplateGroup getInvokerGroup() {
-        return invokerGroup;
-    }
-
-    /**
-     * Returns the string template group of actual rule templates
-     * @return
-     */
-    public StringTemplateGroup getRuleGroup() {
-        return ruleGroup;
-    }
-
-    /**
-     * Returns the Knowledge Helper Fixer
-     * @return
-     */
-    public KnowledgeHelperFixer getKnowledgeHelperFixer() {
-        return knowledgeHelperFixer;
-    }
-
-    /**
-     * Returns the current type resolver instance
-     * @return
-     */
-    public TypeResolver getTypeResolver() {
-        return this.typeResolver;
-    }
-
-    /**
-     * Returns the cache of field extractors
-     * @return
-     */
-    public ClassFieldExtractorCache getClassFieldExtractorCache() {
-        return classFieldExtractorCache;
-    }
-
-    /**
-     * Returns a map<Class, ConditionalElementBuilder> of builders
-     * @return
-     */
-    public Map getBuilders() {
-        return builders;
-    }
-
-    /**
-     * Returns the builder for the given descriptor class
-     * @param descr
-     * @return
-     */
-    public ConditionalElementBuilder getBuilder(Class descr) {
-        return (ConditionalElementBuilder) builders.get( descr );
-    }
-
-    /**
-     * @return the typeFixer
-     */
-    public DeclarationTypeFixer getTypeFixer() {
-        return typeFixer;
-    }
-
-}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/CollectBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/CollectBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/CollectBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -21,6 +21,7 @@
 import org.drools.rule.Collect;
 import org.drools.rule.Column;
 import org.drools.rule.ConditionalElement;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 /**
  * @author etirelli

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ColumnBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ColumnBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ColumnBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -53,6 +53,7 @@
 import org.drools.rule.ReturnValueRestriction;
 import org.drools.rule.VariableConstraint;
 import org.drools.rule.VariableRestriction;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 import org.drools.rule.builder.dialect.java.JavaPredicateBuilder;
 import org.drools.rule.builder.dialect.java.JavaReturnValueBuilder;
 import org.drools.spi.Evaluator;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConditionalElementBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConditionalElementBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConditionalElementBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -18,6 +18,7 @@
 
 import org.drools.lang.descr.BaseDescr;
 import org.drools.rule.ConditionalElement;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 /**
  * An interface to define classes capable of building

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConsequenceBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ConsequenceBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -1,6 +1,7 @@
 package org.drools.rule.builder;
 
 import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 public interface ConsequenceBuilder {
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ForallBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ForallBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ForallBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -24,6 +24,7 @@
 import org.drools.rule.Column;
 import org.drools.rule.ConditionalElement;
 import org.drools.rule.Forall;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 /**
  * @author etirelli

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/FromBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/FromBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/FromBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -2,6 +2,7 @@
 
 import org.drools.lang.descr.BaseDescr;
 import org.drools.rule.ConditionalElement;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 public interface FromBuilder {
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -30,6 +30,7 @@
 import org.drools.rule.ConditionalElement;
 import org.drools.rule.GroupElement;
 import org.drools.rule.GroupElementFactory;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 /**
  * @author etirelli

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PredicateBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PredicateBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -5,6 +5,7 @@
 import org.drools.lang.descr.PredicateDescr;
 import org.drools.rule.Declaration;
 import org.drools.rule.PredicateConstraint;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 public interface PredicateBuilder {
     public void build(final BuildContext context,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ReturnValueBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ReturnValueBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -5,6 +5,7 @@
 import org.drools.lang.descr.ReturnValueRestrictionDescr;
 import org.drools.rule.Declaration;
 import org.drools.rule.ReturnValueRestriction;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 
 public interface ReturnValueBuilder {
     public void build(final BuildContext context,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -41,6 +41,7 @@
 import org.drools.rule.GroupElement;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 import org.drools.rule.builder.dialect.java.DeclarationTypeFixer;
 import org.drools.rule.builder.dialect.java.JavaAccumulateBuilder;
 import org.drools.rule.builder.dialect.java.JavaConsequenceBuilder;

Copied: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/BuildUtils.java (from rev 9785, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/BuildUtils.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/BuildUtils.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/BuildUtils.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2006 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.rule.builder.dialect.java;
+
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.antlr.stringtemplate.StringTemplateGroup;
+import org.antlr.stringtemplate.language.AngleBracketTemplateLexer;
+import org.codehaus.jfdi.interpreter.TypeResolver;
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.compiler.RuleError;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.builder.BuildContext;
+import org.drools.rule.builder.ConditionalElementBuilder;
+import org.drools.rule.builder.RuleBuilder;
+
+/**
+ * A holder class for utility functions
+ * 
+ * @author etirelli
+ */
+public class BuildUtils {
+
+    // the string template groups
+    private final StringTemplateGroup      ruleGroup    = new StringTemplateGroup( new InputStreamReader( BuildUtils.class.getResourceAsStream( "javaRule.stg" ) ),
+                                                                                   AngleBracketTemplateLexer.class );
+
+    private final StringTemplateGroup      invokerGroup = new StringTemplateGroup( new InputStreamReader( BuildUtils.class.getResourceAsStream( "javaInvokers.stg" ) ),
+                                                                                   AngleBracketTemplateLexer.class );
+
+    private final KnowledgeHelperFixer     knowledgeHelperFixer;
+  
+    private final DeclarationTypeFixer     typeFixer;
+
+    private final JavaExprAnalyzer         analyzer;
+
+    private final TypeResolver             typeResolver;
+
+    private final ClassFieldExtractorCache classFieldExtractorCache;
+    
+    private final Map                      builders;
+
+    public BuildUtils(final KnowledgeHelperFixer knowledgeHelperFixer,
+                      final DeclarationTypeFixer typeFixer,
+                      final JavaExprAnalyzer analyzer,
+                      final TypeResolver typeResolver,
+                      final ClassFieldExtractorCache classFieldExtractorCache,
+                      final Map builders ) {
+        this.knowledgeHelperFixer = knowledgeHelperFixer;
+        this.typeFixer = typeFixer;
+        this.analyzer = analyzer;
+        this.typeResolver = typeResolver;
+        this.classFieldExtractorCache = classFieldExtractorCache;
+        this.builders = builders;
+    }
+
+    public List[] getUsedIdentifiers(final BuildContext context,
+                                     final BaseDescr descr,
+                                     final String text) {
+        List[] usedIdentifiers = null;
+        try {
+            usedIdentifiers = this.analyzer.analyzeExpression( text,
+                                                               new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()} );
+        } catch ( final Exception e ) {
+            context.getErrors().add( new RuleError( context.getRule(),
+                                                    descr,
+                                                    null,
+                                                    "Unable to determine the used declarations" ) );
+        }
+        return usedIdentifiers;
+    }
+
+    public List[] getUsedCIdentifiers(final BuildContext context,
+                                      final BaseDescr descr,
+                                      final String text) {
+        List[] usedIdentifiers = null;
+        try {
+            usedIdentifiers = this.analyzer.analyzeBlock( text,
+                                                          new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()} );
+        } catch ( final Exception e ) {
+            context.getErrors().add( new RuleError( context.getRule(),
+                                                    descr,
+                                                    null,
+                                                    "Unable to determine the used declarations" ) );
+        }
+        return usedIdentifiers;
+    }
+
+    /**
+     * Sets usual string template attributes:
+     * 
+     * <li> list of declarations and declaration types</li>
+     * <li> list of globals and global types</li>
+     *
+     * @param context the current build context
+     * @param st the string template whose attributes will be set 
+     * @param declarations array of declarations to set
+     * @param globals array of globals to set
+     */
+    public void setStringTemplateAttributes(final BuildContext context,
+                                            final StringTemplate st,
+                                            final Declaration[] declarations,
+                                            final String[] globals) {
+        final String[] declarationTypes = new String[declarations.length];
+        for ( int i = 0, size = declarations.length; i < size; i++ ) {
+            declarationTypes[i] = this.typeFixer.fix( declarations[i] ); 
+        }
+
+        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( '$',
+                                                                                                          '.' ) );
+        }
+
+        st.setAttribute( "declarations",
+                         declarations );
+        st.setAttribute( "declarationTypes",
+                         declarationTypes );
+
+        st.setAttribute( "globals",
+                         globals );
+        st.setAttribute( "globalTypes",
+                         globalTypes );
+    }
+
+    /**
+     * Upper case the first letter of "name"
+     * 
+     * @param name
+     * @return
+     */
+    public String ucFirst(final String name) {
+        return name.toUpperCase().charAt( 0 ) + name.substring( 1 );
+    }
+
+    /**
+     * Returns the string template group of invokers
+     * @return
+     */
+    public StringTemplateGroup getInvokerGroup() {
+        return invokerGroup;
+    }
+
+    /**
+     * Returns the string template group of actual rule templates
+     * @return
+     */
+    public StringTemplateGroup getRuleGroup() {
+        return ruleGroup;
+    }
+
+    /**
+     * Returns the Knowledge Helper Fixer
+     * @return
+     */
+    public KnowledgeHelperFixer getKnowledgeHelperFixer() {
+        return knowledgeHelperFixer;
+    }
+
+    /**
+     * Returns the current type resolver instance
+     * @return
+     */
+    public TypeResolver getTypeResolver() {
+        return this.typeResolver;
+    }
+
+    /**
+     * Returns the cache of field extractors
+     * @return
+     */
+    public ClassFieldExtractorCache getClassFieldExtractorCache() {
+        return classFieldExtractorCache;
+    }
+
+    /**
+     * Returns a map<Class, ConditionalElementBuilder> of builders
+     * @return
+     */
+    public Map getBuilders() {
+        return builders;
+    }
+
+    /**
+     * Returns the builder for the given descriptor class
+     * @param descr
+     * @return
+     */
+    public ConditionalElementBuilder getBuilder(Class descr) {
+        return (ConditionalElementBuilder) builders.get( descr );
+    }
+
+    /**
+     * @return the typeFixer
+     */
+    public DeclarationTypeFixer getTypeFixer() {
+        return typeFixer;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -29,7 +29,6 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.builder.AccumulateBuilder;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 import org.drools.rule.builder.ColumnBuilder;
 import org.drools.rule.builder.ConditionalElementBuilder;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -24,7 +24,6 @@
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Declaration;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 import org.drools.rule.builder.ConsequenceBuilder;
 
 /**

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -25,7 +25,6 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.EvalCondition;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 import org.drools.rule.builder.ColumnBuilder;
 import org.drools.rule.builder.ConditionalElementBuilder;
 

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	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -22,7 +22,7 @@
     implements
     FunctionBuilder {
 
-    private static final StringTemplateGroup functionGroup = new StringTemplateGroup( new InputStreamReader( FunctionBuilder.class.getResourceAsStream( "javaFunction.stg" ) ),
+    private static final StringTemplateGroup functionGroup = new StringTemplateGroup( new InputStreamReader( JavaFunctionBuilder.class.getResourceAsStream( "javaFunction.stg" ) ),
                                                                                       AngleBracketTemplateLexer.class );
 
     public JavaFunctionBuilder() {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaPredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaPredicateBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaPredicateBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -7,7 +7,6 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.PredicateConstraint;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 import org.drools.rule.builder.PredicateBuilder;
 
 public class JavaPredicateBuilder

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -7,7 +7,6 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.ReturnValueRestriction;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 
 public class JavaReturnValueBuilder {
     public void build(final BuildContext context,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/RuleClassBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/RuleClassBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/RuleClassBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -20,7 +20,6 @@
 
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 
 /**
  * @author etirelli

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -28,9 +28,9 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.EvalCondition;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 import org.drools.rule.builder.ColumnBuilder;
 import org.drools.rule.builder.ConditionalElementBuilder;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 import org.drools.spi.DeclarationScopeResolver;
 import org.mvel.MVEL;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2007-02-27 01:11:02 UTC (rev 9789)
@@ -28,10 +28,10 @@
 import org.drools.rule.ConditionalElement;
 import org.drools.rule.From;
 import org.drools.rule.builder.BuildContext;
-import org.drools.rule.builder.BuildUtils;
 import org.drools.rule.builder.ColumnBuilder;
 import org.drools.rule.builder.ConditionalElementBuilder;
 import org.drools.rule.builder.FromBuilder;
+import org.drools.rule.builder.dialect.java.BuildUtils;
 import org.drools.spi.DataProvider;
 import org.mvel.CompiledExpression;
 import org.mvel.ExpressionParser;

Copied: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.stg (from rev 9785, labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaFunction.stg)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.stg	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.stg	2007-02-27 01:11:02 UTC (rev 9789)
@@ -0,0 +1,15 @@
+group javaFunction;
+
+function(package, imports, className, methodName, returnType, parameterTypes, parameterNames, text) ::= <<
+package <package>;
+
+<imports:{ importEntry | import <importEntry>;<\n>}>   
+
+public class <className> {
+    private static final long serialVersionUID  = 320L;
+        
+    public static <returnType> <methodName>(<parameterTypes, parameterNames:{ type, name | <type> <name>}; separator=",\n">) throws Exception {
+        <text>
+    }      
+}     
+>>

Copied: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.stg (from rev 9785, labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.stg	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.stg	2007-02-27 01:11:02 UTC (rev 9789)
@@ -0,0 +1,211 @@
+group javaInvokeable;
+
+getMethodBytecode(package, ruleClassName, methodName) ::= <<
+    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();
+        byte[] data = new byte[1024];
+        int byteCount;
+        try {
+            while ( (byteCount = is.read( data,
+                                 0,
+                                 1024 )) > -1 )
+            {                    
+                bos.write(data, 0, byteCount);
+            }
+        } catch ( java.io.IOException e ) {
+            throw new org.drools.RuntimeDroolsException("Unable getResourceAsStream for Class '<ruleClassName>' ");
+        }               
+        
+        org.drools.asm.ClassReader classReader = new org.drools.asm.ClassReader( bos.toByteArray() );
+        classReader.accept( visit, true );
+        org.drools.asm.util.TraceMethodVisitor trace = visit.getTrace();
+        return trace.getText();     
+    }
+>>    
+    
+
+equals() ::= <<
+    public boolean equals(Object object) {
+        if (object == null ) {
+            return false;
+        } else if ( object == this ){
+            return true;
+        }
+        
+        if ( ! (object instanceof org.drools.spi.CompiledInvoker) ) {
+            return false;
+        }
+        
+        org.drools.spi.CompiledInvoker other = ( org.drools.spi.CompiledInvoker ) object;
+        
+        return org.drools.util.asm.MethodComparator.compareBytecode( getMethodBytecode(), other.getMethodBytecode() );
+    }
+>>
+
+hashCode(hashCode) ::= <<
+    public int hashCode() {
+        return <hashCode>;
+    }
+>>
+
+returnValueInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, hashCode) ::= <<
+package <package>;
+
+public class <invokerClassName> implements org.drools.spi.ReturnValueExpression, org.drools.spi.CompiledInvoker
+{
+    private static final long serialVersionUID  = 320L;
+    
+    public org.drools.spi.FieldValue evaluate(java.lang.Object object,
+                            org.drools.spi.Tuple tuple,
+                            org.drools.rule.Declaration[] previousDeclarations, 
+                            org.drools.rule.Declaration[] localDeclarations, 
+                            org.drools.WorkingMemory workingMemory) throws Exception {                               
+
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) previousDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[<i0>] ) ).getObject() );<\n>}>
+        <localDeclarationTypes, localDeclarations:{ type, declr| <type> <declr.identifier> = ( <type> ) localDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( object );<\n>}>
+        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
+        
+        return <ruleClassName>.<methodName>( 
+            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(localDeclarations)><if(declarations)>,<endif><endif>
+            <localDeclarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
+	        <globals:{ identifier | <identifier>}; separator=",\n"> );
+    }    
+    
+    <hashCode(hashCode=hashCode)>
+    
+    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
+    
+    <equals()>    
+}     
+>>
+
+predicateInvoker(package, invokerClassName, ruleClassName, methodName,  
+                 declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, hashCode) ::= <<
+package <package>;
+
+public class <invokerClassName> implements org.drools.spi.PredicateExpression, org.drools.spi.CompiledInvoker
+{
+    private static final long serialVersionUID  = 320L;
+    
+    public boolean evaluate(Object object,
+    						org.drools.spi.Tuple tuple,
+                            org.drools.rule.Declaration[] previousDeclarations, 
+                            org.drools.rule.Declaration[] localDeclarations, 
+                            org.drools.WorkingMemory workingMemory) throws Exception {                               
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) previousDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[<i0>] ) ).getObject() );<\n>}>
+        <localDeclarationTypes, localDeclarations:{ type, declr| <type> <declr.identifier> = ( <type> ) localDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( object );<\n>}>
+        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
+        
+        return <ruleClassName>.<methodName>( 
+            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(localDeclarations)><if(declarations)>,<endif><endif>
+            <localDeclarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
+	        <globals:{ identifier | <identifier>}; separator=",\n"> );
+    }
+    
+    <hashCode(hashCode=hashCode)>
+    
+    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
+    
+    <equals()>    
+}     
+>>
+
+
+evalInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, globals, globalTypes, hashCode) ::= <<
+package <package>;
+
+import org.drools.asm.ClassReader;
+import org.drools.asm.util.TraceMethodVisitor;
+import org.drools.util.asm.MethodComparator.Tracer;
+
+public class <invokerClassName> implements org.drools.spi.EvalExpression, org.drools.spi.CompiledInvoker
+{
+    private static final long serialVersionUID  = 320L;
+    
+    public boolean evaluate(org.drools.spi.Tuple tuple,
+                            org.drools.rule.Declaration[] declarations, 
+                            org.drools.WorkingMemory workingMemory) throws Exception {                               
+
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
+        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
+        
+        return <ruleClassName>.<methodName>( 
+            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)><if(declarations)>,<endif><endif>
+	        <globals:{ identifier | <identifier>}; separator=",\n"> );
+    }
+
+    <hashCode(hashCode=hashCode)>
+    
+    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
+    
+    <equals()>  
+}     
+>>
+
+accumulateInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, globals, globalTypes, hashCode) ::= <<
+package <package>;
+
+import org.drools.asm.ClassReader;
+import org.drools.asm.util.TraceMethodVisitor;
+import org.drools.util.asm.MethodComparator.Tracer;
+
+public class <invokerClassName> implements org.drools.spi.Accumulator, org.drools.spi.CompiledInvoker
+{
+    private static final long serialVersionUID  = 320L;
+    
+    public Object accumulate(org.drools.spi.Tuple tuple,
+                              java.util.List matchingObjects,
+                              org.drools.rule.Declaration[] declarations, 
+                              org.drools.rule.Declaration[] innerDeclarations,
+                              org.drools.WorkingMemory workingMemory) throws Exception {                               
+
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
+        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
+        
+        return <ruleClassName>.<methodName>(
+            innerDeclarations,
+            matchingObjects<if(declarations)>,<endif> 
+            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)>,<endif>
+	        <globals:{ identifier | <identifier>}; separator=",\n"> );
+    }
+
+    <hashCode(hashCode=hashCode)>
+    
+    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
+    
+    <equals()>  
+}     
+>>
+
+consequenceInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, indexes, globals, globalTypes, text) ::= <<
+package <package>;
+
+public class <invokerClassName> implements org.drools.spi.Consequence
+{
+    private static final long serialVersionUID  = 320L;
+
+    public void evaluate(org.drools.spi.KnowledgeHelper knowledgeHelper,
+                         org.drools.WorkingMemory workingMemory) throws Exception {    
+                       
+        org.drools.spi.Tuple tuple = knowledgeHelper.getTuple();
+        org.drools.rule.Rule rule = knowledgeHelper.getRule();
+        org.drools.rule.Declaration[] declarations = rule.getDeclarations();                                                  
+
+        <declarations, indexes:{ declr, index| org.drools.common.InternalFactHandle <declr.identifier>__Handle__ = ( org.drools.common.InternalFactHandle ) tuple.get( knowledgeHelper.getDeclaration( declarations[<index>].getIdentifier() ) );<\n>}>
+
+        <declarationTypes, declarations, indexes :{ type, declr, index| <type> <declr.identifier> = ( <type> )  declarations[<index>].<declr.extractor.nativeReadMethod.name>( <declr.identifier>__Handle__.getObject() );<\n>}>
+        
+        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
+        
+        <ruleClassName>.<methodName>( 
+            knowledgeHelper<if(declarations)>,<endif>
+            <declarations:{ declr | <declr.identifier>, <declr.identifier>__Handle__}; separator=",\n"><if(globals)>,<endif>
+	        <globals:{ identifier | <identifier>}; separator=",\n"> );
+    }
+}     
+>>
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.stg (from rev 9785, labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.stg	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.stg	2007-02-27 01:11:02 UTC (rev 9789)
@@ -0,0 +1,42 @@
+group javaMethods;
+
+returnValueMethod(declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, methodName, text) ::= <<
+public static org.drools.spi.FieldValue <methodName>(<declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(localDeclarations)><if(declarations)>,<endif><endif> 
+                                                     <localDeclarationTypes, localDeclarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
+                                                     <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
+    return org.drools.base.FieldFactory.getFieldValue( <text> );
+}
+>>
+
+predicateMethod(declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, methodName, text) ::= <<
+public static boolean <methodName>(
+                                   <declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(declarations)><if(localDeclarations)>,<endif><endif> 
+                                   <localDeclarationTypes, localDeclarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
+                                   <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
+    return ( <text> );
+}
+>>
+
+evalMethod(declarations, declarationTypes, globals, globalTypes, methodName, text) ::= <<
+public static boolean <methodName>(<declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)><if(declarations)>,<endif><endif> <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
+    return ( <text> );
+}
+>>
+
+accumulateMethod(declarations, declarationTypes, innerDeclarations, globals, globalTypes, methodName, columnType, columnDeclaration, resultType, initCode, actionCode, resultCode) ::= <<
+public static <resultType> <methodName>(org.drools.rule.Declaration[] innerDeclarations, java.util.List matchingObjects<if(declarations)>, <endif><declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)>,<endif> <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
+    <initCode>
+    for( java.util.Iterator it = matchingObjects.iterator(); it.hasNext(); ) {
+      Object __itNextElem__ = it.next();
+      <innerDeclarations:{ declr | <declr.extractor.extractToClass.name> <declr.identifier> = (<declr.extractor.extractToClass.name>) innerDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( __itNextElem__ );}; separator="\n">
+      <actionCode>
+    }
+    return ( <resultCode> );
+}
+>>
+
+consequenceMethod(declarations, declarationTypes, globals, globalTypes, methodName, text) ::= <<
+public static void <methodName>(org.drools.spi.KnowledgeHelper drools<if(declarations)>,<endif> <declarationTypes, declarations:{ type, declr | <type> <declr.identifier>, org.drools.FactHandle <declr.identifier>__Handle__}; separator=","><if(globals)>,<endif> <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
+    <text>
+}
+>>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaFunction.stg
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaFunction.stg	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaFunction.stg	2007-02-27 01:11:02 UTC (rev 9789)
@@ -1,15 +0,0 @@
-group javaFunction;
-
-function(package, imports, className, methodName, returnType, parameterTypes, parameterNames, text) ::= <<
-package <package>;
-
-<imports:{ importEntry | import <importEntry>;<\n>}>   
-
-public class <className> {
-    private static final long serialVersionUID  = 320L;
-        
-    public static <returnType> <methodName>(<parameterTypes, parameterNames:{ type, name | <type> <name>}; separator=",\n">) throws Exception {
-        <text>
-    }      
-}     
->>

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg	2007-02-27 01:11:02 UTC (rev 9789)
@@ -1,211 +0,0 @@
-group javaInvokeable;
-
-getMethodBytecode(package, ruleClassName, methodName) ::= <<
-    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();
-        byte[] data = new byte[1024];
-        int byteCount;
-        try {
-            while ( (byteCount = is.read( data,
-                                 0,
-                                 1024 )) > -1 )
-            {                    
-                bos.write(data, 0, byteCount);
-            }
-        } catch ( java.io.IOException e ) {
-            throw new org.drools.RuntimeDroolsException("Unable getResourceAsStream for Class '<ruleClassName>' ");
-        }               
-        
-        org.drools.asm.ClassReader classReader = new org.drools.asm.ClassReader( bos.toByteArray() );
-        classReader.accept( visit, true );
-        org.drools.asm.util.TraceMethodVisitor trace = visit.getTrace();
-        return trace.getText();     
-    }
->>    
-    
-
-equals() ::= <<
-    public boolean equals(Object object) {
-        if (object == null ) {
-            return false;
-        } else if ( object == this ){
-            return true;
-        }
-        
-        if ( ! (object instanceof org.drools.spi.CompiledInvoker) ) {
-            return false;
-        }
-        
-        org.drools.spi.CompiledInvoker other = ( org.drools.spi.CompiledInvoker ) object;
-        
-        return org.drools.util.asm.MethodComparator.compareBytecode( getMethodBytecode(), other.getMethodBytecode() );
-    }
->>
-
-hashCode(hashCode) ::= <<
-    public int hashCode() {
-        return <hashCode>;
-    }
->>
-
-returnValueInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, hashCode) ::= <<
-package <package>;
-
-public class <invokerClassName> implements org.drools.spi.ReturnValueExpression, org.drools.spi.CompiledInvoker
-{
-    private static final long serialVersionUID  = 320L;
-    
-    public org.drools.spi.FieldValue evaluate(java.lang.Object object,
-                            org.drools.spi.Tuple tuple,
-                            org.drools.rule.Declaration[] previousDeclarations, 
-                            org.drools.rule.Declaration[] localDeclarations, 
-                            org.drools.WorkingMemory workingMemory) throws Exception {                               
-
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) previousDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[<i0>] ) ).getObject() );<\n>}>
-        <localDeclarationTypes, localDeclarations:{ type, declr| <type> <declr.identifier> = ( <type> ) localDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( object );<\n>}>
-        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
-        
-        return <ruleClassName>.<methodName>( 
-            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(localDeclarations)><if(declarations)>,<endif><endif>
-            <localDeclarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
-	        <globals:{ identifier | <identifier>}; separator=",\n"> );
-    }    
-    
-    <hashCode(hashCode=hashCode)>
-    
-    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
-    
-    <equals()>    
-}     
->>
-
-predicateInvoker(package, invokerClassName, ruleClassName, methodName,  
-                 declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, hashCode) ::= <<
-package <package>;
-
-public class <invokerClassName> implements org.drools.spi.PredicateExpression, org.drools.spi.CompiledInvoker
-{
-    private static final long serialVersionUID  = 320L;
-    
-    public boolean evaluate(Object object,
-    						org.drools.spi.Tuple tuple,
-                            org.drools.rule.Declaration[] previousDeclarations, 
-                            org.drools.rule.Declaration[] localDeclarations, 
-                            org.drools.WorkingMemory workingMemory) throws Exception {                               
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) previousDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( previousDeclarations[<i0>] ) ).getObject() );<\n>}>
-        <localDeclarationTypes, localDeclarations:{ type, declr| <type> <declr.identifier> = ( <type> ) localDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( object );<\n>}>
-        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
-        
-        return <ruleClassName>.<methodName>( 
-            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(localDeclarations)><if(declarations)>,<endif><endif>
-            <localDeclarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
-	        <globals:{ identifier | <identifier>}; separator=",\n"> );
-    }
-    
-    <hashCode(hashCode=hashCode)>
-    
-    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
-    
-    <equals()>    
-}     
->>
-
-
-evalInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, globals, globalTypes, hashCode) ::= <<
-package <package>;
-
-import org.drools.asm.ClassReader;
-import org.drools.asm.util.TraceMethodVisitor;
-import org.drools.util.asm.MethodComparator.Tracer;
-
-public class <invokerClassName> implements org.drools.spi.EvalExpression, org.drools.spi.CompiledInvoker
-{
-    private static final long serialVersionUID  = 320L;
-    
-    public boolean evaluate(org.drools.spi.Tuple tuple,
-                            org.drools.rule.Declaration[] declarations, 
-                            org.drools.WorkingMemory workingMemory) throws Exception {                               
-
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
-        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
-        
-        return <ruleClassName>.<methodName>( 
-            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)><if(declarations)>,<endif><endif>
-	        <globals:{ identifier | <identifier>}; separator=",\n"> );
-    }
-
-    <hashCode(hashCode=hashCode)>
-    
-    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
-    
-    <equals()>  
-}     
->>
-
-accumulateInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, globals, globalTypes, hashCode) ::= <<
-package <package>;
-
-import org.drools.asm.ClassReader;
-import org.drools.asm.util.TraceMethodVisitor;
-import org.drools.util.asm.MethodComparator.Tracer;
-
-public class <invokerClassName> implements org.drools.spi.Accumulator, org.drools.spi.CompiledInvoker
-{
-    private static final long serialVersionUID  = 320L;
-    
-    public Object accumulate(org.drools.spi.Tuple tuple,
-                              java.util.List matchingObjects,
-                              org.drools.rule.Declaration[] declarations, 
-                              org.drools.rule.Declaration[] innerDeclarations,
-                              org.drools.WorkingMemory workingMemory) throws Exception {                               
-
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
-        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
-        
-        return <ruleClassName>.<methodName>(
-            innerDeclarations,
-            matchingObjects<if(declarations)>,<endif> 
-            <declarations:{ declr | <declr.identifier>}; separator=",\n"><if(globals)>,<endif>
-	        <globals:{ identifier | <identifier>}; separator=",\n"> );
-    }
-
-    <hashCode(hashCode=hashCode)>
-    
-    <getMethodBytecode(package=package, ruleClassName=ruleClassName, methodName=methodName)>
-    
-    <equals()>  
-}     
->>
-
-consequenceInvoker(package, invokerClassName, ruleClassName, methodName, declarations, declarationTypes, indexes, globals, globalTypes, text) ::= <<
-package <package>;
-
-public class <invokerClassName> implements org.drools.spi.Consequence
-{
-    private static final long serialVersionUID  = 320L;
-
-    public void evaluate(org.drools.spi.KnowledgeHelper knowledgeHelper,
-                         org.drools.WorkingMemory workingMemory) throws Exception {    
-                       
-        org.drools.spi.Tuple tuple = knowledgeHelper.getTuple();
-        org.drools.rule.Rule rule = knowledgeHelper.getRule();
-        org.drools.rule.Declaration[] declarations = rule.getDeclarations();                                                  
-
-        <declarations, indexes:{ declr, index| org.drools.common.InternalFactHandle <declr.identifier>__Handle__ = ( org.drools.common.InternalFactHandle ) tuple.get( knowledgeHelper.getDeclaration( declarations[<index>].getIdentifier() ) );<\n>}>
-
-        <declarationTypes, declarations, indexes :{ type, declr, index| <type> <declr.identifier> = ( <type> )  declarations[<index>].<declr.extractor.nativeReadMethod.name>( <declr.identifier>__Handle__.getObject() );<\n>}>
-        
-        <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
-        
-        <ruleClassName>.<methodName>( 
-            knowledgeHelper<if(declarations)>,<endif>
-            <declarations:{ declr | <declr.identifier>, <declr.identifier>__Handle__}; separator=",\n"><if(globals)>,<endif>
-	        <globals:{ identifier | <identifier>}; separator=",\n"> );
-    }
-}     
->>
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg	2007-02-27 00:36:32 UTC (rev 9788)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg	2007-02-27 01:11:02 UTC (rev 9789)
@@ -1,42 +0,0 @@
-group javaMethods;
-
-returnValueMethod(declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, methodName, text) ::= <<
-public static org.drools.spi.FieldValue <methodName>(<declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(localDeclarations)><if(declarations)>,<endif><endif> 
-                                                     <localDeclarationTypes, localDeclarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
-                                                     <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
-    return org.drools.base.FieldFactory.getFieldValue( <text> );
-}
->>
-
-predicateMethod(declarations, declarationTypes, localDeclarations, localDeclarationTypes, globals, globalTypes, methodName, text) ::= <<
-public static boolean <methodName>(
-                                   <declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(declarations)><if(localDeclarations)>,<endif><endif> 
-                                   <localDeclarationTypes, localDeclarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)><if(localDeclarations)>,<endif><if(!localDeclarations)><if(declarations)>,<endif><endif><endif>
-                                   <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
-    return ( <text> );
-}
->>
-
-evalMethod(declarations, declarationTypes, globals, globalTypes, methodName, text) ::= <<
-public static boolean <methodName>(<declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)><if(declarations)>,<endif><endif> <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
-    return ( <text> );
-}
->>
-
-accumulateMethod(declarations, declarationTypes, innerDeclarations, globals, globalTypes, methodName, columnType, columnDeclaration, resultType, initCode, actionCode, resultCode) ::= <<
-public static <resultType> <methodName>(org.drools.rule.Declaration[] innerDeclarations, java.util.List matchingObjects<if(declarations)>, <endif><declarationTypes, declarations:{ type, declr | <type> <declr.identifier>}; separator=","><if(globals)>,<endif> <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
-    <initCode>
-    for( java.util.Iterator it = matchingObjects.iterator(); it.hasNext(); ) {
-      Object __itNextElem__ = it.next();
-      <innerDeclarations:{ declr | <declr.extractor.extractToClass.name> <declr.identifier> = (<declr.extractor.extractToClass.name>) innerDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( __itNextElem__ );}; separator="\n">
-      <actionCode>
-    }
-    return ( <resultCode> );
-}
->>
-
-consequenceMethod(declarations, declarationTypes, globals, globalTypes, methodName, text) ::= <<
-public static void <methodName>(org.drools.spi.KnowledgeHelper drools<if(declarations)>,<endif> <declarationTypes, declarations:{ type, declr | <type> <declr.identifier>, org.drools.FactHandle <declr.identifier>__Handle__}; separator=","><if(globals)>,<endif> <globalTypes, globals:{ type, identifier | <type> <identifier>}; separator=","> ) throws Exception {
-    <text>
-}
->>
\ No newline at end of file




More information about the jboss-svn-commits mailing list