[jboss-svn-commits] JBL Code SVN: r13586 - labs/jbossrules/branches/mvel-tooling-2007-06-30/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
Tue Jul 17 17:05:48 EDT 2007


Author: ahtik
Date: 2007-07-17 17:05:47 -0400 (Tue, 17 Jul 2007)
New Revision: 13586

Modified:
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java
Log:
Commented out variable fetch (temporarily, so we can figure out the cause of illegal stack frames)

Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java	2007-07-17 20:47:13 UTC (rev 13585)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/DroolsDebugTarget.java	2007-07-17 21:05:47 UTC (rev 13586)
@@ -99,7 +99,7 @@
                         // Create class prepare request to add breakpoint after MVELDebugHanlder is loaded
                         ClassPrepareRequest req = getEventRequestManager().createClassPrepareRequest();
                         req.addClassFilter( "org.drools.base.mvel.MVELDebugHandler" );
-                        req.setSuspendPolicy( EventRequest.SUSPEND_EVENT_THREAD );
+                        req.setSuspendPolicy( EventRequest.SUSPEND_ALL);
 
                         addJDIEventListener( new IJDIEventListener() {
 
@@ -657,7 +657,7 @@
                 try {
                     ClassPrepareRequest req = manager.createClassPrepareRequest();
                     req.addClassFilter( "org.drools.base.mvel.MVELDebugHandler" );
-                    req.setSuspendPolicy( EventRequest.SUSPEND_EVENT_THREAD );
+                    req.setSuspendPolicy( EventRequest.SUSPEND_ALL );
                     addJDIEventListener( MVELTraceHandler.this,
                                          req );
                     req.enable();

Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java	2007-07-17 20:47:13 UTC (rev 13585)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/core/MVELStackFrame.java	2007-07-17 21:05:47 UTC (rev 13586)
@@ -1,6 +1,8 @@
 package org.drools.eclipse.debug.core;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 
@@ -9,8 +11,10 @@
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IValue;
 import org.eclipse.debug.core.model.IVariable;
+import org.eclipse.debug.internal.core.WatchExpression;
 import org.eclipse.jdi.internal.MirrorImpl;
 import org.eclipse.jdi.internal.StackFrameImpl;
+import org.eclipse.jdi.internal.VirtualMachineImpl;
 import org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget;
 import org.eclipse.jdt.internal.debug.core.model.JDILocalVariable;
 import org.eclipse.jdt.internal.debug.core.model.JDINullValue;
@@ -68,6 +72,11 @@
 
         List result = new ArrayList( 0 );
 
+        /*
+        WatchExpression ex = new WatchExpression("frame");
+        ex.setExpressionContext( this );
+        System.out.println("REALLY "+ex.getValue());
+        */
         Method method = getUnderlyingMethod(); // onBreak
         ReferenceType declaringType = method.declaringType(); // org.drools.base.mvel.MVELDebugHandler
 
@@ -80,6 +89,14 @@
                                                                       v2 );
             result.add( frameLocal );
 
+            
+            {
+                IVariable[] vararr = (IVariable[]) result.toArray( new IVariable[result.size()] );
+                if (vararr!=null) {
+                    return vararr;
+                }
+            }            
+            
             Value factoryVar = fetchField( frameLocal, "factory" );
             Value localVars = fetchField( factoryVar,
                                           "localVariables" );
@@ -89,7 +106,8 @@
 
             Value entrySet = runMethod( localVars,
                                         "entrySet" );
-            Value iter = runMethod( entrySet,
+            
+            /*            Value iter = runMethod( entrySet,
                                     "iterator" );
             
             while (internalHasNext(iter)) {
@@ -108,7 +126,7 @@
                 result.add( th );
             }
             
-            // v2.localVariables
+*/            // v2.localVariables
 
             //ObjectReference iteratorObj = ((JDIObjectValue)mapentries).getUnderlyingObject();
 
@@ -197,8 +215,23 @@
         } catch ( Throwable t ) {
             t.printStackTrace();
         }
+        
+        
         IVariable[] vararr = (IVariable[]) result.toArray( new IVariable[result.size()] );
+        
+        Arrays.sort( vararr,
+                              new Comparator() {
 
+                                  public int compare(Object var1,
+                                                     Object var2) {
+                                      try {
+                                        return ((IVariable) var1).getName().compareTo( ((IVariable) var2).getName() );
+                                    } catch ( DebugException e ) {
+                                        return 0;
+                                    }
+                                  }
+
+                              } );
         return vararr;
     }
 
@@ -221,6 +254,8 @@
         
         recreateFrames();
         
+        
+        
         ObjectReference refObj = (ObjectReference) val;
         ReferenceType t = refObj.referenceType();
         Method m2 = (Method) t.methodsByName( methodName ).iterator().next();
@@ -347,6 +382,7 @@
                                                   InvalidTypeException,
                                                   IncompatibleThreadStateException,
                                                   InvocationException {
+
         //frame arg
         Method method = getUnderlyingMethod(); // onBreak
         ReferenceType declaringType = method.declaringType(); // org.drools.base.mvel.MVELDebugHandler
@@ -381,7 +417,7 @@
         //m.verboseWriter()
         
         //ObjectReference o = (ObjectReference) fr.getValue( var );
-        
+        recreateFrames();
         IValue value = jdivar.getValue();
         if (value instanceof JDINullValue) {
             return null;
@@ -406,8 +442,8 @@
     }
     
     private void recreateFrames() throws DebugException {
-        DroolsThread thr = (DroolsThread) getThread();
-        thr.computeNewStackFrames();
+        //DroolsThread thr = (DroolsThread) getThread();
+        //thr.computeNewStackFrames();
     }
 
 }




More information about the jboss-svn-commits mailing list