[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