[jboss-svn-commits] JBL Code SVN: r6515 - in labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide: . debug/core editors launching

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Oct 1 18:57:18 EDT 2006


Author: KrisVerlaenen
Date: 2006-10-01 18:57:14 -0400 (Sun, 01 Oct 2006)
New Revision: 6515

Modified:
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsDebugTarget.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpointMarkerUpdater.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/launching/DroolsLaunchConfigurationDelegate.java
Log:
JBRULES-342: interactive rule debugger
 - additional work to get debugger working

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java	2006-10-01 22:53:38 UTC (rev 6514)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java	2006-10-01 22:57:14 UTC (rev 6515)
@@ -271,26 +271,24 @@
                 	}
                 }
                 PackageBuilder builder = null;
+        		DRLInfo result = null;
             	// compile parsed rules if necessary
             	if (compile && !parser.hasErrors()) {
                     builder = new PackageBuilder(builder_configuration);
                     builder.addPackage(packageDescr);
-                }
-        		DRLInfo result = null;
-        		if (compile) {
         			result = new DRLInfo(
 	    				resource.getProjectRelativePath().toString(),
 	    				packageDescr, parser.getErrors(),
 	    				builder.getPackage(), builder.getErrors());
         		} else {
         			result = new DRLInfo(
-    	    				resource.getProjectRelativePath().toString(),
-    	    				packageDescr, parser.getErrors());
+	    				resource.getProjectRelativePath().toString(),
+	    				packageDescr, parser.getErrors());
         		}
         		            		
             	// cache result
         		if (useCache) {
-	    			if (compile) {
+	    			if (compile && !parser.hasErrors()) {
 	    				compiledRules.put(resource, result);
 	        			RuleInfo[] ruleInfos = result.getRuleInfos();
 	        			for (int i = 0; i < ruleInfos.length; i++) {

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsDebugTarget.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsDebugTarget.java	2006-10-01 22:53:38 UTC (rev 6514)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsDebugTarget.java	2006-10-01 22:57:14 UTC (rev 6515)
@@ -5,6 +5,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.drools.ide.DroolsIDEPlugin;
 import org.eclipse.core.resources.IMarkerDelta;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.debug.core.DebugEvent;
@@ -40,6 +41,23 @@
 	public DroolsDebugTarget(ILaunch launch, VirtualMachine jvm, String name, boolean supportTerminate, boolean supportDisconnect, IProcess process, boolean resume) {
 		super(launch, jvm, name, supportTerminate, supportDisconnect, process, resume);
 	}
+	
+	public void breakpointAdded(IBreakpoint breakpoint) {
+		try {
+			if (breakpoint instanceof DroolsLineBreakpoint) {
+				((DroolsLineBreakpoint) breakpoint).setJavaBreakpointProperties();
+				// only add breakpoint if setting Java properties of DRL
+				// breakpoint does not generate an error
+				super.breakpointAdded(breakpoint);
+			} else {
+				super.breakpointAdded(breakpoint);
+			}
+		} catch (Throwable t) {
+			// Exception will be thrown when trying to use breakpoint
+			// on drl that is incorrect (cannot be parsed or compiled) 
+			DroolsIDEPlugin.log(t);
+		}
+	}
 
 	protected synchronized void initialize() {
 		setThreadList(new ArrayList(5));

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java	2006-10-01 22:53:38 UTC (rev 6514)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java	2006-10-01 22:57:14 UTC (rev 6515)
@@ -6,6 +6,7 @@
 import org.drools.ide.DRLInfo;
 import org.drools.ide.DroolsIDEPlugin;
 import org.drools.ide.DRLInfo.RuleInfo;
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
@@ -33,8 +34,8 @@
 	 */
 	public DroolsLineBreakpoint(IResource resource, int lineNumber)
 			throws CoreException {
-   		super(resource, getRuleClassName(resource, lineNumber), 
-			getRuleLineNumber(resource, lineNumber), -1, -1, 0, true, 
+   		super(resource, "", -1, /*getRuleClassName(resource, lineNumber), 
+			getRuleLineNumber(resource, lineNumber), */ -1, -1, 0, true, 
 			createAttributesMap(lineNumber), IDroolsDebugConstants.DROOLS_MARKER_TYPE);
 	}
 	
@@ -52,7 +53,16 @@
 		return IDroolsDebugConstants.ID_DROOLS_DEBUG_MODEL;
 	}
 	
-	private static String getRuleClassName(IResource resource, int lineNumber) throws CoreException {
+	public void setJavaBreakpointProperties() throws CoreException {
+		IMarker marker = getMarker();
+		int drlLineNumber = getDRLLineNumber();
+		if (marker.exists()) {
+			marker.setAttribute(TYPE_NAME, getRuleClassName(marker.getResource(), drlLineNumber));
+			marker.setAttribute(IMarker.LINE_NUMBER, getRuleLineNumber(getMarker().getResource(), drlLineNumber));
+		}
+	}
+	
+	private String getRuleClassName(IResource resource, int lineNumber) throws CoreException {
 		try {
 			DRLInfo drlInfo = DroolsIDEPlugin.getDefault().parseResource(resource, true);
 			if (drlInfo != null) {
@@ -69,7 +79,7 @@
 		}
 	}
 	
-	public static int getRuleLineNumber(IResource resource, int lineNumber) throws CoreException {
+	private int getRuleLineNumber(IResource resource, int lineNumber) throws CoreException {
 		try {
 			DRLInfo drlInfo = DroolsIDEPlugin.getDefault().parseResource(resource, true);
 			if (drlInfo != null) {

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpointMarkerUpdater.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpointMarkerUpdater.java	2006-10-01 22:53:38 UTC (rev 6514)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpointMarkerUpdater.java	2006-10-01 22:57:14 UTC (rev 6515)
@@ -50,7 +50,6 @@
 		if (!offsetsInitialized || (offsetsChanged && MarkerUtilities.getLineNumber(marker) != -1)) {
 			try {
 				int drlLineNumber = document.getLineOfOffset(position.getOffset()) + 1;
-				MarkerUtilities.setLineNumber(marker, DroolsLineBreakpoint.getRuleLineNumber(marker.getResource(), drlLineNumber));
 				marker.setAttribute(IDroolsDebugConstants.DRL_LINE_NUMBER, drlLineNumber);
 			} catch (Throwable t) {
 				DroolsIDEPlugin.log(t);

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java	2006-10-01 22:53:38 UTC (rev 6514)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java	2006-10-01 22:57:14 UTC (rev 6515)
@@ -24,7 +24,7 @@
 			ITextSelection textSelection = (ITextSelection) selection;
 			int lineNumber = textSelection.getStartLine();
 			try {
-				DRLInfo drlInfo = DroolsIDEPlugin.getDefault().parseResource(resource, true);
+				DRLInfo drlInfo = DroolsIDEPlugin.getDefault().parseResource(resource, false);
 				if (drlInfo != null) {
 					RuleInfo ruleInfo = drlInfo.getRuleInfo(lineNumber);
 					if (ruleInfo != null) {
@@ -34,7 +34,7 @@
 					}
 				}
 			} catch (Throwable t) {
-					DroolsIDEPlugin.log(t);
+				DroolsIDEPlugin.log(t);
 			}
 		}
 		return false;

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/launching/DroolsLaunchConfigurationDelegate.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/launching/DroolsLaunchConfigurationDelegate.java	2006-10-01 22:53:38 UTC (rev 6514)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/launching/DroolsLaunchConfigurationDelegate.java	2006-10-01 22:57:14 UTC (rev 6515)
@@ -2,7 +2,6 @@
 
 import java.text.MessageFormat;
 
-import org.drools.ide.DroolsIDEPlugin;
 import org.drools.ide.debug.core.IDroolsDebugConstants;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -30,13 +29,10 @@
 		// TODO make sure that all DRLs needed during execution are built and cached
 		super.launch(configuration, mode, launch, monitor);
 		if (mode.equals(ILaunchManager.DEBUG_MODE)) {
+			// TODO only retrieve breakpoints of this project or any
+			// of its dependent projects
 			IBreakpoint[] breakpoints = getDroolsBreakpoints();
 			for (int i = 0; i < breakpoints.length; i++) {
-				try {
-					DroolsIDEPlugin.getDefault().parseResource(breakpoints[i].getMarker().getResource(), true);
-				} catch (Throwable t) {
-					DroolsIDEPlugin.log(t);
-				}
 				launch.getDebugTarget().breakpointAdded(breakpoints[i]);
 			}
 		}




More information about the jboss-svn-commits mailing list