[ https://issues.apache.org/jira/browse/FLINK-7638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16174721#comment-16174721 ]
ASF GitHub Bot commented on FLINK-7638: --------------------------------------- Github user tillrohrmann commented on a diff in the pull request: https://github.com/apache/flink/pull/4688#discussion_r140236062 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/messages/webmonitor/JobDetails.java --- @@ -145,8 +180,89 @@ public String toString() { ", endTime=" + endTime + ", status=" + status + ", lastUpdateTime=" + lastUpdateTime + - ", numVerticesPerExecutionState=" + Arrays.toString(numVerticesPerExecutionState) + + ", numVerticesPerExecutionState=" + Arrays.toString(tasksPerState) + ", numTasks=" + numTasks + '}'; } + + public static final class JobDetailsSerializer extends StdSerializer<JobDetails> { + private static final long serialVersionUID = 7915913423515194428L; + + public JobDetailsSerializer() { + super(JobDetails.class); + } + + @Override + public void serialize( + JobDetails jobDetails, + JsonGenerator jsonGenerator, + SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeStartObject(); + + jsonGenerator.writeStringField(FIELD_NAME_JOB_ID, jobDetails.getJobId().toString()); + jsonGenerator.writeStringField(FIELD_NAME_JOB_NAME, jobDetails.getJobName()); + jsonGenerator.writeStringField(FIELD_NAME_STATUS, jobDetails.getStatus().name()); + + jsonGenerator.writeNumberField(FIELD_NAME_START_TIME, jobDetails.getStartTime()); + jsonGenerator.writeNumberField(FIELD_NAME_END_TIME, jobDetails.getEndTime()); + jsonGenerator.writeNumberField(FIELD_NAME_DURATION, jobDetails.getDuration()); + jsonGenerator.writeNumberField(FIELD_NAME_LAST_MODIFICATION, jobDetails.getLastUpdateTime()); + + jsonGenerator.writeObjectFieldStart("tasks"); + jsonGenerator.writeNumberField(FIELD_NAME_TOTAL_NUMBER_TASKS, jobDetails.getNumTasks()); + + final int[] perState = jobDetails.getTasksPerState(); + + for (ExecutionState executionState : ExecutionState.values()) { + jsonGenerator.writeNumberField(executionState.name().toLowerCase(), perState[executionState.ordinal()]); + } --- End diff -- I think it's actually alright to have a custom serialization/deserialization logic defined if needed. I think this should be more efficient than the generic serialization because you don't have to use reflection magic. Moreover, it's encapsulated in the `JobDetails class. Thus, if need is there, then this could also be changed as you've proposed. > Port CurrentJobsOverviewHandler to new REST endpoint > ---------------------------------------------------- > > Key: FLINK-7638 > URL: https://issues.apache.org/jira/browse/FLINK-7638 > Project: Flink > Issue Type: Sub-task > Components: REST, Webfrontend > Affects Versions: 1.4.0 > Reporter: Till Rohrmann > Assignee: Till Rohrmann > Priority: Minor > Labels: flip-6 > > Port the existing {{CurrentJobsOverviewHandler}} to the new REST endpoint. -- This message was sent by Atlassian JIRA (v6.4.14#64029)