From fdfb9b65d0ff421481f8ba2355b112e9a386a291 Mon Sep 17 00:00:00 2001 From: Holger Hagen <19706592+holgerhagen@users.noreply.github.com> Date: Wed, 18 Apr 2018 17:00:09 +0200 Subject: [PATCH] TSK-426: creation of classifications with empty id is now possible. --- .../impl/ClassificationServiceImpl.java | 2 +- .../rest/ClassificationControllerIntTest.java | 37 +++++++++++++++++++ .../ClassificationResourceAssembler.java | 8 +++- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java index 9ebb2c177..bc2c4774e 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java @@ -202,7 +202,7 @@ public class ClassificationServiceImpl implements ClassificationService { */ private void initDefaultClassificationValues(ClassificationImpl classification) throws InvalidArgumentException { Instant now = Instant.now(); - if (classification.getId() == null) { + if (classification.getId() == null || "".equals(classification.getId())) { classification.setId(IdGenerator.generateWithPrefix(ID_PREFIX_CLASSIFICATION)); } diff --git a/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java b/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java index 78c9aa7ad..1b23451b2 100644 --- a/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java +++ b/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java @@ -4,6 +4,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.Collections; import org.junit.Test; @@ -104,6 +109,38 @@ public class ClassificationControllerIntTest { assertNotNull(response.getBody().getLink(Link.REL_PREVIOUS)); } + @Test + public void testCreateClassification() throws IOException { + String newClassification = "{\"classificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLASS\",\"name\":\"new classification\",\"type\":\"TASK\"}"; + // {"classificationId": "","key": "aaaaa","parentId": "","category": "EXTERN","type": "TASK","domain": "" + URL url = new URL("http://127.0.0.1:" + port + "/v1/classifications"); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("POST"); + con.setRequestProperty("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x"); + con.setDoOutput(true); + con.setRequestProperty("Content-Type", "application/json"); + BufferedWriter out = new BufferedWriter(new OutputStreamWriter(con.getOutputStream())); + out.write(newClassification); + out.flush(); + out.close(); + assertEquals(201, con.getResponseCode()); + con.disconnect(); + + newClassification = "{\"classificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLASS_2\",\"name\":\"new classification\",\"type\":\"TASK\"}"; + url = new URL("http://127.0.0.1:" + port + "/v1/classifications"); + con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("POST"); + con.setRequestProperty("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x"); + con.setDoOutput(true); + con.setRequestProperty("Content-Type", "application/json"); + out = new BufferedWriter(new OutputStreamWriter(con.getOutputStream())); + out.write(newClassification); + out.flush(); + out.close(); + assertEquals(201, con.getResponseCode()); + con.disconnect(); + } + @Test public void testGetClassificationWithSpecialCharacter() { RestTemplate template = getRestTemplate(); diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/mapper/ClassificationResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/mapper/ClassificationResourceAssembler.java index 2ef1328ec..2d27b09f0 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/mapper/ClassificationResourceAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/mapper/ClassificationResourceAssembler.java @@ -48,8 +48,12 @@ public class ClassificationResourceAssembler { BeanUtils.copyProperties(classificationResource, classification); classification.setId(classificationResource.getClassificationId()); - classification.setCreated(Instant.parse(classificationResource.getCreated())); - classification.setModified(Instant.parse(classificationResource.getModified())); + if (classificationResource.getCreated() != null) { + classification.setCreated(Instant.parse(classificationResource.getCreated())); + } + if (classificationResource.getModified() != null) { + classification.setModified(Instant.parse(classificationResource.getModified())); + } return classification; }