[jboss-svn-commits] JBL Code SVN: r9777 - in labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java: builder and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 26 19:02:02 EST 2007
Author: mark.proctor at jboss.com
Date: 2007-02-26 19:02:02 -0500 (Mon, 26 Feb 2007)
New Revision: 9777
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaAccumulateBuilder.java
Removed:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/AccumulateBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaConsequenceBuilder.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ConsequenceBuilder.java
Log:
JBRULES-708 MVEL Integration
-More interface/implementation seperation for dialects
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2007-02-26 23:57:57 UTC (rev 9776)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2007-02-27 00:02:02 UTC (rev 9777)
@@ -26,6 +26,7 @@
import org.drools.RuntimeDroolsException;
import org.drools.base.ClassFieldExtractorCache;
import org.drools.base.evaluators.DateFactory;
+import org.drools.dialect.java.JavaConsequenceBuilder;
import org.drools.dialect.java.JavaEvalBuilder;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
@@ -42,15 +43,14 @@
import org.drools.rule.GroupElement;
import org.drools.rule.Package;
import org.drools.rule.Rule;
-import org.drools.semantics.java.builder.AccumulateBuilder;
+import org.drools.semantics.java.builder.ForallBuilder;
+import org.drools.semantics.java.builder.JavaAccumulateBuilder;
import org.drools.semantics.java.builder.BuildContext;
import org.drools.semantics.java.builder.BuildUtils;
import org.drools.semantics.java.builder.CollectBuilder;
import org.drools.semantics.java.builder.ColumnBuilder;
import org.drools.semantics.java.builder.ConditionalElementBuilder;
import org.drools.semantics.java.builder.ConsequenceBuilder;
-import org.drools.semantics.java.builder.JavaConsequenceBuilder;
-import org.drools.semantics.java.builder.ForallBuilder;
import org.drools.semantics.java.builder.FromBuilder;
import org.drools.semantics.java.builder.GroupElementBuilder;
import org.drools.semantics.java.builder.RuleClassBuilder;
@@ -95,7 +95,7 @@
builders.put( CollectDescr.class,
new CollectBuilder() );
builders.put( AccumulateDescr.class,
- new AccumulateBuilder() );
+ new JavaAccumulateBuilder() );
builders.put( ForallDescr.class,
new ForallBuilder() );
GroupElementBuilder gebuilder = new GroupElementBuilder();
Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/AccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/AccumulateBuilder.java 2007-02-26 23:57:57 UTC (rev 9776)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/AccumulateBuilder.java 2007-02-27 00:02:02 UTC (rev 9777)
@@ -1,158 +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.semantics.java.builder;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.antlr.stringtemplate.StringTemplate;
-import org.drools.base.ClassObjectType;
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.rule.Accumulate;
-import org.drools.rule.Column;
-import org.drools.rule.ConditionalElement;
-import org.drools.rule.Declaration;
-
-/**
- * @author etirelli
- *
- */
-public class AccumulateBuilder
- implements
- ConditionalElementBuilder {
-
- /* (non-Javadoc)
- * @see org.drools.semantics.java.builder.ConditionalElementBuilder#build(org.drools.semantics.java.builder.BuildContext, org.drools.semantics.java.builder.BuildUtils, org.drools.semantics.java.builder.ColumnBuilder, org.drools.lang.descr.BaseDescr)
- */
- public ConditionalElement build(BuildContext context,
- BuildUtils utils,
- ColumnBuilder columnBuilder,
- BaseDescr descr) {
-
- AccumulateDescr accumDescr = (AccumulateDescr) descr;
-
- Column sourceColumn = columnBuilder.build( context,
- utils,
- accumDescr.getSourceColumn() );
-
- if ( sourceColumn == null ) {
- return null;
- }
-
- Column resultColumn = columnBuilder.build( context,
- utils,
- accumDescr.getResultColumn() );
-
- final String className = "accumulate" + context.getNextId();
- accumDescr.setClassMethodName( className );
-
- final List[] usedIdentifiers1 = utils.getUsedIdentifiers( context,
- accumDescr,
- accumDescr.getInitCode() );
- final List[] usedIdentifiers2 = utils.getUsedIdentifiers( context,
- accumDescr,
- accumDescr.getActionCode() );
- final List[] usedIdentifiers3 = utils.getUsedIdentifiers( context,
- accumDescr,
- accumDescr.getResultCode() );
-
- final List requiredDeclarations = new ArrayList( usedIdentifiers1[0] );
- requiredDeclarations.addAll( usedIdentifiers2[0] );
- requiredDeclarations.addAll( usedIdentifiers3[0] );
-
- final List requiredGlobals = new ArrayList( usedIdentifiers1[1] );
- requiredGlobals.addAll( usedIdentifiers2[1] );
- requiredGlobals.addAll( usedIdentifiers3[1] );
-
- final Declaration[] declarations = new Declaration[requiredDeclarations.size()];
- for ( int i = 0, size = requiredDeclarations.size(); i < size; i++ ) {
- declarations[i] = (Declaration) context.getDeclarationResolver().getDeclaration( (String) requiredDeclarations.get( i ) );
- }
- final Declaration[] sourceDeclArr = (Declaration[]) sourceColumn.getOuterDeclarations().values().toArray( new Declaration[0] );
-
- final String[] globals = (String[]) requiredGlobals.toArray( new String[requiredGlobals.size()] );
-
- StringTemplate st = utils.getRuleGroup().getInstanceOf( "accumulateMethod" );
-
- utils.setStringTemplateAttributes( context,
- st,
- declarations,
- globals );
-
- st.setAttribute( "innerDeclarations",
- sourceDeclArr );
- st.setAttribute( "methodName",
- className );
-
- final String initCode = accumDescr.getInitCode();
- final String actionCode = accumDescr.getActionCode();
- final String resultCode = accumDescr.getResultCode();
- st.setAttribute( "initCode",
- initCode );
- st.setAttribute( "actionCode",
- actionCode );
- st.setAttribute( "resultCode",
- resultCode );
-
- String resultType = null;
- // TODO: Need to change this...
- if ( resultColumn.getObjectType() instanceof ClassObjectType ) {
- resultType = ((ClassObjectType) resultColumn.getObjectType()).getClassType().getName();
- } else {
- resultType = resultColumn.getObjectType().getValueType().getClassType().getName();
- }
-
- st.setAttribute( "resultType",
- resultType );
-
- context.getMethods().add( st.toString() );
-
- st = utils.getInvokerGroup().getInstanceOf( "accumulateInvoker" );
-
- st.setAttribute( "package",
- context.getPkg().getName() );
- st.setAttribute( "ruleClassName",
- utils.ucFirst( context.getRuleDescr().getClassName() ) );
- st.setAttribute( "invokerClassName",
- context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker" );
- st.setAttribute( "methodName",
- className );
-
- utils.setStringTemplateAttributes( context,
- st,
- declarations,
- (String[]) requiredGlobals.toArray( new String[requiredGlobals.size()] ) );
-
- st.setAttribute( "hashCode",
- actionCode.hashCode() );
-
- Accumulate accumulate = new Accumulate( sourceColumn,
- resultColumn,
- declarations,
- sourceDeclArr );
- final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker";
- context.getInvokers().put( invokerClassName,
- st.toString() );
- context.getInvokerLookups().put( invokerClassName,
- accumulate );
- context.getDescrLookups().put( invokerClassName,
- accumDescr );
- return accumulate;
- }
-
-}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ConsequenceBuilder.java 2007-02-26 23:57:57 UTC (rev 9776)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ConsequenceBuilder.java 2007-02-27 00:02:02 UTC (rev 9777)
@@ -4,8 +4,8 @@
public interface ConsequenceBuilder {
- public abstract void buildConsequence(final BuildContext context,
- final BuildUtils utils,
- final RuleDescr ruleDescr);
+ public void buildConsequence(final BuildContext context,
+ final BuildUtils utils,
+ final RuleDescr ruleDescr);
}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaAccumulateBuilder.java (from rev 9753, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/AccumulateBuilder.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaAccumulateBuilder.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaAccumulateBuilder.java 2007-02-27 00:02:02 UTC (rev 9777)
@@ -0,0 +1,161 @@
+/*
+ * 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.semantics.java.builder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.drools.base.ClassObjectType;
+import org.drools.lang.descr.AccumulateDescr;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.rule.Accumulate;
+import org.drools.rule.Column;
+import org.drools.rule.ConditionalElement;
+import org.drools.rule.Declaration;
+
+/**
+ * @author etirelli
+ *
+ */
+public class JavaAccumulateBuilder
+ implements
+ ConditionalElementBuilder, AccumulateBuilder {
+
+ /* (non-Javadoc)
+ * @see org.drools.semantics.java.builder.ConditionalElementBuilder#build(org.drools.semantics.java.builder.BuildContext, org.drools.semantics.java.builder.BuildUtils, org.drools.semantics.java.builder.ColumnBuilder, org.drools.lang.descr.BaseDescr)
+ */
+ /* (non-Javadoc)
+ * @see org.drools.semantics.java.builder.AccumulateBuilder#build(org.drools.semantics.java.builder.BuildContext, org.drools.semantics.java.builder.BuildUtils, org.drools.semantics.java.builder.ColumnBuilder, org.drools.lang.descr.BaseDescr)
+ */
+ public ConditionalElement build(BuildContext context,
+ BuildUtils utils,
+ ColumnBuilder columnBuilder,
+ BaseDescr descr) {
+
+ AccumulateDescr accumDescr = (AccumulateDescr) descr;
+
+ Column sourceColumn = columnBuilder.build( context,
+ utils,
+ accumDescr.getSourceColumn() );
+
+ if ( sourceColumn == null ) {
+ return null;
+ }
+
+ Column resultColumn = columnBuilder.build( context,
+ utils,
+ accumDescr.getResultColumn() );
+
+ final String className = "accumulate" + context.getNextId();
+ accumDescr.setClassMethodName( className );
+
+ final List[] usedIdentifiers1 = utils.getUsedIdentifiers( context,
+ accumDescr,
+ accumDescr.getInitCode() );
+ final List[] usedIdentifiers2 = utils.getUsedIdentifiers( context,
+ accumDescr,
+ accumDescr.getActionCode() );
+ final List[] usedIdentifiers3 = utils.getUsedIdentifiers( context,
+ accumDescr,
+ accumDescr.getResultCode() );
+
+ final List requiredDeclarations = new ArrayList( usedIdentifiers1[0] );
+ requiredDeclarations.addAll( usedIdentifiers2[0] );
+ requiredDeclarations.addAll( usedIdentifiers3[0] );
+
+ final List requiredGlobals = new ArrayList( usedIdentifiers1[1] );
+ requiredGlobals.addAll( usedIdentifiers2[1] );
+ requiredGlobals.addAll( usedIdentifiers3[1] );
+
+ final Declaration[] declarations = new Declaration[requiredDeclarations.size()];
+ for ( int i = 0, size = requiredDeclarations.size(); i < size; i++ ) {
+ declarations[i] = (Declaration) context.getDeclarationResolver().getDeclaration( (String) requiredDeclarations.get( i ) );
+ }
+ final Declaration[] sourceDeclArr = (Declaration[]) sourceColumn.getOuterDeclarations().values().toArray( new Declaration[0] );
+
+ final String[] globals = (String[]) requiredGlobals.toArray( new String[requiredGlobals.size()] );
+
+ StringTemplate st = utils.getRuleGroup().getInstanceOf( "accumulateMethod" );
+
+ utils.setStringTemplateAttributes( context,
+ st,
+ declarations,
+ globals );
+
+ st.setAttribute( "innerDeclarations",
+ sourceDeclArr );
+ st.setAttribute( "methodName",
+ className );
+
+ final String initCode = accumDescr.getInitCode();
+ final String actionCode = accumDescr.getActionCode();
+ final String resultCode = accumDescr.getResultCode();
+ st.setAttribute( "initCode",
+ initCode );
+ st.setAttribute( "actionCode",
+ actionCode );
+ st.setAttribute( "resultCode",
+ resultCode );
+
+ String resultType = null;
+ // TODO: Need to change this...
+ if ( resultColumn.getObjectType() instanceof ClassObjectType ) {
+ resultType = ((ClassObjectType) resultColumn.getObjectType()).getClassType().getName();
+ } else {
+ resultType = resultColumn.getObjectType().getValueType().getClassType().getName();
+ }
+
+ st.setAttribute( "resultType",
+ resultType );
+
+ context.getMethods().add( st.toString() );
+
+ st = utils.getInvokerGroup().getInstanceOf( "accumulateInvoker" );
+
+ st.setAttribute( "package",
+ context.getPkg().getName() );
+ st.setAttribute( "ruleClassName",
+ utils.ucFirst( context.getRuleDescr().getClassName() ) );
+ st.setAttribute( "invokerClassName",
+ context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker" );
+ st.setAttribute( "methodName",
+ className );
+
+ utils.setStringTemplateAttributes( context,
+ st,
+ declarations,
+ (String[]) requiredGlobals.toArray( new String[requiredGlobals.size()] ) );
+
+ st.setAttribute( "hashCode",
+ actionCode.hashCode() );
+
+ Accumulate accumulate = new Accumulate( sourceColumn,
+ resultColumn,
+ declarations,
+ sourceDeclArr );
+ final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker";
+ context.getInvokers().put( invokerClassName,
+ st.toString() );
+ context.getInvokerLookups().put( invokerClassName,
+ accumulate );
+ context.getDescrLookups().put( invokerClassName,
+ accumDescr );
+ return accumulate;
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaConsequenceBuilder.java 2007-02-26 23:57:57 UTC (rev 9776)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaConsequenceBuilder.java 2007-02-27 00:02:02 UTC (rev 9777)
@@ -1,116 +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.semantics.java.builder;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.antlr.stringtemplate.StringTemplate;
-import org.drools.RuntimeDroolsException;
-import org.drools.lang.descr.RuleDescr;
-import org.drools.rule.Declaration;
-
-/**
- * @author etirelli
- *
- */
-public class JavaConsequenceBuilder implements ConsequenceBuilder {
-
- /* (non-Javadoc)
- * @see org.drools.semantics.java.builder.ConsequenceBuilder#buildConsequence(org.drools.semantics.java.builder.BuildContext, org.drools.semantics.java.builder.BuildUtils, org.drools.lang.descr.RuleDescr)
- */
- public void buildConsequence(final BuildContext context,
- final BuildUtils utils,
- final RuleDescr ruleDescr) {
-
- // pushing consequence LHS into the stack for variable resolution
- context.getBuildStack().push( context.getRule().getLhs() );
-
- // generate
- // generate Invoker
- final String className = "consequence";
-
- StringTemplate st = utils.getRuleGroup().getInstanceOf( "consequenceMethod" );
-
- st.setAttribute( "methodName",
- className );
-
- final List[] usedIdentifiers = utils.getUsedCIdentifiers( context,
- ruleDescr,
- ruleDescr.getConsequence() );
-
- final Declaration[] declarations = new Declaration[usedIdentifiers[0].size()];
- for ( int i = 0, size = usedIdentifiers[0].size(); i < size; i++ ) {
- declarations[i] = (Declaration) context.getDeclarationResolver().getDeclaration( (String) usedIdentifiers[0].get( i ) );
- }
-
- utils.setStringTemplateAttributes( context,
- st,
- declarations,
- (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
- st.setAttribute( "text",
- utils.getKnowledgeHelperFixer().fix( ruleDescr.getConsequence() ) );
-
- context.getMethods().add( st.toString() );
-
- st = utils.getInvokerGroup().getInstanceOf( "consequenceInvoker" );
-
- st.setAttribute( "package",
- context.getPkg().getName() );
- st.setAttribute( "ruleClassName",
- utils.ucFirst( context.getRuleDescr().getClassName() ) );
- st.setAttribute( "invokerClassName",
- ruleDescr.getClassName() + utils.ucFirst( className ) + "Invoker" );
- st.setAttribute( "methodName",
- className );
-
- utils.setStringTemplateAttributes( context,
- st,
- declarations,
- (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
-
- // Must use the rule declarations, so we use the same order as used in the generated invoker
- final List list = Arrays.asList( context.getRule().getDeclarations() );
-
- final int[] indexes = new int[declarations.length];
- for ( int i = 0, length = declarations.length; i < length; i++ ) {
- indexes[i] = list.indexOf( declarations[i] );
- if ( indexes[i] == -1 ) {
- // some defensive code, this should never happen
- throw new RuntimeDroolsException( "Unable to find declaration in list while generating the consequence invoker" );
- }
- }
-
- st.setAttribute( "indexes",
- indexes );
-
- st.setAttribute( "text",
- ruleDescr.getConsequence() );
-
- final String invokerClassName = context.getPkg().getName() + "." + ruleDescr.getClassName() + utils.ucFirst( className ) + "Invoker";
- context.getInvokers().put( invokerClassName,
- st.toString() );
- context.getInvokerLookups().put( invokerClassName,
- context.getRule() );
- context.getDescrLookups().put( invokerClassName,
- ruleDescr );
-
- // popping Rule.getLHS() from the build stack
- context.getBuildStack().pop();
- }
-
-}
More information about the jboss-svn-commits
mailing list