[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