/** * Executes the passed {@link ScheduleEntry} and awaits its termination. * * @return true if schedule entry has executed */ static boolean executeScheduleEntry(@NotNull ScheduleEntry scheduleEntry) { try { final ScheduleEntryControl scheduleEntryControl = scheduleEntry.execute(); boolean isRunning = scheduleEntryControl.isRunning(); if (!isRunning) { log.info("Waiting for schedule entry to start..."); do { isRunning = scheduleEntryControl.isRunning(); } while (!isRunning); } return awaitTermination(scheduleEntryControl); } catch (ScheduleEntryRunningException e) { log.error(e.getMessage()); return false; } } /** * Awaits termination of the running {@link ScheduleEntry}. * * @param scheduleEntryControl the {@link ScheduleEntryControl} of the schedule entry * * @return true if schedule entry has terminated */ private static boolean awaitTermination(@NotNull ScheduleEntryControl scheduleEntryControl) { log.info("Schedule Entry is running: script awaits termination of schedule entry..."); boolean isRunning; do { isRunning = scheduleEntryControl.isRunning(); } while (isRunning); log.info("Schedule Entry execution done!"); return true; }