OSDN Git Service

* classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated.
authorkseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Apr 2007 01:05:36 +0000 (01:05 +0000)
committerkseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Apr 2007 01:05:36 +0000 (01:05 +0000)
        * classpath/lib/gnu/classpath/jdwp/event/EventManager.class:
        Regenerated.
        * gnu/classpath/jdwp/event/EventManager.h: Regenerated.

        * gnu/classpath/jdwp/event/EventManager.java
        (getEventRequest): Rename to...
        (getEventRequests): ...this.
        Change return type to array of requests.
        Construct a list of all matching events and return
        them all.
        * gnu/classpath/jdwp/Jdwp.java (notify): Use getEventRequests
        and send event notifications for all matching requests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124250 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/classpath/ChangeLog
libjava/classpath/gnu/classpath/jdwp/Jdwp.java
libjava/classpath/gnu/classpath/jdwp/event/EventManager.java
libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class
libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class
libjava/gnu/classpath/jdwp/event/EventManager.h

index eac885a..a66338c 100644 (file)
@@ -1,5 +1,12 @@
 2007-04-27  Keith Seitz  <keiths@redhat.com>
 
+       * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated.
+       * classpath/lib/gnu/classpath/jdwp/event/EventManager.class:
+       Regenerated.
+       * gnu/classpath/jdwp/event/EventManager.h: Regenerated.
+
+2007-04-27  Keith Seitz  <keiths@redhat.com>
+
        * classpath/lib/gnu/classpath/jdwp/event/filters/
        LocationOnlyFilter.class: Regenerated;
        * classpath/lib/gnu/classpath/jdwp/util/Location.class:
index e9ad54b..12c9b8b 100644 (file)
@@ -1,5 +1,16 @@
 2007-04-27  Keith Seitz  <keiths@redhat.com>
 
+       * gnu/classpath/jdwp/event/EventManager.java
+       (getEventRequest): Rename to...
+       (getEventRequests): ...this.
+       Change return type to array of requests.
+       Construct a list of all matching events and return
+       them all.
+       * gnu/classpath/jdwp/Jdwp.java (notify): Use getEventRequests
+       and send event notifications for all matching requests.
+
+2007-04-27  Keith Seitz  <keiths@redhat.com>
+
        * gnu/classpath/jdwp/event/filters/LocationOnlyFilter.java
        (matches): Use Location.equals to determine equality.
        * gnu/classpath/jdwp/VMMethod.java (equals):
index e63a9a3..ca92f2f 100644 (file)
@@ -1,5 +1,5 @@
 /* Jdwp.java -- Virtual machine to JDWP back-end programming interface
-   Copyright (C) 2005, 2006 Free Software Foundation
+   Copyright (C) 2005, 2006, 2007 Free Software Foundation
 
 This file is part of GNU Classpath.
 
@@ -207,23 +207,22 @@ public class Jdwp
    * The event is filtered through the event manager before being
    * sent.
    *
-   * FIXME: Probably need logic to send multiple events
+   * FIXME: Probably need logic to send multiple (different) events
    * @param event the event to report
    */
-  public static void notify (Event event)
+  public static void notify(Event event)
   {
-    Jdwp jdwp = getDefault ();
+    Jdwp jdwp = getDefault();
     if (jdwp != null)
       {
-       EventManager em = EventManager.getDefault ();
-       EventRequest request = em.getEventRequest (event);
-       if (request != null)
+       EventManager em = EventManager.getDefault();
+       EventRequest[] requests = em.getEventRequests(event);
+       for (int i = 0; i < requests.length; ++i)
          {
            try
              {
-               System.out.println ("Jdwp.notify: sending event " + event);
-               sendEvent (request, event);
-               jdwp._enforceSuspendPolicy (request.getSuspendPolicy ());
+               sendEvent(requests[i], event);
+               jdwp._enforceSuspendPolicy(requests[i].getSuspendPolicy());
              }
            catch (Exception e)
              {
index 02ffa24..aa3d5d6 100644 (file)
@@ -44,6 +44,7 @@ import gnu.classpath.jdwp.VMVirtualMachine;
 import gnu.classpath.jdwp.exception.InvalidEventTypeException;
 import gnu.classpath.jdwp.exception.JdwpException;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -146,39 +147,39 @@ public class EventManager
   }
 
   /**
-   * Returns a request for the given event. This method will only
+   * Returns all requests for the given event. This method will only
    * be used if the <code>EventManager</code> is handling event filtering.
    *
    * @param  event  the event
-   * @return request that was interested in this event
+   * @return requests that are interested in this event
    *         or <code>null</code> if none (and event should not be sent)
    * @throws IllegalArgumentException for invalid event kind
    */
-  public EventRequest getEventRequest (Event event)
+  public EventRequest[] getEventRequests(Event event)
   {
-    EventRequest interestedRequest = null;
+    ArrayList interestedEvents = new ArrayList();
     Hashtable requests;
-    Byte kind = new Byte (event.getEventKind ());
-    requests = (Hashtable) _requests.get (kind);
+    Byte kind = new Byte(event.getEventKind());
+    requests = (Hashtable) _requests.get(kind);
     if (requests == null)
       {
        // Did not get a valid event type
-       throw new IllegalArgumentException ("invalid event kind: " + kind);
+       throw new IllegalArgumentException("invalid event kind: " + kind);
       }
-    boolean match = false;
 
     // Loop through the requests. Must look at ALL requests in order
     // to evaluate all filters (think count filter).
-    // TODO: What if multiple matches? Spec isn't so clear on this.
-    Iterator rIter = requests.values().iterator ();
-    while (rIter.hasNext ())
+    Iterator rIter = requests.values().iterator();
+    while (rIter.hasNext())
       {
-       EventRequest request = (EventRequest) rIter.next ();
-       if (request.matches (event))
-         interestedRequest = request;
+       EventRequest request = (EventRequest) rIter.next();
+       if (request.matches(event))
+         interestedEvents.add(request);
       }
 
-    return interestedRequest;
+    EventRequest[] r = new EventRequest[interestedEvents.size()];
+    interestedEvents.toArray(r);
+    return r;
   }
 
   /**
index e16ddb6..616beaa 100644 (file)
Binary files a/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class and b/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class differ
index 4d31163..df7926f 100644 (file)
Binary files a/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class and b/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class differ
index 0813711..45b4762 100644 (file)
@@ -7,6 +7,8 @@
 #pragma interface
 
 #include <java/lang/Object.h>
+#include <gcj/array.h>
+
 extern "Java"
 {
   namespace gnu
@@ -34,7 +36,7 @@ public:
 private:
   EventManager();
 public:
-  virtual ::gnu::classpath::jdwp::event::EventRequest * getEventRequest(::gnu::classpath::jdwp::event::Event *);
+  virtual JArray< ::gnu::classpath::jdwp::event::EventRequest * > * getEventRequests(::gnu::classpath::jdwp::event::Event *);
   virtual void requestEvent(::gnu::classpath::jdwp::event::EventRequest *);
   virtual void deleteRequest(jbyte, jint);
   virtual void clearRequests(jbyte);