Polish
This commit is contained in:
parent
bd72104b9b
commit
c50bbb6488
|
@ -203,15 +203,13 @@ public class QuartzEndpoint {
|
|||
throws SchedulerException {
|
||||
JobKey jobKey = JobKey.jobKey(jobName, groupName);
|
||||
JobDetail jobDetail = this.scheduler.getJobDetail(jobKey);
|
||||
if (jobDetail != null) {
|
||||
List<? extends Trigger> triggers = this.scheduler.getTriggersOfJob(jobKey);
|
||||
return new QuartzJobDetailsDescriptor(jobDetail.getKey().getGroup(), jobDetail.getKey().getName(),
|
||||
jobDetail.getDescription(), jobDetail.getJobClass().getName(), jobDetail.isDurable(),
|
||||
jobDetail.requestsRecovery(), sanitizeJobDataMap(jobDetail.getJobDataMap(), showUnsanitized),
|
||||
extractTriggersSummary(triggers));
|
||||
}
|
||||
if (jobDetail == null) {
|
||||
return null;
|
||||
}
|
||||
List<? extends Trigger> triggers = this.scheduler.getTriggersOfJob(jobKey);
|
||||
return new QuartzJobDetailsDescriptor(jobDetail, sanitizeJobDataMap(jobDetail.getJobDataMap(), showUnsanitized),
|
||||
extractTriggersSummary(triggers));
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggers (execute it now) a Quartz job by its group and job name.
|
||||
|
@ -232,8 +230,7 @@ public class QuartzEndpoint {
|
|||
return null;
|
||||
}
|
||||
this.scheduler.triggerJob(jobKey);
|
||||
return new QuartzJobTriggerDescriptor(jobDetail.getKey().getGroup(), jobDetail.getKey().getName(),
|
||||
jobDetail.getJobClass().getName(), Instant.now());
|
||||
return new QuartzJobTriggerDescriptor(jobDetail);
|
||||
}
|
||||
|
||||
private static List<Map<String, Object>> extractTriggersSummary(List<? extends Trigger> triggers) {
|
||||
|
@ -282,13 +279,13 @@ public class QuartzEndpoint {
|
|||
}
|
||||
|
||||
private Map<String, Object> sanitizeJobDataMap(JobDataMap dataMap, boolean showUnsanitized) {
|
||||
if (dataMap != null) {
|
||||
if (dataMap == null) {
|
||||
return null;
|
||||
}
|
||||
Map<String, Object> map = new LinkedHashMap<>(dataMap.getWrappedMap());
|
||||
map.replaceAll((key, value) -> getSanitizedValue(showUnsanitized, key, value));
|
||||
return map;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Object getSanitizedValue(boolean showUnsanitized, String key, Object value) {
|
||||
SanitizableData data = new SanitizableData(null, key, value);
|
||||
|
@ -375,7 +372,7 @@ public class QuartzEndpoint {
|
|||
|
||||
private final Map<String, QuartzJobSummaryDescriptor> jobs;
|
||||
|
||||
private QuartzJobGroupSummaryDescriptor(String group, Map<String, QuartzJobSummaryDescriptor> jobs) {
|
||||
QuartzJobGroupSummaryDescriptor(String group, Map<String, QuartzJobSummaryDescriptor> jobs) {
|
||||
this.group = group;
|
||||
this.jobs = jobs;
|
||||
}
|
||||
|
@ -397,7 +394,7 @@ public class QuartzEndpoint {
|
|||
|
||||
private final String className;
|
||||
|
||||
private QuartzJobSummaryDescriptor(JobDetail job) {
|
||||
QuartzJobSummaryDescriptor(JobDetail job) {
|
||||
this.className = job.getJobClass().getName();
|
||||
}
|
||||
|
||||
|
@ -424,11 +421,11 @@ public class QuartzEndpoint {
|
|||
|
||||
private final Instant triggerTime;
|
||||
|
||||
private QuartzJobTriggerDescriptor(String group, String name, String className, Instant triggerTime) {
|
||||
this.group = group;
|
||||
this.name = name;
|
||||
this.className = className;
|
||||
this.triggerTime = triggerTime;
|
||||
QuartzJobTriggerDescriptor(JobDetail jobDetail) {
|
||||
this.group = jobDetail.getKey().getGroup();
|
||||
this.name = jobDetail.getKey().getName();
|
||||
this.className = jobDetail.getJobClass().getName();
|
||||
this.triggerTime = Instant.now();
|
||||
}
|
||||
|
||||
public String getGroup() {
|
||||
|
@ -470,14 +467,13 @@ public class QuartzEndpoint {
|
|||
|
||||
private final List<Map<String, Object>> triggers;
|
||||
|
||||
QuartzJobDetailsDescriptor(String group, String name, String description, String className, boolean durable,
|
||||
boolean requestRecovery, Map<String, Object> data, List<Map<String, Object>> triggers) {
|
||||
this.group = group;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.className = className;
|
||||
this.durable = durable;
|
||||
this.requestRecovery = requestRecovery;
|
||||
QuartzJobDetailsDescriptor(JobDetail jobDetail, Map<String, Object> data, List<Map<String, Object>> triggers) {
|
||||
this.group = jobDetail.getKey().getGroup();
|
||||
this.name = jobDetail.getKey().getName();
|
||||
this.description = jobDetail.getDescription();
|
||||
this.className = jobDetail.getJobClass().getName();
|
||||
this.durable = jobDetail.isDurable();
|
||||
this.requestRecovery = jobDetail.requestsRecovery();
|
||||
this.data = data;
|
||||
this.triggers = triggers;
|
||||
}
|
||||
|
@ -527,7 +523,7 @@ public class QuartzEndpoint {
|
|||
|
||||
private final Triggers triggers;
|
||||
|
||||
private QuartzTriggerGroupSummaryDescriptor(String group, boolean paused,
|
||||
QuartzTriggerGroupSummaryDescriptor(String group, boolean paused,
|
||||
Map<TriggerType, Map<String, Object>> descriptionsByType) {
|
||||
this.group = group;
|
||||
this.paused = paused;
|
||||
|
@ -559,7 +555,7 @@ public class QuartzEndpoint {
|
|||
|
||||
private final Map<String, Object> custom;
|
||||
|
||||
private Triggers(Map<TriggerType, Map<String, Object>> descriptionsByType) {
|
||||
Triggers(Map<TriggerType, Map<String, Object>> descriptionsByType) {
|
||||
this.cron = descriptionsByType.getOrDefault(TriggerType.CRON, Collections.emptyMap());
|
||||
this.dailyTimeInterval = descriptionsByType.getOrDefault(TriggerType.DAILY_INTERVAL,
|
||||
Collections.emptyMap());
|
||||
|
@ -622,30 +618,23 @@ public class QuartzEndpoint {
|
|||
*/
|
||||
public abstract static class TriggerDescriptor {
|
||||
|
||||
private static final Map<Class<? extends Trigger>, Function<Trigger, TriggerDescriptor>> DESCRIBERS = new LinkedHashMap<>();
|
||||
private static final Map<Class<? extends Trigger>, Function<Trigger, TriggerDescriptor>> DESCRIBERS;
|
||||
|
||||
static {
|
||||
DESCRIBERS.put(CronTrigger.class, (trigger) -> new CronTriggerDescriptor((CronTrigger) trigger));
|
||||
DESCRIBERS.put(SimpleTrigger.class, (trigger) -> new SimpleTriggerDescriptor((SimpleTrigger) trigger));
|
||||
DESCRIBERS.put(DailyTimeIntervalTrigger.class,
|
||||
Map<Class<? extends Trigger>, Function<Trigger, TriggerDescriptor>> descriptors = new LinkedHashMap<>();
|
||||
descriptors.put(CronTrigger.class, (trigger) -> new CronTriggerDescriptor((CronTrigger) trigger));
|
||||
descriptors.put(SimpleTrigger.class, (trigger) -> new SimpleTriggerDescriptor((SimpleTrigger) trigger));
|
||||
descriptors.put(DailyTimeIntervalTrigger.class,
|
||||
(trigger) -> new DailyTimeIntervalTriggerDescriptor((DailyTimeIntervalTrigger) trigger));
|
||||
DESCRIBERS.put(CalendarIntervalTrigger.class,
|
||||
descriptors.put(CalendarIntervalTrigger.class,
|
||||
(trigger) -> new CalendarIntervalTriggerDescriptor((CalendarIntervalTrigger) trigger));
|
||||
DESCRIBERS = Map.copyOf(descriptors);
|
||||
}
|
||||
|
||||
private final Trigger trigger;
|
||||
|
||||
private final TriggerType type;
|
||||
|
||||
private static TriggerDescriptor of(Trigger trigger) {
|
||||
return DESCRIBERS.entrySet()
|
||||
.stream()
|
||||
.filter((entry) -> entry.getKey().isInstance(trigger))
|
||||
.map((entry) -> entry.getValue().apply(trigger))
|
||||
.findFirst()
|
||||
.orElse(new CustomTriggerDescriptor(trigger));
|
||||
}
|
||||
|
||||
protected TriggerDescriptor(Trigger trigger, TriggerType type) {
|
||||
this.trigger = trigger;
|
||||
this.type = type;
|
||||
|
@ -723,6 +712,15 @@ public class QuartzEndpoint {
|
|||
return this.type;
|
||||
}
|
||||
|
||||
static TriggerDescriptor of(Trigger trigger) {
|
||||
return DESCRIBERS.entrySet()
|
||||
.stream()
|
||||
.filter((entry) -> entry.getKey().isInstance(trigger))
|
||||
.map((entry) -> entry.getValue().apply(trigger))
|
||||
.findFirst()
|
||||
.orElse(new CustomTriggerDescriptor(trigger));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -83,14 +83,11 @@ public class QuartzEndpointWebExtension {
|
|||
@WriteOperation
|
||||
public WebEndpointResponse<Object> triggerQuartzJob(@Selector String jobs, @Selector String group,
|
||||
@Selector String name, String state) throws SchedulerException {
|
||||
if (!"jobs".equals(jobs)) {
|
||||
return new WebEndpointResponse<>(WebEndpointResponse.STATUS_BAD_REQUEST);
|
||||
}
|
||||
if (!"running".equals(state)) {
|
||||
return new WebEndpointResponse<>(WebEndpointResponse.STATUS_BAD_REQUEST);
|
||||
}
|
||||
if ("jobs".equals(jobs) && "running".equals(state)) {
|
||||
return handleNull(this.delegate.triggerQuartzJob(group, name));
|
||||
}
|
||||
return new WebEndpointResponse<>(WebEndpointResponse.STATUS_BAD_REQUEST);
|
||||
}
|
||||
|
||||
private <T> WebEndpointResponse<T> handle(String jobsOrTriggers, ResponseSupplier<T> jobAction,
|
||||
ResponseSupplier<T> triggerAction) throws SchedulerException {
|
||||
|
@ -104,10 +101,8 @@ public class QuartzEndpointWebExtension {
|
|||
}
|
||||
|
||||
private <T> WebEndpointResponse<T> handleNull(T value) {
|
||||
if (value != null) {
|
||||
return new WebEndpointResponse<>(value);
|
||||
}
|
||||
return new WebEndpointResponse<>(WebEndpointResponse.STATUS_NOT_FOUND);
|
||||
return (value != null) ? new WebEndpointResponse<>(value)
|
||||
: new WebEndpointResponse<>(WebEndpointResponse.STATUS_NOT_FOUND);
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
|
|
Loading…
Reference in New Issue