### Question:
JobId extends Descriptor implements Comparable<JobId> { public static Builder newBuilder() { return new Builder(); } JobId(final String name,
               final String version,
               final String hash);  JobId(final String name,
               final String version); @JsonCreator private  JobId(final String id); private  JobId(final String name, boolean ignored); static JobId fromString(final String id); static JobId parse(final String id); @Override @JsonValue String toString(); String toShortString(); String getName(); String getVersion(); String getHash(); @Override boolean equals(final Object obj); @Override int hashCode(); @Override int compareTo(final JobId jobId); static Builder newBuilder(); boolean isFullyQualified();  }### Answer:
@Test public void testJsonParsing() throws IOException { final String json = "\"foo:17:deadbeef\""; final JobId jobId = Json.read(json, JobId.class); final JobId expectedJobId = JobId.newBuilder() .setName("foo") .setVersion("17") .setHash("deadbeef") .build(); assertEquals(expectedJobId, jobId); }
@Test public void testJsonSerialization() throws IOException { final String expectedJson = "\"foo:17:deadbeef\""; final JobId jobId = JobId.newBuilder() .setName("foo") .setVersion("17") .setHash("deadbeef") .build(); final String json = Json.asStringUnchecked(jobId); assertEquals(expectedJson, json); }