@POST @Consumes(APPLICATION_JSON) @Produces(APPLICATION_JSON) public Response createTagDefinition(final TagDefinitionJson json, @HeaderParam(HDR_CREATED_BY) final String createdBy, @HeaderParam(HDR_REASON) final String reason, @HeaderParam(HDR_COMMENT) final String comment, @javax.ws.rs.core.Context final HttpServletRequest request, @javax.ws.rs.core.Context final UriInfo uriInfo) throws TagDefinitionApiException { // Checked as the database layer as well, but bail early and return 400 instead of 500 Preconditions.checkNotNull(json.getName(), String.format("TagDefinition name needs to be set")); Preconditions.checkNotNull(json.getDescription(), String.format("TagDefinition description needs to be set")); final TagDefinition createdTagDef = tagUserApi.createTagDefinition(json.getName(), json.getDescription(), context.createContext(createdBy, reason, comment, request)); return uriBuilder.buildResponse(uriInfo, TagDefinitionResource.class, "getTagDefinition", createdTagDef.getId()); }
@Test(groups = "fast") public void testJson() throws Exception { final String id = UUID.randomUUID().toString(); final Boolean isControlTag = true; final String name = UUID.randomUUID().toString(); final String description = UUID.randomUUID().toString(); final ImmutableList<String> applicableObjectTypes = ImmutableList.<String>of(UUID.randomUUID().toString()); final TagDefinitionJson tagDefinitionJson = new TagDefinitionJson(id, isControlTag, name, description, applicableObjectTypes, null); Assert.assertEquals(tagDefinitionJson.getId(), id); Assert.assertEquals(tagDefinitionJson.isControlTag(), isControlTag); Assert.assertEquals(tagDefinitionJson.getName(), name); Assert.assertEquals(tagDefinitionJson.getDescription(), description); Assert.assertEquals(tagDefinitionJson.getApplicableObjectTypes(), applicableObjectTypes); final String asJson = mapper.writeValueAsString(tagDefinitionJson); final TagDefinitionJson fromJson = mapper.readValue(asJson, TagDefinitionJson.class); Assert.assertEquals(fromJson, tagDefinitionJson); } }