summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog7
-rw-r--r--libjava/classpath/ChangeLog11
-rw-r--r--libjava/classpath/gnu/classpath/jdwp/Jdwp.java19
-rw-r--r--libjava/classpath/gnu/classpath/jdwp/event/EventManager.java31
-rw-r--r--libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.classbin5748 -> 5777 bytes
-rw-r--r--libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.classbin4291 -> 4558 bytes
-rw-r--r--libjava/gnu/classpath/jdwp/event/EventManager.h4
7 files changed, 46 insertions, 26 deletions
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 <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:
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 <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):
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 <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;
}
/**
diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class b/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class
index e16ddb6b313..616beaa1fab 100644
--- a/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class
+++ b/libjava/classpath/lib/gnu/classpath/jdwp/Jdwp.class
Binary files 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
--- a/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class
+++ b/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class
Binary files 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 <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);