in src/main/java/org/apache/sling/event/impl/jobs/console/InventoryPlugin.java [296:494]
private void printJson(final PrintWriter pw) {
pw.println("{");
Statistics s = this.jobManager.getStatistics();
pw.println(" \"statistics\" : {");
pw.printf(" \"startTime\" : %s,%n", s.getStartTime());
pw.printf(" \"startTimeText\" : \"%s\",%n", formatDate(s.getStartTime()));
pw.printf(" \"lastActivatedJobTime\" : %s,%n", s.getLastActivatedJobTime());
pw.printf(" \"lastActivatedJobTimeText\" : \"%s\",%n", formatDate(s.getLastActivatedJobTime()));
pw.printf(" \"lastFinishedJobTime\" : %s,%n", s.getLastFinishedJobTime());
pw.printf(" \"lastFinishedJobTimeText\" : \"%s\",%n", formatDate(s.getLastFinishedJobTime()));
pw.printf(" \"numberOfQueuedJobs\" : %s,%n", s.getNumberOfQueuedJobs());
pw.printf(" \"numberOfActiveJobs\" : %s,%n", s.getNumberOfActiveJobs());
pw.printf(" \"numberOfJobs\" : %s,%n", s.getNumberOfJobs());
pw.printf(" \"numberOfFinishedJobs\" : %s,%n", s.getNumberOfFinishedJobs());
pw.printf(" \"numberOfFailedJobs\" : %s,%n", s.getNumberOfFailedJobs());
pw.printf(" \"numberOfCancelledJobs\" : %s,%n", s.getNumberOfCancelledJobs());
pw.printf(" \"numberOfProcessedJobs\" : %s,%n", s.getNumberOfProcessedJobs());
pw.printf(" \"averageProcessingTime\" : %s,%n", s.getAverageProcessingTime());
pw.printf(" \"averageProcessingTimeText\" : \"%s\",%n", formatTime(s.getAverageProcessingTime()));
pw.printf(" \"averageWaitingTime\" : %s,%n", s.getAverageWaitingTime());
pw.printf(" \"averageWaitingTimeText\" : \"%s\"%n", formatTime(s.getAverageWaitingTime()));
pw.print(" }");
final TopologyCapabilities cap = this.configuration.getTopologyCapabilities();
if ( cap != null ) {
pw.println(",");
pw.println(" \"capabilities\" : [");
final Map<String, List<InstanceDescription>> instanceCaps = cap.getInstanceCapabilities();
final Iterator<Map.Entry<String, List<InstanceDescription>>> iter = instanceCaps.entrySet().iterator();
while ( iter.hasNext() ) {
final Map.Entry<String, List<InstanceDescription>> entry = iter.next();
final List<String> instances = new ArrayList<>();
for(final InstanceDescription id : entry.getValue()) {
if ( id.isLocal() ) {
instances.add("local");
} else {
instances.add(id.getSlingId());
}
}
pw.println(" {");
pw.printf(" \"topic\" : \"%s\",%n", entry.getKey());
pw.printf(" \"instances\" : %s%n", formatArrayAsJson(instances.toArray(new String[instances.size()])));
if ( iter.hasNext() ) {
pw.println(" },");
} else {
pw.println(" }");
}
}
pw.print(" ]");
}
boolean first = true;
final Collection<ScheduledJobInfo> infos = this.jobManager.getScheduledJobs();
for(final ScheduledJobInfo info : infos) {
pw.println(",");
if ( first ) {
pw.println(" \"scheduledJobs\" : [");
first = false;
}
pw.println(" {");
pw.printf(" \"jobTopic\" : \"%s\",%n", info.getJobTopic());
pw.println(" \"schedules\" : [");
boolean internalFirst = true;
for(final ScheduleInfo si : info.getSchedules() ) {
if ( !internalFirst ) {
pw.println(", ");
}
internalFirst = false;
pw.println(" {");
switch ( si.getType() ) {
case YEARLY :
pw.printf(" \"type\" : \"%s\",%n", "YEARLY");
pw.printf(" \"schedule\" : \"%s %s : %s:%s\"%n", si.getMonthOfYear(),
si.getDayOfMonth(), si.getHourOfDay(), si.getMinuteOfHour());
break;
case MONTHLY :
pw.printf(" \"type\" : \"%s\",%n", "MONTHLY");
pw.printf(" \"schedule\" : \"%s : %s:%s\"%n", si.getDayOfMonth(), si.getHourOfDay(),
si.getMinuteOfHour());
break;
case WEEKLY :
pw.printf(" \"type\" : \"%s\",%n", "WEEKLY");
pw.printf(" \"schedule\" : \"%s : %s:%s\"%n", si.getDayOfWeek(), si.getHourOfDay(),
si.getMinuteOfHour());
break;
case DAILY :
pw.printf(" \"type\" : \"%s\",%n", "DAILY");
pw.printf(" \"schedule\" : \"%s:%s\"%n", si.getHourOfDay(), si.getMinuteOfHour());
break;
case HOURLY :
pw.printf(" \"type\" : \"%s\",%n", "HOURLY");
pw.printf(" \"schedule\" : \"%s\"%n", si.getMinuteOfHour());
break;
case CRON :
pw.printf(" \"type\" : \"%s\",%n", "CRON");
pw.printf(" \"schedule\" : \"%s\"%n", si.getExpression());
break;
default :
pw.printf(" \"type\" : \"%s\",%n", "AT");
pw.printf(" \"schedule\" : \"%s\"%n", si.getAt());
}
pw.print(" }");
}
pw.println(" ]");
pw.println(" }");
}
if ( !first ) {
pw.print(" ]");
}
first = true;
for(final Queue q : this.jobManager.getQueues()) {
pw.println(",");
if ( first ) {
pw.println(" \"queues\" : [");
first = false;
}
pw.println(" {");
pw.printf(" \"name\" : \"%s\",%n", q.getName());
pw.printf(" \"suspended\" : %s,%n", q.isSuspended());
s = q.getStatistics();
pw.println(" \"statistics\" : {");
pw.printf(" \"startTime\" : %s,%n", s.getStartTime());
pw.printf(" \"startTimeText\" : \"%s\",%n", formatDate(s.getStartTime()));
pw.printf(" \"lastActivatedJobTime\" : %s,%n", s.getLastActivatedJobTime());
pw.printf(" \"lastActivatedJobTimeText\" : \"%s\",%n", formatDate(s.getLastActivatedJobTime()));
pw.printf(" \"lastFinishedJobTime\" : %s,%n", s.getLastFinishedJobTime());
pw.printf(" \"lastFinishedJobTimeText\" : \"%s\",%n", formatDate(s.getLastFinishedJobTime()));
pw.printf(" \"numberOfQueuedJobs\" : %s,%n", s.getNumberOfQueuedJobs());
pw.printf(" \"numberOfActiveJobs\" : %s,%n", s.getNumberOfActiveJobs());
pw.printf(" \"numberOfJobs\" : %s,%n", s.getNumberOfJobs());
pw.printf(" \"numberOfFinishedJobs\" : %s,%n", s.getNumberOfFinishedJobs());
pw.printf(" \"numberOfFailedJobs\" : %s,%n", s.getNumberOfFailedJobs());
pw.printf(" \"numberOfCancelledJobs\" : %s,%n", s.getNumberOfCancelledJobs());
pw.printf(" \"numberOfProcessedJobs\" : %s,%n", s.getNumberOfProcessedJobs());
pw.printf(" \"averageProcessingTime\" : %s,%n", s.getAverageProcessingTime());
pw.printf(" \"averageProcessingTimeText\" : \"%s\",%n", formatTime(s.getAverageProcessingTime()));
pw.printf(" \"averageWaitingTime\" : %s,%n", s.getAverageWaitingTime());
pw.printf(" \"averageWaitingTimeText\" : \"%s\"%n", formatTime(s.getAverageWaitingTime()));
pw.print(" },");
final QueueConfiguration c = q.getConfiguration();
pw.printf(" \"stateInfo\" : \"%s\",%n", q.getStateInfo());
pw.println(" \"configuration\" : {");
pw.printf(" \"type\" : \"%s\",%n", c.getType());
pw.printf(" \"topics\" : %s,%n", formatArrayAsJson(c.getTopics()));
pw.printf(" \"maxParallel\" : %s,%n", c.getMaxParallel());
pw.printf(" \"maxRetries\" : %s,%n", c.getMaxRetries());
pw.printf(" \"retryDelayInMs\" : %s,%n", c.getRetryDelayInMs());
pw.printf(" \"priority\" : \"%s\"%n", c.getThreadPriority());
pw.println(" }");
pw.print(" }");
}
if ( !first ) {
pw.print(" ]");
}
first = true;
for(final TopicStatistics ts : this.jobManager.getTopicStatistics()) {
pw.println(",");
if ( first ) {
pw.println(" \"topicStatistics\" : [");
first = false;
}
pw.println(" {");
pw.printf(" \"topic\" : \"%s\",%n", ts.getTopic());
pw.printf(" \"lastActivatedJobTime\" : %s,%n", ts.getLastActivatedJobTime());
pw.printf(" \"lastActivatedJobTimeText\" : \"%s\",%n", formatDate(ts.getLastActivatedJobTime()));
pw.printf(" \"lastFinishedJobTime\" : %s,%n", ts.getLastFinishedJobTime());
pw.printf(" \"lastFinishedJobTimeText\" : \"%s\",%n", formatDate(ts.getLastFinishedJobTime()));
pw.printf(" \"numberOfFinishedJobs\" : %s,%n", ts.getNumberOfFinishedJobs());
pw.printf(" \"numberOfFailedJobs\" : %s,%n", ts.getNumberOfFailedJobs());
pw.printf(" \"numberOfCancelledJobs\" : %s,%n", ts.getNumberOfCancelledJobs());
pw.printf(" \"numberOfProcessedJobs\" : %s,%n", ts.getNumberOfProcessedJobs());
pw.printf(" \"averageProcessingTime\" : %s,%n", ts.getAverageProcessingTime());
pw.printf(" \"averageProcessingTimeText\" : \"%s\",%n", formatTime(ts.getAverageProcessingTime()));
pw.printf(" \"averageWaitingTime\" : %s,%n", ts.getAverageWaitingTime());
pw.printf(" \"averageWaitingTimeText\" : \"%s\"%n", formatTime(ts.getAverageWaitingTime()));
pw.print(" }");
}
if ( !first ) {
pw.print(" ]");
}
pw.println(",");
pw.println(" \"configurations\" : [");
this.printQueueConfigurationJson(pw, this.configuration.getQueueConfigurationManager().getMainQueueConfiguration());
final InternalQueueConfiguration[] configs = this.configuration.getQueueConfigurationManager().getConfigurations();
for(final InternalQueueConfiguration c : configs ) {
pw.println(",");
this.printQueueConfigurationJson(pw, c);
}
pw.println();
pw.println(" ]");
pw.println("}");
}