0

To disable all EventReqeusts inside JDI, currently I am using:

private void disableRequest(EventRequest request, List < EventRequest > disabled) {
    request.disable();
    disabled.add(request);
}
...
List<EventRequest> requests = new ArrayList<>();
EventRequestManager manager = threadRef.virtualMachine().eventRequestManager();

manager.breakpointRequests().forEach(er - > disableRequest(er, requests));
manager.exceptionRequests().forEach(er - > disableRequest(er, requests));

manager.classUnloadRequests().forEach(er - > disableRequest(er, requests));
manager.classPrepareRequests().forEach(er - > disableRequest(er, requests));

manager.methodEntryRequests().forEach(er - > disableRequest(er, requests));
manager.methodExitRequests().forEach(er - > disableRequest(er, requests));

manager.accessWatchpointRequests().forEach(er - > disableRequest(er, requests));
manager.modificationWatchpointRequests().forEach(er - > disableRequest(er, requests));

manager.threadStartRequests().forEach(er - > disableRequest(er, requests));
manager.threadDeathRequests().forEach(er - > disableRequest(er, requests));

manager.monitorContendedEnteredRequests().forEach(er - > disableRequest(er, requests));
manager.monitorContendedEnterRequests().forEach(er - > disableRequest(er, requests));
manager.monitorWaitedRequests().forEach(er - > disableRequest(er, requests));
manager.monitorWaitRequests().forEach(er - > disableRequest(er, requests));

manager.stepRequests().forEach(er - > disableRequest(er, requests));

This works, but is there a more straightforward way to do this? Also calling all these methods is rather slow...

Nfff3
  • 321
  • 8
  • 24
  • 1
    It doesn’t seem like there was an alternative. But this `disabled.add(request)` is obsolete; the disabled events are still in the lists of all events. Besides that, you have lists as starting point (you’re calling `forEach` on them), so you can use `addAll`. – Holger Aug 26 '20 at 12:27
  • yeah, you are right about `disabled.add(request);`, I just used that to have a list of all the requests so that I can enable them at once when I need to. But yeah, `addAll` would work as well. – Nfff3 Aug 26 '20 at 14:47

0 Answers0