[jboss-svn-commits] JBL Code SVN: r14736 - labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Aug 29 14:05:08 EDT 2007
Author: ahtik
Date: 2007-08-29 14:05:08 -0400 (Wed, 29 Aug 2007)
New Revision: 14736
Modified:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsLineBreakpoint.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/IDroolsDebugConstants.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java
Log:
JBRULES-1120: Added support for multiple-rule stepover for MVEL Debugger
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java 2007-08-29 17:28:28 UTC (rev 14735)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java 2007-08-29 18:05:08 UTC (rev 14736)
@@ -760,19 +760,20 @@
public DroolsLineBreakpoint getDroolsBreakpoint(String source,
int line) {
+
DroolsLineBreakpoint backupBreakpoint = null;
Iterator iterator = getBreakpoints().iterator();
while ( iterator.hasNext() ) {
IJavaBreakpoint element = (IJavaBreakpoint) iterator.next();
- if ( element instanceof DroolsLineBreakpoint ) {
+ if ( element instanceof DroolsLineBreakpoint && ((DroolsLineBreakpoint)element).getDialectName().equals( MVELDialect.ID )) {
DroolsLineBreakpoint l = (DroolsLineBreakpoint) element;
try {
if ( l == null || source == null ) {
return null;
}
-
+
int matchLine = l.getLineNumber();
String matchSource = l.getRuleName();
if ( matchLine == line && source.equals( matchSource ) ) {
@@ -780,13 +781,8 @@
}
// Prepare for a backup breakpoint
- if (source.equals( matchSource )) {
-
- if (l.getLineNumber()<line &&
- ((backupBreakpoint==null) ||
- (backupBreakpoint!=null && l.getLineNumber()<backupBreakpoint.getLineNumber()))) {
- backupBreakpoint = l;
- }
+ if (source.equals( matchSource ) || l.getFileRuleMappings().containsKey( source )) {
+ backupBreakpoint = l;
}
} catch ( CoreException e ) {
@@ -794,7 +790,7 @@
}
}
}
-
+
return backupBreakpoint;
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsLineBreakpoint.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsLineBreakpoint.java 2007-08-29 17:28:28 UTC (rev 14735)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsLineBreakpoint.java 2007-08-29 18:05:08 UTC (rev 14736)
@@ -62,6 +62,11 @@
return getMarker().getAttribute( DIALECT, "Unknown");
}
+ public Map getFileRuleMappings() {
+ String packedInfo = getMarker().getAttribute( IDroolsDebugConstants.DRL_RULES, "");
+ return unpackRuleMapping( packedInfo );
+ }
+
public void setJavaBreakpointProperties() throws CoreException {
IMarker marker = getMarker();
int drlLineNumber = getDRLLineNumber();
@@ -69,6 +74,20 @@
try {
DRLInfo drlInfo = DroolsEclipsePlugin.getDefault().parseResource( marker.getResource(), true );
+ RuleInfo[] ruleInfos = drlInfo.getRuleInfos();
+
+ StringBuilder rb = new StringBuilder();
+ for (int i=0;i<ruleInfos.length; i++) {
+ int line = ruleInfos[i].getConsequenceDrlLineNumber();
+ String ruleid = ruleInfos[i].getClassName()+":"+line;
+ rb.append(ruleid);
+ if (i<ruleInfos.length-1) {
+ rb.append(";");
+ }
+ }
+
+ marker.setAttribute( IDroolsDebugConstants.DRL_RULES, rb.toString());
+
marker.setAttribute( TYPE_NAME, getRuleClassName( drlInfo, marker.getResource().toString(), drlLineNumber ) );
int ruleLineNumber = getRuleLineNumber( drlInfo, marker.getResource().toString(), drlLineNumber );
marker.setAttribute( IMarker.LINE_NUMBER, ruleLineNumber );
@@ -139,4 +158,17 @@
return null;
}
+ private final static Map unpackRuleMapping(String input) {
+ Map map = new HashMap();
+ String[] rules = input.split( "\\;");
+ for (int i=0; i<rules.length; i++) {
+ if (rules[i].length()>0) {
+ String[] inf = rules[i].split( "\\:" );
+ map.put( inf[0], Integer.valueOf( inf[1] ) );
+ }
+ }
+ return map;
+ }
+
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/IDroolsDebugConstants.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/IDroolsDebugConstants.java 2007-08-29 17:28:28 UTC (rev 14735)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/IDroolsDebugConstants.java 2007-08-29 18:05:08 UTC (rev 14736)
@@ -6,5 +6,10 @@
String DROOLS_MARKER_TYPE = "org.drools.eclipse.droolsBreakpointMarker";
String DRL_LINE_NUMBER = "Drools_DRL_LineNumber";
String LAUNCH_CONFIGURATION_TYPE = "org.drools.eclipse.launching.DroolsLaunchConfigurationDelegate";
-
+
+ /**
+ * com.package.HelloWorld:14;com.package.GoodBye:7 style of packed rule info. int is the linenumber at the drl.
+ */
+ String DRL_RULES = "org.drools.eclipse.debug.DRL_RULES";
+
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java 2007-08-29 17:28:28 UTC (rev 14735)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java 2007-08-29 18:05:08 UTC (rev 14736)
@@ -291,17 +291,25 @@
}
int line;
- line = bpoint.getDRLLineNumber();
+
+ try {
+ line = Integer.parseInt(bpoint.getFileRuleMappings().get( sourceName ).toString());
+ } catch (Throwable t2) {
+ DroolsEclipsePlugin.log( t2 );
+ return -1;
+ }
int fragmentLine = getBreakpointLineNumber(); // 4->5 for step over
- int delta = 0;
+
+/* int delta = 0;
try {
delta = fragmentLine - bpoint.getLineNumber();
} catch ( CoreException e ) {
DroolsEclipsePlugin.log( e );
}
- return line + delta;
+*/ int res = line + fragmentLine;
+ return res;
}
public RuleInfo getExecutingRuleInfo() {
More information about the jboss-svn-commits
mailing list