[jboss-svn-commits] JBL Code SVN: r6070 - in labs/jbossrules/trunk/drools-compiler/src/main: java/org/drools/compiler java/org/drools/semantics/java resources/org/drools/semantics/java

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Sep 2 19:15:15 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-09-02 19:15:11 -0400 (Sat, 02 Sep 2006)
New Revision: 6070

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaFunction.stg
Log:
JBRULES-118 Map generated .java compilation errors to drl
-Added LineMappings class which is referenced from PackageCompilationData. It provides linestart and offset to
 determine correct line numbers for compiled code.

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	2006-09-02 21:04:46 UTC (rev 6069)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2006-09-02 23:15:11 UTC (rev 6070)
@@ -47,6 +47,7 @@
 import org.drools.lang.descr.PackageDescr;
 import org.drools.lang.descr.PatternDescr;
 import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.LineMappings;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
 import org.drools.semantics.java.ClassTypeResolver;
@@ -79,6 +80,7 @@
     private FunctionFixer               functionFixer;
     private FunctionResolver            functionResolver;
     private ClassFieldExtractorCache    classFieldExtractorCache;
+    private Map                         lineMappings;
 
     /**
      * Use this when package is starting from scratch. 
@@ -123,6 +125,7 @@
 
         if ( pkg != null ) {
             this.packageStoreWrapper = new PackageStore( pkg.getPackageCompilationData() );
+            this.lineMappings = pkg.getPackageCompilationData().getLineMappings();
         }
     }
 
@@ -241,6 +244,8 @@
     private Package newPackage(final PackageDescr packageDescr) {
         final Package pkg = new Package( packageDescr.getName(),
                                          this.configuration.getClassLoader() );
+        this.lineMappings = new HashMap();
+        pkg.getPackageCompilationData().setLineMappings( this.lineMappings );
 
         this.packageStoreWrapper = new PackageStore( pkg.getPackageCompilationData() );
 
@@ -293,7 +298,7 @@
                                      final ErrorHandler handler) {
 
         final String fileName = className.replace( '.',
-                                             '/' ) + ".java";
+                                                   '/' ) + ".java";
         src.add( fileName,
                  text.getBytes() );
 
@@ -305,11 +310,12 @@
     private void addFunction(final FunctionDescr functionDescr) {
         final FunctionBuilder buidler = new FunctionBuilder();
         this.pkg.addFunction( functionDescr.getName() );
-            
+
         addClassCompileTask( this.pkg.getName() + "." + ucFirst( functionDescr.getName() ),
                              buidler.build( this.pkg,
                                             functionDescr,
-                                            getFunctionFixer() ),
+                                            getFunctionFixer(),
+                                            lineMappings ),
                              this.src,
                              new FunctionErrorHandler( functionDescr,
                                                        "Function Compilation error" ) );
@@ -336,8 +342,8 @@
         }
 
         final FactTemplate factTemplate = new FactTemplateImpl( this.pkg,
-                                                          factTemplateDescr.getName(),
-                                                          (FieldTemplate[]) fields.toArray( new FieldTemplate[fields.size()] ) );
+                                                                factTemplateDescr.getName(),
+                                                                (FieldTemplate[]) fields.toArray( new FieldTemplate[fields.size()] ) );
     }
 
     private void addRule(final RuleDescr ruleDescr) {
@@ -367,6 +373,13 @@
         }
 
         this.pkg.addRule( rule );
+
+        String name = pkg.getName() + "." + ucFirst( ruleDescr.getClassName() );
+        LineMappings mapping = new LineMappings( name );
+        mapping.setStartLine( ruleDescr.getConsequenceLine() );
+        mapping.setOffset( ruleDescr.getConsequenceOffset() );
+        this.lineMappings.put( name,
+                               mapping );
     }
 
     /**
@@ -392,10 +405,11 @@
 
         return this.functionResolver;
     }
-    
+
     private FunctionFixer getFunctionFixer() {
         if ( this.functionFixer == null ) {
-            this.functionFixer = new FunctionFixer(this.pkg, getFunctionResolver() );
+            this.functionFixer = new FunctionFixer( this.pkg,
+                                                    getFunctionResolver() );
         }
         return this.functionFixer;
     }
@@ -476,7 +490,6 @@
                 final ErrorHandler handler = (ErrorHandler) this.errorHandlers.get( err.getFileName() );
                 if ( handler instanceof RuleErrorHandler ) {
                     final RuleErrorHandler rh = (RuleErrorHandler) handler;
-
                 }
                 handler.addError( err );
             }
@@ -607,9 +620,9 @@
      * that originally spawned the code to be compiled.
      */
     public abstract static class ErrorHandler {
-        private final List     errors  = new ArrayList();
-        protected String message;
-        private boolean  inError = false;
+        private final List errors  = new ArrayList();
+        protected String   message;
+        private boolean    inError = false;
 
         /** This needes to be checked if there is infact an error */
         public boolean isInError() {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionBuilder.java	2006-09-02 21:04:46 UTC (rev 6069)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionBuilder.java	2006-09-02 23:15:11 UTC (rev 6070)
@@ -21,12 +21,14 @@
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
+import java.util.Map;
 
 import org.antlr.stringtemplate.StringTemplate;
 import org.antlr.stringtemplate.StringTemplateGroup;
 import org.antlr.stringtemplate.language.AngleBracketTemplateLexer;
 import org.drools.RuntimeDroolsException;
 import org.drools.lang.descr.FunctionDescr;
+import org.drools.rule.LineMappings;
 import org.drools.rule.Package;
 
 public class FunctionBuilder {
@@ -39,7 +41,8 @@
 
     public String build(final Package pkg,
                         final FunctionDescr functionDescr,
-                        final FunctionFixer fixer) {
+                        final FunctionFixer fixer,
+                        final Map lineMappings) {
         final StringTemplate st = FunctionBuilder.functionGroup.getInstanceOf( "function" );
 
         st.setAttribute( "package",
@@ -84,6 +87,11 @@
             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;
 

Modified: 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	2006-09-02 21:04:46 UTC (rev 6069)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaFunction.stg	2006-09-02 23:15:11 UTC (rev 6070)
@@ -7,9 +7,9 @@
 
 public class <className> {
     private static final long serialVersionUID  = 320L;
-    
+        
     public static <returnType> <methodName>(<parameterTypes, parameterNames:{ type, name | <type> <name>}; separator=",\n">) throws Exception {
         <text>
-    }
+    }      
 }     
 >>




More information about the jboss-svn-commits mailing list