From 9898e8391f88fc5b583fc27a4d2fa3bdfd13f396 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Sat, 28 Apr 2007 01:05:36 +0000 Subject: [PATCH] Jdwp.class: Regenerated. * 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. From-SVN: r124250 --- libjava/ChangeLog | 7 ++++ libjava/classpath/ChangeLog | 11 +++++++ .../classpath/gnu/classpath/jdwp/Jdwp.java | 19 +++++------ .../classpath/jdwp/event/EventManager.java | 31 +++++++++--------- .../lib/gnu/classpath/jdwp/Jdwp.class | Bin 5748 -> 5777 bytes .../classpath/jdwp/event/EventManager.class | Bin 4291 -> 4558 bytes .../gnu/classpath/jdwp/event/EventManager.h | 4 ++- 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,3 +1,10 @@ +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/ diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index e9ad54b28b7..12c9b8b1d0e 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,14 @@ +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 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 e16ddb6b313ba5c37d62f0dcc39622e38399405d..616beaa1fabd1db583446ed3b2f720ecea3ca6a8 100644 GIT binary patch delta 1229 zcmYjRS#VQj6#h=`ZEte(*J9e+q}n!VC77*?6)I4n3RbDpbX6RN@u35EI?`W%iF2;Qctpu&la`nVDydv+{6M6Q;bkl+VyLHyb z2xJnB=8Nna*RC-8lCj=+y@q!#DbdtA{YA%03~g}ERy2GdS39rC{YcT+X z06B12hsja5XR`@!Zz%B7K{=}+5IxI*=U~SK@-fMTCg3Amwy2N6fO5Qx_gGq*Ri1~5 z(rkGf1M2FQ*Q67W(!{4@grDnOWuvbBmh z4v3&O+o+`-<#F&*a7-2#2I*_LxG>P-gGLp&oUVe0e9Y6I%@rJFv75>ze1kIfc-eQ5 zxmvjGp)q_L+KI@r=6xyXmX^i|xx4U6&(xBBMzqn*GHSS$-|)NaHoTrQyRaba`Xi0M zqRPS)u8x$}y8dBHZZzC;C+=9UP-%qE;_$_pRq$3oQLfkm7q!Ao?I@=Xo?9p8vV9{h im8T7NIsYWMUl(e~MhY`7L}m5>6rPEjR8pkBsP#W%k|du1 delta 1270 zcmYjPYfzMB6n@TrAN%dM`w_SoV3CDggoNE?Ng@Uz99^WO0hd5wn5LPS+?Z{2MOZX{ zH2&##4fD?QBfBhGZDu8iEL#+m6y5J-T2^9qw>w?biq5wv`RBcy_nh-w&O1~w?;mlP z99g~LSkumMG}a#8F&G|*5t_?d#GI*+>cyPm7FiaPTg6^Hpx}N&_U%18dn&i~M0+bc zb`QkD+cZ3ghr~A3O~c}DwIHycu>6KCyZQpr?Xk#hyX)Ko;pmn~wAUThG2CXvakIWW zsv&{L#7VW@6vyKl4&n(>WG=bpDU2vMM6jiSBHJt5`XkX;N31{G!&svT5tKeXv^8o5 zVNAmjjEg%>HyJ1Jw1SivQ9NS7q)N|VQdm@%@i`4sm=*!GNHXCCaZoLm6wHVn=6=y- zsS?XAh4iMVv*asd3f>`jS-M^9x8xh&)9^k%5Hpr?^%#yT_=vEAA8o>Wo6oG3BgY{l13+gA^)0?xw52fA>h~sb@5YK*1P|lBNyNLY`zG)(2Omk| zKoU<@cvCp+t4Ja_foBsasFN?{J#d?P!IO>oqiE7B9m9D;n_%UWLSUxp)n)bC#;ll;1X|YY1-$ zm#viE5{ouz z_`67P=Z&P&FL9 zyZBy8HK?Fk1gH+{sU91s5iN8b+UWYr^xb%oV}Skm1-~+H15Yr-dl4%bVQ2MU7W7VH zZTAFz8%KlBI=?50KU$?V39R(Hs;uYvRwp~ Pz`w%7ZDcZtU{2^inhq&W diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class b/libjava/classpath/lib/gnu/classpath/jdwp/event/EventManager.class index 4d311632060b0bd5e3d1fe0f621ce5e646846ef7..df7926f3956c773c6894911a177c2178b8c053e0 100644 GIT binary patch delta 2064 zcma)+dr(wm7{;G(udp0}0a;lCcnErugL3lt}k=@{1(^|ZNcLxG~)?bq#r-72*m=*(4n*3 zo*DstMrN@Ev3OF!3_K;b>nDk)WuJb6m?>}Q6GWN(S8od`MTLUVm@N|xaeSGpU>@en zLPI`Z7AjbTO1agLI;sQ}>QPG+RAH&?F{GQG!3r~$%Nqup-iej+A47U_4OW@q5{SAh zxzz9SI{gh^1+`c$i;d$519hy)lOf9t3|V*NkKE#2^f6t4NS{=OVuOSE7*YNxYXaEIVO;iQT2dx zqaQFR&lq#lBi$a#CKXqW#)xoY2KJA{AV-_#iwT3UEGFS)o*{M?t7S$@wQH^4-Qe+A zkfnm!EihGf>c+|rQ+!w(5-n)QD`vbbub48ddofvHl-E^Dx-PGl)r@`ewkbCDRRyo9 zRT@dRw8jF711hl&`KURCkls>>9g@q;DXHz~RB%K+DWb`9&si$FV+!788yqngCbr|0 zg40M62&=AlIS2AlXDrSt=-L}{-8d5ll*n&Gib5B`gi1uhaXu~dmIy54L^(pSoDxHf;d!wQTSOaUJ9dcu*eN;~5296cVwX71coJ=*i@45Vj|lSl1GI}v zv^|11Sz49UKrW0h^QE;Pc1JG?%KH)T$PVJMUW~OHvU*^(8G@L81+n~AP5LaIVXq(y;yuXHwec?EEBLBk0Z%uyohRnE6B2&Y$l%QJ^)LO%@o9%N_DPL zpyST>ft(=xm((@dR7<7J)I~Kqg!9*~{T@aL8zBZqk%nW)#BowNMQ*1t2WPPqU8K@Y z?@#jr^&o%?*p8r9;5_bRWtc+j>Zg^=HbHQ73pR754ru{Gex3t*Ch&9k1+66t2zDEd zS;}5{k;j?1*h0`d`6T!cIGI~pd7y!Bk06XsoqRSh77g0Bi}qEh?$MM%^U8CsBBCE{ zs=J)tb2+;YF9mY?A=Q!ny?C7=xw4z543wX!f%zN?zCb*#AqiixIlo38uA>m&XeDM1 zWF0QCNYg90K3%Iz$K6x3y7bg~5O3V4T!x0*0wd_g-$OS(h&Kn}sxlL((Qe2cY=|to z(PsPv5jJBV4r_x)M~F}7y#juO6+a;kztFPZP=Mc2fGjiog+Cd2N*YMQ2BMkmu{qcQxkG*#0uDx+u zSKNV>Y2$>Re>Emd6=v8)h+GjdCT2j9m0hPch>khCaZc`zNPH;2a)%7l_-Ea1>L`_% zh+$eQ)7qFeVFbzIVUoq9HegBduq8Q~6tjx*JbL8B$i$|HshxE@?iY|j0htt#Ljif3 ZfMi|*Fy+u~nKmfEij-joE@;ge{11{Y(6ayl delta 1822 zcma)+du)?c7{;H|_G`EDu`6urx-noIj9r{8PLggSY;2>jO+Xk_kWsdeQmEb7x-l-Z z+!O>9-4PW~<`{x8O1NkTOoc=viKzGo68|tJMvcZxyb=E~0iW+%H^79%rs;F;@ALlN z)AL#O2NM!LzH$D208??y29rRp6e9Oj>FcKCc%K%k>ePav1=_j}tvw{*mVcNg_K2*6 z=t!9zWq81ba_Kc^Pn?bi1=Qh9bN#_)0dwAz3Omv;Q$+yuCSD`vp~heSSb4~IiqJ`u71*D6-(feS1psQOYx`; z%X$=tc{v(ohB9fq7fm*-6i8a*?erFRg#3YGcSvjVhFaQGG((dsm5ElLiq-JT-O9aV zM!}1MA(8@34~8s-Atps(1?C_b%C zKW&GKC-9_zLV)fea&9}eVwcY5DFI8KdrAY(Yt{lAmMt{aC`yo@Y?QB48OJ7kw>rs1%PUio#* zHN_1Js^z)ZnX!vtMFSGBmoKC$MkCm8AEkF~d5&Cp$1vJ!S6&6uF z@bPywq5IGZKQ?0xwo`XvE!_lgh}w(C@Fs#dLmfa1KIF>F)GJtruh52XsXw3{*Ac=$ zVK#1}L#XH!$<$P=7dhw>1=M0}5ark?DycQtBo<<`SW0a~w+OIY?bP)Miyhb^_E7h+ z1pBd59Hbt?F40Hy$Ej~%w>XJC;xzV(2;1+H^n2(*JpVcJx|$OP6xi4ain>8KJp~cC z29W8pzqebFUk3}TjN5Y?Wf*#nrPPu4{+e*lXv6h+W*4vz@9l;dzZ zlyg`ia1r?~tHa6@R~-Nwb^7=kfrB@{DLl!DCd2_@lt5*tm)$$uDlKY`r-v-=y2XJQud!xMd$QcalvJ^#YlSO!y0*_2VWfW{VGVvl_ zGQcJgXDh)993TLl=HIu{(Fxu)9p_mbER5ilTZYpO4>uU;Cenq8?|_2)g%vJgGm1Z+ zMFrpR;o_G?J*FTxidW!OUML|CBxL+Aq(#F_jiTp|Tu>x2IfyYx5o2j3jaHn7g?xRS z55%yAiV;i|BbW*eGd8`%N6;_J6312DcBAgfgDe{UYhW@B +#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); -- 2.30.2