> While working on [JDK-8289765](https://bugs.openjdk.org/browse/JDK-8289765), 
> I ended up doing a lot of cleanup of nsk/share/jdi/EventHandler.java, so much 
> so that the changes distract from the actual bug fix, so I decided it would 
> be best to first push them with a separate CR. Changes include:
> 
> - The main change is merging waitForRequestedEvent() and 
> waitForRequestedEventSet(). These methods are quite big and almost identical. 
> I had to add some more code to them for 
> [JDK-8289765](https://bugs.openjdk.org/browse/JDK-8289765), and decided it 
> was best to merge them first rather than making this code cloning situation 
> even worse.
> - Remove EventFilter.filtered() call when dealing with an uncaught exception 
> event. These events are never filtered.
> - Add complain() method. We already have a display() method so you can just 
> call display() instead of log.display(), and it also adds the "EventHandler> 
> " prefix to the output, so I though it would be good to do the same for 
> log.complain() uses, especially since some of the uses also were adding the 
> same prefix.
> - Added a new EventListener that simply logs the event.
> 
> The remaining changes are just minor local edits whose purpose should be 
> obvious.
> 
> If you need a bit of background on this code, read on. EventHandler has  
> run() method that continually queries the event queue for more JDI events. 
> When they come in, the registered EventListeners all get various callbacks. 
> First eventSetReceived() is called for each. Then eventReceived() is called 
> for each listener for each Event in the EventSet.  If any eventReceived() 
> returns true, that means the event was handled an no more listeners should be 
> called. Finally, eventSetComplete() is called for each listener.
> 
> There are a number of default listeners registered that are always in place. 
> See createDefaultListeners(). They aren't really of concern with this PR. The 
> waitForRequestedEvent() and waitForRequestedEventSet() methods (now combined 
> into waitForRequestedEventSetCommon()) also register listeners, with the main 
> one being used to check for the specific event that has been requested. These 
> listeners are pre-pended to the default list. Listeners are always called in 
> reverse of the order added.
> 
> After setting up the listeners, waitForRequestedEventSetCommon() will block 
> until a matching event has arrived. This is detected by the setting of en.set 
> (and en.event). The listener will set them when the event matches, and this 
> is done async from the thread that is running the run() method (remember, the 
> run() method calls listener.eventSetRecieved()).

Chris Plummer has updated the pull request incrementally with one additional 
commit since the last revision:

  Some minor formatting edits. Get rid of unnecessary null initializations.

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/12568/files
  - new: https://git.openjdk.org/jdk/pull/12568/files/ae5a9db4..b4a671bd

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=12568&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=12568&range=00-01

  Stats: 9 lines in 1 file changed: 0 ins; 2 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/12568.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12568/head:pull/12568

PR: https://git.openjdk.org/jdk/pull/12568

Reply via email to