[jboss-svn-commits] JBL Code SVN: r9787 - in labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools: rule/builder/dialect/java and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 26 19:35:20 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-02-26 19:35:19 -0500 (Mon, 26 Feb 2007)
New Revision: 9787

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
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/dialect/java/FunctionBuilder.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:28:08 UTC (rev 9786)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-02-27 00:35:19 UTC (rev 9787)
@@ -57,6 +57,7 @@
 import org.drools.rule.Rule;
 import org.drools.rule.builder.RuleBuilder;
 import org.drools.rule.builder.dialect.java.FunctionBuilder;
+import org.drools.rule.builder.dialect.java.JavaFunctionBuilder;
 import org.drools.rule.builder.dialect.java.PackageStore;
 import org.drools.spi.FunctionResolver;
 import org.drools.xml.XmlPackageReader;
@@ -323,7 +324,7 @@
         this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
         functionDescr.setClassName( functionClassName );
 
-        final FunctionBuilder builder = new FunctionBuilder();
+        final JavaFunctionBuilder builder = new FunctionBuilder();
         this.pkg.addFunction( functionDescr.getName() );
 
         addClassCompileTask( functionClassName,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/FunctionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/FunctionBuilder.java	2007-02-27 00:28:08 UTC (rev 9786)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/FunctionBuilder.java	2007-02-27 00:35:19 UTC (rev 9787)
@@ -16,103 +16,15 @@
  * limitations under the License.
  */
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
-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.RuntimeDroolsException;
 import org.drools.lang.descr.FunctionDescr;
-import org.drools.rule.LineMappings;
 import org.drools.rule.Package;
-import org.drools.spi.DeclarationScopeResolver;
 
-public class FunctionBuilder {
-    private static final StringTemplateGroup functionGroup = new StringTemplateGroup( new InputStreamReader( FunctionBuilder.class.getResourceAsStream( "javaFunction.stg" ) ),
-                                                                                      AngleBracketTemplateLexer.class );
-
-    public FunctionBuilder() {
-
-    }
-
+public interface FunctionBuilder {
     public String build(final Package pkg,
                         final FunctionDescr functionDescr,
                         final TypeResolver typeResolver,
-                        final Map lineMappings) {
-        final StringTemplate st = FunctionBuilder.functionGroup.getInstanceOf( "function" );
-
-        st.setAttribute( "package",
-                         pkg.getName() );
-
-        st.setAttribute( "imports",
-                         pkg.getImports() );
-
-        st.setAttribute( "className",
-                         ucFirst( functionDescr.getName() ) );
-        st.setAttribute( "methodName",
-                         functionDescr.getName() );
-
-        st.setAttribute( "returnType",
-                         functionDescr.getReturnType() );
-
-        st.setAttribute( "parameterTypes",
-                         functionDescr.getParameterTypes() );
-
-        st.setAttribute( "parameterNames",
-                         functionDescr.getParameterNames() );
-
-        Map params = new HashMap();
-        List names = functionDescr.getParameterNames();
-        List types = functionDescr.getParameterTypes();
-        try {
-            for ( int i = 0, size = names.size(); i < size; i++ ) {
-                params.put( names.get( i ), typeResolver.resolveType( (String) types.get( i ) ) );
-            }
-        } catch ( ClassNotFoundException e ) {
-            // todo : must be a better way so we don't have to try/catch each resolveType call
-            throw new RuntimeDroolsException( e );                
-        }                   
-        
-        st.setAttribute( "text",
-                         functionDescr.getText() );
-        
-        String text = st.toString();
-        
-        BufferedReader reader = new BufferedReader( new StringReader ( text ) );
-        String line = null;
-        String lineStartsWith = "    public static " + functionDescr.getReturnType( ) + " " + functionDescr.getName();
-        int offset = 0;
-        try {
-            while ( ( line = reader.readLine() ) != null ) {
-                offset++;
-                if ( line.startsWith( lineStartsWith ) ) {
-                    break;
-                }
-            }
-            functionDescr.setOffset( offset );
-        } catch ( IOException e ) {
-            // won't ever happen, it's just reading over a string.
-            throw new RuntimeDroolsException( "Error determining start offset with function" );
-        }
-        
-        String name = pkg.getName() + "." + ucFirst( functionDescr.getName() );
-        LineMappings mapping = new LineMappings( name );
-        mapping.setStartLine( functionDescr.getLine() );
-        mapping.setOffset( functionDescr.getOffset() );      
-        lineMappings.put( name, lineMappings );
-
-        return text;
-
-    }
-
-    private String ucFirst(final String name) {
-        return name.toUpperCase().charAt( 0 ) + name.substring( 1 );
-    }
+                        final Map lineMappings);
 }
\ No newline at end of file

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-02-27 00:35:19 UTC (rev 9787)
@@ -0,0 +1,110 @@
+package org.drools.rule.builder.dialect.java;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+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.RuntimeDroolsException;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.rule.LineMappings;
+import org.drools.rule.Package;
+
+public class JavaFunctionBuilder
+    implements
+    FunctionBuilder {
+
+    private static final StringTemplateGroup functionGroup = new StringTemplateGroup( new InputStreamReader( FunctionBuilder.class.getResourceAsStream( "javaFunction.stg" ) ),
+                                                                                      AngleBracketTemplateLexer.class );
+
+    public JavaFunctionBuilder() {
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.rule.builder.dialect.java.JavaFunctionBuilder#build(org.drools.rule.Package, org.drools.lang.descr.FunctionDescr, org.codehaus.jfdi.interpreter.TypeResolver, java.util.Map)
+     */
+    public String build(final Package pkg,
+                        final FunctionDescr functionDescr,
+                        final TypeResolver typeResolver,
+                        final Map lineMappings) {
+        final StringTemplate st = JavaFunctionBuilder.functionGroup.getInstanceOf( "function" );
+
+        st.setAttribute( "package",
+                         pkg.getName() );
+
+        st.setAttribute( "imports",
+                         pkg.getImports() );
+
+        st.setAttribute( "className",
+                         ucFirst( functionDescr.getName() ) );
+        st.setAttribute( "methodName",
+                         functionDescr.getName() );
+
+        st.setAttribute( "returnType",
+                         functionDescr.getReturnType() );
+
+        st.setAttribute( "parameterTypes",
+                         functionDescr.getParameterTypes() );
+
+        st.setAttribute( "parameterNames",
+                         functionDescr.getParameterNames() );
+
+        Map params = new HashMap();
+        List names = functionDescr.getParameterNames();
+        List types = functionDescr.getParameterTypes();
+        try {
+            for ( int i = 0, size = names.size(); i < size; i++ ) {
+                params.put( names.get( i ),
+                            typeResolver.resolveType( (String) types.get( i ) ) );
+            }
+        } catch ( ClassNotFoundException e ) {
+            // todo : must be a better way so we don't have to try/catch each resolveType call
+            throw new RuntimeDroolsException( e );
+        }
+
+        st.setAttribute( "text",
+                         functionDescr.getText() );
+
+        String text = st.toString();
+
+        BufferedReader reader = new BufferedReader( new StringReader( text ) );
+        String line = null;
+        String lineStartsWith = "    public static " + functionDescr.getReturnType() + " " + functionDescr.getName();
+        int offset = 0;
+        try {
+            while ( (line = reader.readLine()) != null ) {
+                offset++;
+                if ( line.startsWith( lineStartsWith ) ) {
+                    break;
+                }
+            }
+            functionDescr.setOffset( offset );
+        } catch ( IOException e ) {
+            // won't ever happen, it's just reading over a string.
+            throw new RuntimeDroolsException( "Error determining start offset with function" );
+        }
+
+        String name = pkg.getName() + "." + ucFirst( functionDescr.getName() );
+        LineMappings mapping = new LineMappings( name );
+        mapping.setStartLine( functionDescr.getLine() );
+        mapping.setOffset( functionDescr.getOffset() );
+        lineMappings.put( name,
+                          lineMappings );
+
+        return text;
+
+    }
+
+    private String ucFirst(final String name) {
+        return name.toUpperCase().charAt( 0 ) + name.substring( 1 );
+    }
+
+}
\ No newline at end of file




More information about the jboss-svn-commits mailing list