[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