From: kseitz Date: Sat, 28 Apr 2007 01:05:36 +0000 (+0000) Subject: * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated. X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=a3779673d67c060df013c918ed022e5b828501c3 * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated. * 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 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index eac885ae7e3..a66338cd4a4 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,12 @@ 2007-04-27 Keith Seitz + * 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 + * classpath/lib/gnu/classpath/jdwp/event/filters/ LocationOnlyFilter.class: Regenerated; * classpath/lib/gnu/classpath/jdwp/util/Location.class: diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index e9ad54b28b7..12c9b8b1d0e 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,5 +1,16 @@ 2007-04-27 Keith Seitz + * 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 + * gnu/classpath/jdwp/event/filters/LocationOnlyFilter.java (matches): Use Location.equals to determine equality. * gnu/classpath/jdwp/VMMethod.java (equals): diff --git a/libjava/classpath/gnu/classpath/jdwp/Jdwp.java b/libjava/classpath/gnu/classpath/jdwp/Jdwp.java index e63a9a353dd..ca92f2f0d55 100644 --- a/libjava/classpath/gnu/classpath/jdwp/Jdwp.java +++ b/libjava/classpath/gnu/classpath/jdwp/Jdwp.java @@ -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) { diff --git a/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java b/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java index 02ffa241395..aa3d5d6292c 100644 --- a/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java +++ b/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java @@ -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 EventManager 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 null 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; } /** diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class b/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class index e16ddb6b313..616beaa1fab 100644 Binary files a/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class and b/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class differ diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class b/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class index 4d311632060..df7926f3956 100644 Binary files a/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class and b/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class differ diff --git a/libjava/gnu/classpath/jdwp/event/EventManager.h b/libjava/gnu/classpath/jdwp/event/EventManager.h index 081371148ee..45b47622c8a 100644 --- a/libjava/gnu/classpath/jdwp/event/EventManager.h +++ b/libjava/gnu/classpath/jdwp/event/EventManager.h @@ -7,6 +7,8 @@ #pragma interface #include +#include + 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);