public static Trigger trigger(String type, String triggerId) { switch (type) { case "natural": return Trigger.natural(); case "adhoc": return Trigger.adhoc(triggerId); case "backfill": return Trigger.backfill(triggerId); case "unknown": return Trigger.unknown(triggerId); default: throw new IllegalArgumentException("Unknown trigger type: " + type); } } }
private Response<TriggerRequest> triggerAndWait(TriggerRequest triggerRequest, Workflow workflow, Instant instant) { final TriggerParameters parameters = triggerRequest.triggerParameters().orElse(TriggerParameters.zero()); final String triggerId = randomGenerator.generateUniqueId(AD_HOC_CLI_TRIGGER_PREFIX); final CompletionStage<Void> triggered = triggerListener.event( workflow, Trigger.adhoc(triggerId), instant, parameters); // TODO: return future instead of blocking try { triggered.toCompletableFuture().get(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(e); } catch (ExecutionException e) { return handleException(e); } // todo: change payload to a struct returning the triggerId as well so the user can refer to it return Response.forPayload(triggerRequest); }
@Override public Trigger toTrigger() { switch (type) { case "adhoc": return Trigger.adhoc(triggerId); case "backfill": return Trigger.backfill(triggerId); case "unknown": return Trigger.unknown(triggerId); default: return super.toTrigger(); } } }