[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