diff --git a/rest/taskana-rest-spring-example/pom.xml b/rest/taskana-rest-spring-example/pom.xml
index 820d1f875..5b9b850bf 100644
--- a/rest/taskana-rest-spring-example/pom.xml
+++ b/rest/taskana-rest-spring-example/pom.xml
@@ -18,15 +18,21 @@
2.0.2.RELEASE
-
+
+
+
+
+ novatec public
+ novatec-repository
+ https://repository.novatec-gmbh.de/content/repositories/novatec/
+
+
+
@@ -84,14 +90,12 @@
11.1.1.1
-
org.postgresql
postgresql
9.4.1212
- -->
-
org.springframework.boot
spring-boot-starter-thymeleaf
@@ -159,15 +163,4 @@
-
-
-
-
- novatec public
- novatec-repository
- https://repository.novatec-gmbh.de/content/repositories/novatec/
-
-
diff --git a/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/ExampleRestApplication.java b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/ExampleRestApplication.java
index 4e49026b9..e9491c153 100644
--- a/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/ExampleRestApplication.java
+++ b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/ExampleRestApplication.java
@@ -9,13 +9,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
-import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.PlatformTransactionManager;
@@ -53,20 +50,6 @@ public class ExampleRestApplication {
SpringApplication.run(ExampleRestApplication.class, args);
}
- @Bean
- @Primary
- @ConfigurationProperties(prefix = "datasource")
- public DataSourceProperties dataSourceProperties() {
- DataSourceProperties props = new DataSourceProperties();
- props.setUrl("jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;INIT=CREATE SCHEMA IF NOT EXISTS " + schemaName);
- return props;
- }
-
- @Bean
- public DataSource dataSource(DataSourceProperties properties) {
- return properties.initializeDataSourceBuilder().build();
- }
-
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
diff --git a/rest/taskana-rest-spring-example/src/main/resources/application.properties b/rest/taskana-rest-spring-example/src/main/resources/application.properties
index 87ae822ae..24eced016 100644
--- a/rest/taskana-rest-spring-example/src/main/resources/application.properties
+++ b/rest/taskana-rest-spring-example/src/main/resources/application.properties
@@ -2,23 +2,25 @@ logging.level.pro.taskana=INFO
### logging.level.org.springframework=DEBUG
######## Taskana DB #######
######## h2 configuration ########
-datasource.url=jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0
-datasource.driverClassName=org.h2.Driver
-datasource.username=sa
-datasource.password=sa
+spring.datasource.url=jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0
+spring.datasource.driverClassName=org.h2.Driver
+spring.datasource.username=sa
+spring.datasource.password=sa
taskana.schemaName=TASKANA
######## h2 console configuration ########
-######## spring.h2.console.enabled=true ########
-######## spring.h2.console.path=/h2-console ########
+########spring.h2.console.enabled=true
+########spring.h2.console.path=/h2-console
######## Postgres configuration ########
-######## datasource.url=jdbc:postgresql://localhost/taskana ########
-######## datasource.driverClassName=org.postgresql.Driver ########
-######## datasource.username=postgres ########
-######## datasource.password=1234 ########
-
+########spring.datasource.url=jdbc:postgresql://localhost/taskana
+########spring.datasource.driverClassName=org.postgresql.Driver
+########spring.datasource.username=postgres
+########spring.datasource.password=1234
+########spring.jpa.generate-ddl=true
+########spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
####### property that control rest api security deploy use true for no security.
devMode=false
+
####### property that control if the database is cleaned and sample data is generated
generateSampleData=true
diff --git a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/AbstractPagingControllerRestDocumentation.java b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/AbstractPagingControllerRestDocumentation.java
index c18010893..da41e56b8 100644
--- a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/AbstractPagingControllerRestDocumentation.java
+++ b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/AbstractPagingControllerRestDocumentation.java
@@ -70,7 +70,6 @@ public class AbstractPagingControllerRestDocumentation {
pagingFieldDescriptionsMap.put("page.totalElements", "Total number of items");
pagingFieldDescriptionsMap.put("page.totalPages", "Number of pages");
pagingFieldDescriptionsMap.put("page.number", "Current page number");
- pagingFieldDescriptionsMap.put("_links.allClassifications.href", "Link to the main Summary-Resourc");
pagingFieldDescriptionsMap.put("_links.first.href", "Link to first page");
pagingFieldDescriptionsMap.put("_links.last.href", "Link to last page");
pagingFieldDescriptionsMap.put("_links.prev.href", "Link to previous page");
@@ -87,7 +86,6 @@ public class AbstractPagingControllerRestDocumentation {
fieldWithPath("page.totalElements").description(pagingFieldDescriptionsMap.get("page.totalElements")),
fieldWithPath("page.totalPages").description(pagingFieldDescriptionsMap.get("page.totalPages")),
fieldWithPath("page.number").description(pagingFieldDescriptionsMap.get("page.number")),
- fieldWithPath("_links.allClassifications.href").description(pagingFieldDescriptionsMap.get("_links.allClassifications.href")),
fieldWithPath("_links.first.href").description(pagingFieldDescriptionsMap.get("_links.first.href")),
fieldWithPath("_links.last.href").description(pagingFieldDescriptionsMap.get("_links.last.href")),
fieldWithPath("_links.prev.href").description(pagingFieldDescriptionsMap.get("_links.prev.href")),
diff --git a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/WorkbasketControllerRestDocumentation.java b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/WorkbasketControllerRestDocumentation.java
index 84ce2b7fa..f7e2e9c93 100644
--- a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/WorkbasketControllerRestDocumentation.java
+++ b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/doc/api/WorkbasketControllerRestDocumentation.java
@@ -247,23 +247,21 @@ public class WorkbasketControllerRestDocumentation {
accessItemFieldDescriptionsMap.get("_embedded.accessItems.permCustom11")),
fieldWithPath("_embedded.accessItems[].permCustom12").description(
accessItemFieldDescriptionsMap.get("_embedded.accessItems.permCustom12")),
- fieldWithPath("_embedded.accessItems[]._links.workbasket.href").description(
- accessItemFieldDescriptionsMap.get("_embedded.accessItems._links.workbasket.href")),
fieldWithPath("_links.self.href").ignored(),
fieldWithPath("_links.workbasket.href").ignored()
};
allWorkbasketAccessItemsFieldDescriptors = new FieldDescriptor[] {
subsectionWithPath("_embedded.accessItems").description("An array of <>"),
- fieldWithPath("_links.workbasket.href").description("Link to the workbasket"),
- fieldWithPath("_links.self.href").ignored()
+ fieldWithPath("_links.self.href").ignored(),
+ fieldWithPath("_links.workbasket.href").ignored()
};
allDistributionTargetsFieldDescriptors = new FieldDescriptor[] {
subsectionWithPath("_embedded.distributionTargets").description(
"An array of <>"),
- fieldWithPath("_links.workbasket.href").description("Link to the workbasket"),
- fieldWithPath("_links.self.href").ignored()
+ fieldWithPath("_links.self.href").ignored(),
+ fieldWithPath("_links.workbasket.href").ignored()
};
createWorkbasketFieldDescriptors = new FieldDescriptor[] {
diff --git a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java
index 985607f7e..93e1e17e3 100644
--- a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java
+++ b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/ClassificationControllerIntTest.java
@@ -130,11 +130,6 @@ public class ClassificationControllerIntTest {
.getLink(Link.REL_SELF)
.getHref()
.endsWith("/v1/classifications?domain=DOMAIN_A&sort-by=key&order=asc&page=2&page-size=5"));
- assertNotNull(response.getBody().getLink("allClassifications"));
- assertTrue(response.getBody()
- .getLink("allClassifications")
- .getHref()
- .endsWith("/v1/classifications"));
assertNotNull(response.getBody().getLink(Link.REL_FIRST));
assertNotNull(response.getBody().getLink(Link.REL_LAST));
assertNotNull(response.getBody().getLink(Link.REL_NEXT));
diff --git a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/TaskControllerIntTest.java b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/TaskControllerIntTest.java
index b2409fb3f..de00f75be 100644
--- a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/TaskControllerIntTest.java
+++ b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/TaskControllerIntTest.java
@@ -221,11 +221,6 @@ public class TaskControllerIntTest {
.getLink(Link.REL_SELF)
.getHref()
.endsWith("/v1/tasks?state=READY,CLAIMED&sort-by=por.value&order=desc&page=15&page-size=5"));
- assertNotNull(response.getBody().getLink("allTasks"));
- assertTrue(response.getBody()
- .getLink("allTasks")
- .getHref()
- .endsWith("/v1/tasks"));
assertNotNull(response.getBody().getLink(Link.REL_FIRST));
assertNotNull(response.getBody().getLink(Link.REL_LAST));
assertNotNull(response.getBody().getLink(Link.REL_PREVIOUS));
@@ -263,11 +258,6 @@ public class TaskControllerIntTest {
.getLink(Link.REL_SELF)
.getHref()
.endsWith("/v1/tasks?sort-by=due&order=desc&page=5&page-size=5"));
- assertNotNull(response.getBody().getLink("allTasks"));
- assertTrue(response.getBody()
- .getLink("allTasks")
- .getHref()
- .endsWith("/v1/tasks"));
assertNotNull(response.getBody().getLink(Link.REL_FIRST));
assertNotNull(response.getBody().getLink(Link.REL_LAST));
assertNotNull(response.getBody().getLink(Link.REL_PREVIOUS));
@@ -298,11 +288,6 @@ public class TaskControllerIntTest {
.getHref()
.endsWith(
"/v1/tasks?por.company=00&por.system=PASystem&por.instance=00&por.type=VNR&por.value=22334455&sort-by=por.type&order=asc&page=2&page-size=5"));
- assertNotNull(response.getBody().getLink("allTasks"));
- assertTrue(response.getBody()
- .getLink("allTasks")
- .getHref()
- .endsWith("/v1/tasks"));
assertNotNull(response.getBody().getLink(Link.REL_FIRST));
assertNotNull(response.getBody().getLink(Link.REL_LAST));
assertNotNull(response.getBody().getLink(Link.REL_PREVIOUS));
diff --git a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketAccessItemControllerIntTest.java b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketAccessItemControllerIntTest.java
index ab43648ce..7a770998c 100644
--- a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketAccessItemControllerIntTest.java
+++ b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketAccessItemControllerIntTest.java
@@ -70,7 +70,7 @@ public class WorkbasketAccessItemControllerIntTest {
@Test
public void testGetWorkbasketAccessItemsKeepingFilters() {
- String parameters = "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=1&page-size=9&access-ids=user_1_1";
+ String parameters = "/v1/workbasket-access-items?sort-by=workbasket-key&order=asc&page=1&page-size=9&access-ids=user_1_1";
ResponseEntity> response = template.exchange(
url + port + parameters, HttpMethod.GET, request,
new ParameterizedTypeReference>() {
@@ -100,7 +100,7 @@ public class WorkbasketAccessItemControllerIntTest {
@Test
public void testGetSecondPageSortedByWorkbasketKey() {
- String parameters = "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=2&page-size=9&access-ids=user_1_1";
+ String parameters = "/v1/workbasket-access-items?sort-by=workbasket-key&order=asc&page=2&page-size=9&access-ids=user_1_1";
ResponseEntity> response = template.exchange(
url + port + parameters, HttpMethod.GET, request,
new ParameterizedTypeReference>() {
@@ -134,7 +134,7 @@ public class WorkbasketAccessItemControllerIntTest {
@Test
public void testGetBadRequestIfTryingToDeleteAccessItemsForGroup() {
- String parameters = "/v1/workbasket-access-items/?access-id=cn=DevelopersGroup,ou=groups,o=TaskanaTest";
+ String parameters = "/v1/workbasket-access-items?access-id=cn=DevelopersGroup,ou=groups,o=TaskanaTest";
try {
ResponseEntity response = template.exchange(
url + port + parameters, HttpMethod.DELETE, request,
diff --git a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java
index 7caf9eed7..ad86a31e8 100644
--- a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java
+++ b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java
@@ -117,17 +117,12 @@ public class WorkbasketControllerIntTest {
new ParameterizedTypeReference>() {
});
assertEquals(5, response.getBody().getContent().size());
- assertEquals("USER_1_1", response.getBody().getContent().iterator().next().key);
+ assertEquals("USER_1_1", response.getBody().getContent().iterator().next().getKey());
assertNotNull(response.getBody().getLink(Link.REL_SELF));
assertTrue(response.getBody()
.getLink(Link.REL_SELF)
.getHref()
.endsWith(parameters));
- assertNotNull(response.getBody().getLink("allWorkbaskets"));
- assertTrue(response.getBody()
- .getLink("allWorkbaskets")
- .getHref()
- .endsWith("/v1/workbaskets"));
assertNotNull(response.getBody().getLink(Link.REL_FIRST));
assertNotNull(response.getBody().getLink(Link.REL_LAST));
assertNotNull(response.getBody().getLink(Link.REL_NEXT));
@@ -150,7 +145,7 @@ public class WorkbasketControllerIntTest {
assertEquals(HttpStatus.OK, response2.getStatusCode());
Iterator iterator = response2.getBody().getContent().iterator();
while (iterator.hasNext()) {
- assertNotEquals("WBI:100000000000000000000000000000000007", iterator.next().workbasketId);
+ assertNotEquals("WBI:100000000000000000000000000000000007", iterator.next().getWorkbasketId());
}
}
diff --git a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketDefinitionControllerIntTest.java b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketDefinitionControllerIntTest.java
index 1a587da84..0fa6878da 100644
--- a/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketDefinitionControllerIntTest.java
+++ b/rest/taskana-rest-spring-test/src/test/java/pro/taskana/rest/WorkbasketDefinitionControllerIntTest.java
@@ -41,7 +41,9 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import pro.taskana.rest.resource.WorkbasketDefinitionResource;
-
+/**
+ * Integration tests for WorkbasketDefinitionController.
+ */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RestConfiguration.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public class WorkbasketDefinitionControllerIntTest {
diff --git a/rest/taskana-rest-spring-wildfly-example/src/main/java/pro/taskana/TaskanaWildFlyApplication.java b/rest/taskana-rest-spring-wildfly-example/src/main/java/pro/taskana/TaskanaWildFlyApplication.java
index 56acbdb51..10ce40116 100644
--- a/rest/taskana-rest-spring-wildfly-example/src/main/java/pro/taskana/TaskanaWildFlyApplication.java
+++ b/rest/taskana-rest-spring-wildfly-example/src/main/java/pro/taskana/TaskanaWildFlyApplication.java
@@ -1,14 +1,5 @@
package pro.taskana;
-import java.io.InputStream;
-import java.sql.SQLException;
-import java.util.Properties;
-
-import javax.annotation.PostConstruct;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.sql.DataSource;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -19,14 +10,12 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.PlatformTransactionManager;
-
import pro.taskana.jobs.TransactionalJobsConfiguration;
import pro.taskana.ldap.LdapCacheTestImpl;
import pro.taskana.ldap.LdapClient;
@@ -36,6 +25,14 @@ import pro.taskana.rest.RestConfiguration;
import pro.taskana.rest.WebMvcConfig;
import pro.taskana.sampledata.SampleDataGenerator;
+import javax.annotation.PostConstruct;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.sql.DataSource;
+import java.io.InputStream;
+import java.sql.SQLException;
+import java.util.Properties;
+
/**
* Example Application showing the implementation of taskana-rest-spring for jboss application server.
*/
diff --git a/rest/taskana-rest-spring-wildfly-example/src/test/java/pro/taskana/TaskanaWildflyTest.java b/rest/taskana-rest-spring-wildfly-example/src/test/java/pro/taskana/TaskanaWildflyTest.java
index d045b54a1..d9bb00d08 100644
--- a/rest/taskana-rest-spring-wildfly-example/src/test/java/pro/taskana/TaskanaWildflyTest.java
+++ b/rest/taskana-rest-spring-wildfly-example/src/test/java/pro/taskana/TaskanaWildflyTest.java
@@ -30,8 +30,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import pro.taskana.rest.resource.TaskanaUserInfoResource;
-// This test class is configured to run with postgres DB if you want to run it with h2 it is needed
-// to change data source configuration at project-defaults.yml
+/**
+ * This test class is configured to run with postgres DB if you want to run it with h2 it is needed.
+ * to change data source configuration at project-defaults.yml.
+ */
@RunWith(Arquillian.class)
public class TaskanaWildflyTest {
@@ -61,6 +63,7 @@ public class TaskanaWildflyTest {
ResponseEntity response = getRestTemplate().exchange(
"http://127.0.0.1:" + "8090" + "/v1/current-user-info", HttpMethod.GET, request,
new ParameterizedTypeReference() {
+
});
assertEquals(HttpStatus.OK, response.getStatusCode());
diff --git a/rest/taskana-rest-spring/pom.xml b/rest/taskana-rest-spring/pom.xml
index 54e8af730..b55b31003 100644
--- a/rest/taskana-rest-spring/pom.xml
+++ b/rest/taskana-rest-spring/pom.xml
@@ -215,6 +215,19 @@
+
+ org.springframework
+ spring-aop
+ ${spring.version}
+ compile
+
+
+ org.aspectj
+ aspectjweaver
+ 1.9.2
+ compile
+
+
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/ldap/LdapCache.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/ldap/LdapCache.java
index f6e026fd3..9cbbafd20 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/ldap/LdapCache.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/ldap/LdapCache.java
@@ -26,7 +26,7 @@ public interface LdapCache {
* Find the groups belong to a user.
* @param searchFor the search string. The search is performed over names and ids of group .
* @param maxNumberOfReturnedAccessIds the maximum number of results to return.
- * @return
+ * @return a List of access ids for groups of users.
*/
List findGroupsOfUser(String searchFor, int maxNumberOfReturnedAccessIds);
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java
index 63140cfbe..5297d5b74 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java
@@ -7,30 +7,16 @@ import java.util.List;
import org.springframework.hateoas.PagedResources.PageMetadata;
import org.springframework.util.MultiValueMap;
+import pro.taskana.BaseQuery;
import pro.taskana.exceptions.InvalidArgumentException;
/**
- * Abstract superclass for taskana REST controller with pagable resources.
+ * Abstract superclass for taskana REST controller with pageable resources.
*/
public abstract class AbstractPagingController {
- protected PageMetadata initPageMetadata(String pagesizeParam, String pageParam, long totalElements)
- throws InvalidArgumentException {
- long pagesize;
- long page;
- try {
- pagesize = Long.valueOf(pagesizeParam);
- page = Long.valueOf(pageParam);
- } catch (NumberFormatException e) {
- throw new InvalidArgumentException("page and pagesize must be a integer value.", e.getCause());
- }
- PageMetadata pageMetadata = new PageMetadata(pagesize, page, totalElements);
- if (pageMetadata.getNumber() > pageMetadata.getTotalPages()) {
- // unfortunately no setter for number
- pageMetadata = new PageMetadata(pagesize, pageMetadata.getTotalPages(), totalElements);
- }
- return pageMetadata;
- }
+ private static final String PAGING_PAGE = "page";
+ private static final String PAGING_PAGE_SIZE = "page-size";
protected String[] extractCommaSeparatedFields(List list) {
List values = new ArrayList<>();
@@ -47,4 +33,89 @@ public abstract class AbstractPagingController {
}
}
+ protected PageMetadata getPageMetadata(MultiValueMap params, BaseQuery, ?> query)
+ throws InvalidArgumentException {
+ PageMetadata pageMetadata = null;
+ if (hasPagingInformationInParams(params)) {
+ // paging
+ long totalElements = query.count();
+ pageMetadata = initPageMetadata(params, totalElements);
+ validateNoInvalidParameterIsLeft(params);
+ } else {
+ // not paging
+ validateNoInvalidParameterIsLeft(params);
+ }
+ return pageMetadata;
+ }
+
+ protected List> getQueryList(BaseQuery, ?> query, PageMetadata pageMetadata) {
+ List> resultList;
+ if (pageMetadata != null) {
+ resultList = query.listPage((int) pageMetadata.getNumber(), (int) pageMetadata.getSize());
+ } else {
+ resultList = query.list();
+ }
+ return resultList;
+ }
+
+ private boolean hasPagingInformationInParams(MultiValueMap params) {
+ return params.getFirst(PAGING_PAGE) != null;
+ }
+
+ protected PageMetadata initPageMetadata(MultiValueMap param, long totalElements)
+ throws InvalidArgumentException {
+ long pageSize = getPageSize(param);
+ long page = getPage(param);
+
+ PageMetadata pageMetadata = new PageMetadata(pageSize, page,
+ totalElements != 0 ? totalElements : Integer.MAX_VALUE);
+ if (pageMetadata.getNumber() > pageMetadata.getTotalPages()) {
+ // unfortunately no setter for number
+ pageMetadata = new PageMetadata(pageSize, pageMetadata.getTotalPages(), totalElements);
+ }
+ return pageMetadata;
+ }
+
+ /**
+ * This method is deprecated please remove it after updating taskana-simple-history reference to it.
+ */
+ @Deprecated
+ protected PageMetadata initPageMetadata(String pagesizeParam, String pageParam, long totalElements)
+ throws InvalidArgumentException {
+ long pageSize;
+ long page;
+ try {
+ pageSize = Long.valueOf(pagesizeParam);
+ page = Long.valueOf(pageParam);
+ } catch (NumberFormatException e) {
+ throw new InvalidArgumentException("page and pageSize must be a integer value.", e.getCause());
+ }
+ PageMetadata pageMetadata = new PageMetadata(pageSize, page, totalElements);
+ if (pageMetadata.getNumber() > pageMetadata.getTotalPages()) {
+ // unfortunately no setter for number
+ pageMetadata = new PageMetadata(pageSize, pageMetadata.getTotalPages(), totalElements);
+ }
+ return pageMetadata;
+ }
+
+ private long getPage(MultiValueMap params) throws InvalidArgumentException {
+ String param = params.getFirst(PAGING_PAGE);
+ params.remove(PAGING_PAGE);
+ try {
+ return Long.valueOf(param != null ? param : "1");
+ } catch (NumberFormatException e) {
+ throw new InvalidArgumentException("page must be a integer value.", e.getCause());
+ }
+ }
+
+ private long getPageSize(MultiValueMap params) throws InvalidArgumentException {
+ String param = params.getFirst(PAGING_PAGE_SIZE);
+ params.remove(PAGING_PAGE_SIZE);
+ try {
+ return param != null ? Long.valueOf(param) : Integer.MAX_VALUE;
+ } catch (NumberFormatException e) {
+ throw new InvalidArgumentException("page-size must be a integer value.", e.getCause());
+ }
+ }
+
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationController.java
index 099ff1ab7..9032ae003 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationController.java
@@ -4,7 +4,6 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.PagedResources;
import org.springframework.hateoas.PagedResources.PageMetadata;
import org.springframework.hateoas.config.EnableHypermediaSupport;
@@ -38,7 +37,7 @@ import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.rest.resource.ClassificationResource;
import pro.taskana.rest.resource.ClassificationResourceAssembler;
import pro.taskana.rest.resource.ClassificationSummaryResource;
-import pro.taskana.rest.resource.ClassificationSummaryResourcesAssembler;
+import pro.taskana.rest.resource.ClassificationSummaryResourceAssembler;
/**
* Controller for all {@link Classification} related endpoints.
@@ -65,19 +64,25 @@ public class ClassificationController extends AbstractPagingController {
private static final String CUSTOM_6_LIKE = "custom-6-like";
private static final String CUSTOM_7_LIKE = "custom-7-like";
private static final String CUSTOM_8_LIKE = "custom-8-like";
-
private static final String SORT_BY = "sort-by";
private static final String SORT_DIRECTION = "order";
- private static final String PAGING_PAGE = "page";
- private static final String PAGING_PAGE_SIZE = "page-size";
-
- @Autowired
private ClassificationService classificationService;
- @Autowired
private ClassificationResourceAssembler classificationResourceAssembler;
+ private ClassificationSummaryResourceAssembler classificationSummaryResourceAssembler;
+
+ ClassificationController(
+ ClassificationService classificationService,
+ ClassificationResourceAssembler classificationResourceAssembler,
+ ClassificationSummaryResourceAssembler classificationSummaryResourceAssembler
+ ) {
+ this.classificationService = classificationService;
+ this.classificationResourceAssembler = classificationResourceAssembler;
+ this.classificationSummaryResourceAssembler = classificationSummaryResourceAssembler;
+ }
+
@GetMapping
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity> getClassifications(
@@ -90,34 +95,17 @@ public class ClassificationController extends AbstractPagingController {
query = applySortingParams(query, params);
query = applyFilterParams(query, params);
- PageMetadata pageMetadata = null;
- List classificationSummaries = null;
- String page = params.getFirst(PAGING_PAGE);
- String pageSize = params.getFirst(PAGING_PAGE_SIZE);
- params.remove(PAGING_PAGE);
- params.remove(PAGING_PAGE_SIZE);
- validateNoInvalidParameterIsLeft(params);
- if (page != null && pageSize != null) {
- // paging
- long totalElements = query.count();
- pageMetadata = initPageMetadata(pageSize, page, totalElements);
- classificationSummaries = query.listPage((int) pageMetadata.getNumber(),
- (int) pageMetadata.getSize());
- } else if (page == null && pageSize == null) {
- // not paging
- classificationSummaries = query.list();
- } else {
- throw new InvalidArgumentException("Paging information is incomplete.");
- }
-
- ClassificationSummaryResourcesAssembler assembler = new ClassificationSummaryResourcesAssembler();
- PagedResources pagedResources = assembler.toResources(classificationSummaries,
+ PageMetadata pageMetadata = getPageMetadata(params, query);
+ List classificationSummaries = (List) getQueryList(query,
pageMetadata);
- ResponseEntity> response = new ResponseEntity<>(pagedResources,
- HttpStatus.OK);
+ ResponseEntity> response = new ResponseEntity<>(
+ classificationSummaryResourceAssembler.toResources(
+ classificationSummaries,
+ pageMetadata), HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Exit from getClassifications(), returning {}", response);
+ LOGGER.debug("Exit from getClassifications(), returning {}",
+ new ResponseEntity<>(response, HttpStatus.OK));
}
return response;
@@ -126,14 +114,17 @@ public class ClassificationController extends AbstractPagingController {
@GetMapping(path = "/{classificationId}")
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity getClassification(@PathVariable String classificationId)
- throws ClassificationNotFoundException, NotAuthorizedException, ClassificationAlreadyExistException,
- ConcurrencyException, DomainNotFoundException, InvalidArgumentException {
- LOGGER.debug("Entry to getClassification(classificationId= {})", classificationId);
+ throws ClassificationNotFoundException {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("Entry to getClassification(classificationId= {})", classificationId);
+ }
+
Classification classification = classificationService.getClassification(classificationId);
ResponseEntity response = new ResponseEntity<>(
classificationResourceAssembler.toResource(classification), HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Exit from getClassification(), returning {}", response);
+ LOGGER.debug("Exit from getClassification(), returning {}",
+ ResponseEntity.status(HttpStatus.OK).body(classificationResourceAssembler.toResource(classification)));
}
return response;
@@ -148,7 +139,6 @@ public class ClassificationController extends AbstractPagingController {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Entry to createClassification(resource= {})", resource);
}
-
Classification classification = classificationResourceAssembler.toModel(resource);
classification = classificationService.createClassification(classification);
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java
index 713be3749..4cdbb4f94 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java
@@ -1,13 +1,16 @@
package pro.taskana.rest;
+import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
@@ -19,6 +22,10 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
import pro.taskana.Classification;
import pro.taskana.ClassificationQuery;
import pro.taskana.ClassificationService;
@@ -33,15 +40,6 @@ import pro.taskana.impl.util.LoggerUtils;
import pro.taskana.rest.resource.ClassificationResource;
import pro.taskana.rest.resource.ClassificationResourceAssembler;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.util.Set;
-
/**
* Controller for Importing / Exporting classifications.
*/
@@ -51,12 +49,18 @@ public class ClassificationDefinitionController {
private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationDefinitionController.class);
- @Autowired
private ClassificationService classificationService;
- @Autowired
private ClassificationResourceAssembler classificationResourceAssembler;
+ ClassificationDefinitionController(
+ ClassificationService classificationService,
+ ClassificationResourceAssembler classificationResourceAssembler
+ ) {
+ this.classificationService = classificationService;
+ this.classificationResourceAssembler = classificationResourceAssembler;
+ }
+
@GetMapping
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity> exportClassifications(
@@ -169,7 +173,7 @@ public class ClassificationDefinitionController {
updateExistingClassification(classificationResource, systemId);
} else {
classificationService.createClassification(
- classificationResourceAssembler.toModel(classificationResource));
+ classificationResourceAssembler.toModel(classificationResource));
}
}
LOGGER.debug("Exit from insertOrUpdateClassificationsWithoutParent()");
@@ -192,8 +196,8 @@ public class ClassificationDefinitionController {
}
private void updateExistingClassification(ClassificationResource cl,
- String systemId) throws ClassificationNotFoundException, NotAuthorizedException,
- ConcurrencyException, InvalidArgumentException {
+ String systemId) throws ClassificationNotFoundException, NotAuthorizedException,
+ ConcurrencyException, InvalidArgumentException {
LOGGER.debug("Entry to updateExistingClassification()");
Classification currentClassification = classificationService.getClassification(systemId);
if (cl.getType() != null && !cl.getType().equals(currentClassification.getType())) {
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/MonitorController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/MonitorController.java
index e66ce2f44..1adec86fe 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/MonitorController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/MonitorController.java
@@ -8,7 +8,6 @@ import java.util.stream.Stream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
@@ -22,8 +21,8 @@ import pro.taskana.TaskState;
import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader;
-import pro.taskana.rest.resource.ReportAssembler;
import pro.taskana.rest.resource.ReportResource;
+import pro.taskana.rest.resource.ReportResourceAssembler;
/**
* Controller for all monitoring endpoints.
@@ -34,11 +33,14 @@ public class MonitorController {
private static final Logger LOGGER = LoggerFactory.getLogger(MonitorController.class);
- @Autowired
private TaskMonitorService taskMonitorService;
- @Autowired
- private ReportAssembler reportAssembler;
+ private ReportResourceAssembler reportResourceAssembler;
+
+ MonitorController(TaskMonitorService taskMonitorService, ReportResourceAssembler reportResourceAssembler) {
+ this.taskMonitorService = taskMonitorService;
+ this.reportResourceAssembler = reportResourceAssembler;
+ }
@GetMapping(path = "/tasks-status-report")
@Transactional(readOnly = true, rollbackFor = Exception.class)
@@ -46,18 +48,14 @@ public class MonitorController {
@RequestParam(required = false) List states) throws NotAuthorizedException,
InvalidArgumentException {
LOGGER.debug("Entry to getTasksStatusReport()");
- ReportResource report = reportAssembler.toResource(
- taskMonitorService.createTaskStatusReportBuilder()
- .stateIn(states)
- .domainIn(domains)
- .buildReport(),
- domains, states);
+ ResponseEntity response = new ResponseEntity<>(reportResourceAssembler.toResource(
+ taskMonitorService.createTaskStatusReportBuilder().stateIn(states).domainIn(domains).buildReport(),
+ domains, states), HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Exit from getTasksStatusReport(), returning {}", report);
+ LOGGER.debug("Exit from getTasksStatusReport(), returning {}", response);
}
- return ResponseEntity.status(HttpStatus.OK)
- .body(report);
+ return response;
}
@GetMapping(path = "/tasks-workbasket-report")
@@ -67,7 +65,7 @@ public class MonitorController {
throws NotAuthorizedException, InvalidArgumentException {
LOGGER.debug("Entry to getTasksWorkbasketReport()");
- ReportResource report = reportAssembler.toResource(
+ ReportResource report = reportResourceAssembler.toResource(
taskMonitorService.createWorkbasketReportBuilder()
.withColumnHeaders(getRangeTimeInterval())
.buildReport(), states);
@@ -89,7 +87,7 @@ public class MonitorController {
throws NotAuthorizedException, InvalidArgumentException {
LOGGER.debug("Entry to getTasksWorkbasketPlannedDateReport()");
- ReportResource report = reportAssembler.toResource(
+ ReportResource report = reportResourceAssembler.toResource(
taskMonitorService.createWorkbasketReportBuilder()
.stateIn(states)
.withColumnHeaders(getDateTimeInterval(daysInPast)).buildPlannedDateBasedReport(),
@@ -103,13 +101,14 @@ public class MonitorController {
}
+
@GetMapping(path = "/tasks-classification-report")
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity getTasksClassificationReport()
throws NotAuthorizedException, InvalidArgumentException {
LOGGER.debug("Entry to getTasksClassificationReport()");
- ReportResource report = reportAssembler.toResource(
+ ReportResource report = reportResourceAssembler.toResource(
taskMonitorService.createClassificationReportBuilder()
.withColumnHeaders(getRangeTimeInterval())
.buildReport());
@@ -130,7 +129,7 @@ public class MonitorController {
.mapToObj(TimeIntervalColumnHeader.Date::new)
.collect(Collectors.toList());
return ResponseEntity.status(HttpStatus.OK)
- .body(reportAssembler.toResource(
+ .body(reportResourceAssembler.toResource(
taskMonitorService.createTimestampReportBuilder()
.withColumnHeaders(columnHeaders)
.buildReport()));
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java
index 37a2da4c1..117ddbe7d 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java
@@ -7,10 +7,7 @@ import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Scope;
+import org.springframework.context.annotation.*;
import org.springframework.http.converter.json.SpringHandlerInstantiator;
import org.springframework.transaction.annotation.EnableTransactionManagement;
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java
index bef355a44..4b74b24ed 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java
@@ -5,7 +5,6 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.PagedResources;
import org.springframework.hateoas.PagedResources.PageMetadata;
import org.springframework.hateoas.config.EnableHypermediaSupport;
@@ -44,7 +43,7 @@ import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.rest.resource.TaskResource;
import pro.taskana.rest.resource.TaskResourceAssembler;
import pro.taskana.rest.resource.TaskSummaryResource;
-import pro.taskana.rest.resource.TaskSummaryResourcesAssembler;
+import pro.taskana.rest.resource.TaskSummaryResourceAssembler;
/**
* Controller for all {@link Task} related endpoints.
@@ -81,15 +80,22 @@ public class TaskController extends AbstractPagingController {
private static final String SORT_BY = "sort-by";
private static final String SORT_DIRECTION = "order";
- private static final String PAGING_PAGE = "page";
- private static final String PAGING_PAGE_SIZE = "page-size";
-
- @Autowired
private TaskService taskService;
- @Autowired
private TaskResourceAssembler taskResourceAssembler;
+ private TaskSummaryResourceAssembler taskSummaryResourceAssembler;
+
+ TaskController(
+ TaskService taskService,
+ TaskResourceAssembler taskResourceAssembler,
+ TaskSummaryResourceAssembler taskSummaryResourceAssembler
+ ) {
+ this.taskService = taskService;
+ this.taskResourceAssembler = taskResourceAssembler;
+ this.taskSummaryResourceAssembler = taskSummaryResourceAssembler;
+ }
+
@GetMapping
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity> getTasks(
@@ -102,29 +108,10 @@ public class TaskController extends AbstractPagingController {
query = applyFilterParams(query, params);
query = applySortingParams(query, params);
- PageMetadata pageMetadata = null;
- List taskSummaries = null;
- String page = params.getFirst(PAGING_PAGE);
- String pageSize = params.getFirst(PAGING_PAGE_SIZE);
- params.remove(PAGING_PAGE);
- params.remove(PAGING_PAGE_SIZE);
- validateNoInvalidParameterIsLeft(params);
- if (page != null && pageSize != null) {
- // paging
- long totalElements = query.count();
- pageMetadata = initPageMetadata(pageSize, page,
- totalElements);
- taskSummaries = query.listPage((int) pageMetadata.getNumber(),
- (int) pageMetadata.getSize());
- } else if (page == null && pageSize == null) {
- // not paging
- taskSummaries = query.list();
- } else {
- throw new InvalidArgumentException("Paging information is incomplete.");
- }
+ PageMetadata pageMetadata = getPageMetadata(params, query);
+ List taskSummaries = (List) getQueryList(query, pageMetadata);
- TaskSummaryResourcesAssembler taskSummaryResourcesAssembler = new TaskSummaryResourcesAssembler();
- PagedResources pagedResources = taskSummaryResourcesAssembler.toResources(taskSummaries,
+ PagedResources pagedResources = taskSummaryResourceAssembler.toResources(taskSummaries,
pageMetadata);
ResponseEntity> response = new ResponseEntity<>(pagedResources, HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaEngineController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaEngineController.java
index f34beaacf..97f13841c 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaEngineController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaEngineController.java
@@ -2,6 +2,7 @@ package pro.taskana.rest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
@@ -29,11 +30,16 @@ public class TaskanaEngineController {
TaskanaEngine taskanaEngine;
- TaskanaEngineController(TaskanaEngineConfiguration taskanaEngineConfiguration, TaskanaEngine taskanaEngine) {
+ TaskanaEngineController(
+ TaskanaEngineConfiguration taskanaEngineConfiguration, TaskanaEngine taskanaEngine) {
this.taskanaEngineConfiguration = taskanaEngineConfiguration;
this.taskanaEngine = taskanaEngine;
+
}
+ @Value("${version:Local build}")
+ private String version;
+
@GetMapping(path = "/v1/domains", produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity> getDomains() {
ResponseEntity> response = new ResponseEntity<>(taskanaEngineConfiguration.getDomains(),
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketAccessItemController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketAccessItemController.java
index b1fd53b0b..a9ec5f969 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketAccessItemController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketAccessItemController.java
@@ -25,8 +25,8 @@ import pro.taskana.WorkbasketService;
import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.ldap.LdapClient;
+import pro.taskana.rest.resource.WorkbasketAccessItemResourceAssembler;
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
-import pro.taskana.rest.resource.WorkbasketAccessItemAssembler;
/**
* Controller for Workbasket access.
@@ -48,15 +48,15 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
private static final String SORT_BY = "sort-by";
private static final String SORT_DIRECTION = "order";
- private static final String PAGING_PAGE = "page";
- private static final String PAGING_PAGE_SIZE = "page-size";
-
@Autowired
LdapClient ldapClient;
@Autowired
private WorkbasketService workbasketService;
+ @Autowired
+ private WorkbasketAccessItemResourceAssembler workbasketAccessItemResourceAssembler;
+
/**
* This GET method return all workbasketAccessItems that correspond the given data.
*
@@ -78,31 +78,15 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
query = applyFilterParams(query, params);
query = applySortingParams(query, params);
- PagedResources.PageMetadata pageMetadata = null;
- List workbasketAccessItems;
- String page = params.getFirst(PAGING_PAGE);
- String pageSize = params.getFirst(PAGING_PAGE_SIZE);
- params.remove(PAGING_PAGE);
- params.remove(PAGING_PAGE_SIZE);
- validateNoInvalidParameterIsLeft(params);
- if (page != null && pageSize != null) {
- // paging
- long totalElements = query.count();
- pageMetadata = initPageMetadata(pageSize, page, totalElements);
- workbasketAccessItems = query.listPage((int) pageMetadata.getNumber(),
- (int) pageMetadata.getSize());
- } else if (page == null && pageSize == null) {
- // not paging
- workbasketAccessItems = query.list();
- } else {
- throw new InvalidArgumentException("Paging information is incomplete.");
- }
-
- WorkbasketAccessItemAssembler assembler = new WorkbasketAccessItemAssembler();
- PagedResources pagedResources = assembler.toResources(
- workbasketAccessItems,
+ PagedResources.PageMetadata pageMetadata = getPageMetadata(params, query);
+ List workbasketAccessItems = (List) getQueryList(query,
pageMetadata);
+ PagedResources pagedResources = workbasketAccessItemResourceAssembler.toResources(
+ workbasketAccessItems,
+ pageMetadata
+ );
+
ResponseEntity> response = new ResponseEntity<>(pagedResources, HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Exit from getWorkbasketAccessItems(), returning {}", response);
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java
index fd604900d..b0d3b9d00 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java
@@ -6,7 +6,6 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.PagedResources;
import org.springframework.hateoas.PagedResources.PageMetadata;
import org.springframework.hateoas.Resources;
@@ -27,7 +26,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import pro.taskana.BaseQuery.SortDirection;
-import pro.taskana.TaskService;
import pro.taskana.Workbasket;
import pro.taskana.WorkbasketAccessItem;
import pro.taskana.WorkbasketPermission;
@@ -43,15 +41,14 @@ import pro.taskana.exceptions.WorkbasketAlreadyExistException;
import pro.taskana.exceptions.WorkbasketInUseException;
import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.util.LoggerUtils;
-import pro.taskana.rest.resource.DistributionTargetListAssembler;
import pro.taskana.rest.resource.DistributionTargetResource;
-import pro.taskana.rest.resource.WorkbasketAccessItemAssembler;
-import pro.taskana.rest.resource.WorkbasketAccessItemListAssembler;
+import pro.taskana.rest.resource.DistributionTargetResourceAssembler;
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
+import pro.taskana.rest.resource.WorkbasketAccessItemResourceAssembler;
import pro.taskana.rest.resource.WorkbasketResource;
import pro.taskana.rest.resource.WorkbasketResourceAssembler;
import pro.taskana.rest.resource.WorkbasketSummaryResource;
-import pro.taskana.rest.resource.WorkbasketSummaryResourcesAssembler;
+import pro.taskana.rest.resource.WorkbasketSummaryResourceAssembler;
/**
* Controller for all {@link Workbasket} related endpoints.
@@ -79,26 +76,27 @@ public class WorkbasketController extends AbstractPagingController {
private static final String SORT_BY = "sort-by";
private static final String SORT_DIRECTION = "order";
- private static final String PAGING_PAGE = "page";
- private static final String PAGING_PAGE_SIZE = "page-size";
-
- @Autowired
private WorkbasketService workbasketService;
- @Autowired
- private TaskService taskService;
-
- @Autowired
private WorkbasketResourceAssembler workbasketResourceAssembler;
- @Autowired
- private DistributionTargetListAssembler distributionTargetListAssembler;
+ private WorkbasketSummaryResourceAssembler workbasketSummaryResourceAssembler;
- @Autowired
- private WorkbasketAccessItemListAssembler accessItemListAssembler;
+ private DistributionTargetResourceAssembler distributionTargetResourceAssembler;
- @Autowired
- private WorkbasketAccessItemAssembler workbasketAccessItemAssembler;
+ private WorkbasketAccessItemResourceAssembler workbasketAccessItemResourceAssembler;
+
+ WorkbasketController(WorkbasketService workbasketService,
+ WorkbasketResourceAssembler workbasketResourceAssembler,
+ WorkbasketSummaryResourceAssembler workbasketSummaryResourceAssembler,
+ DistributionTargetResourceAssembler distributionTargetResourceAssembler,
+ WorkbasketAccessItemResourceAssembler workbasketAccessItemResourceAssembler) {
+ this.workbasketService = workbasketService;
+ this.workbasketResourceAssembler = workbasketResourceAssembler;
+ this.workbasketSummaryResourceAssembler = workbasketSummaryResourceAssembler;
+ this.distributionTargetResourceAssembler = distributionTargetResourceAssembler;
+ this.workbasketAccessItemResourceAssembler = workbasketAccessItemResourceAssembler;
+ }
@GetMapping
@Transactional(readOnly = true, rollbackFor = Exception.class)
@@ -112,28 +110,9 @@ public class WorkbasketController extends AbstractPagingController {
query = applySortingParams(query, params);
query = applyFilterParams(query, params);
- PageMetadata pageMetadata = null;
- List workbasketSummaries = null;
- String page = params.getFirst(PAGING_PAGE);
- String pageSize = params.getFirst(PAGING_PAGE_SIZE);
- params.remove(PAGING_PAGE);
- params.remove(PAGING_PAGE_SIZE);
- validateNoInvalidParameterIsLeft(params);
- if (page != null && pageSize != null) {
- // paging
- long totalElements = query.count();
- pageMetadata = initPageMetadata(pageSize, page, totalElements);
- workbasketSummaries = query.listPage((int) pageMetadata.getNumber(),
- (int) pageMetadata.getSize());
- } else if (page == null && pageSize == null) {
- // not paging
- workbasketSummaries = query.list();
- } else {
- throw new InvalidArgumentException("Paging information is incomplete.");
- }
-
- WorkbasketSummaryResourcesAssembler assembler = new WorkbasketSummaryResourcesAssembler();
- PagedResources pagedResources = assembler.toResources(workbasketSummaries,
+ PageMetadata pageMetadata = getPageMetadata(params, query);
+ List workbasketSummaries = (List) getQueryList(query, pageMetadata);
+ PagedResources pagedResources = workbasketSummaryResourceAssembler.toResources(workbasketSummaries,
pageMetadata);
ResponseEntity> response = new ResponseEntity<>(pagedResources,
@@ -166,7 +145,8 @@ public class WorkbasketController extends AbstractPagingController {
throws NotAuthorizedException, InvalidArgumentException,
WorkbasketNotFoundException, WorkbasketInUseException {
LOGGER.debug("Entry to markWorkbasketForDeletion(workbasketId= {})", workbasketId);
- ResponseEntity> response = new ResponseEntity<>(workbasketService.deleteWorkbasket(workbasketId), HttpStatus.ACCEPTED);
+ ResponseEntity> response = new ResponseEntity<>(workbasketService.deleteWorkbasket(workbasketId),
+ HttpStatus.ACCEPTED);
LOGGER.debug("Exit from markWorkbasketForDeletion(), returning {}",
response);
return response;
@@ -183,7 +163,8 @@ public class WorkbasketController extends AbstractPagingController {
Workbasket workbasket = workbasketResourceAssembler.toModel(workbasketResource);
workbasket = workbasketService.createWorkbasket(workbasket);
- ResponseEntity response = new ResponseEntity<>(workbasketResourceAssembler.toResource(workbasket), HttpStatus.CREATED);
+ ResponseEntity response = new ResponseEntity<>(
+ workbasketResourceAssembler.toResource(workbasket), HttpStatus.CREATED);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Exit from createWorkbasket(), returning {}", response);
}
@@ -226,9 +207,8 @@ public class WorkbasketController extends AbstractPagingController {
ResponseEntity> result;
List accessItems = workbasketService.getWorkbasketAccessItems(workbasketId);
- Resources accessItemListResource = accessItemListAssembler
- .toResource(workbasketId, accessItems);
- result = new ResponseEntity<>(accessItemListResource, HttpStatus.OK);
+ result = new ResponseEntity<>(workbasketAccessItemResourceAssembler
+ .toResources(workbasketId, accessItems), HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Exit from getWorkbasketAccessItems(), returning {}", result);
}
@@ -248,14 +228,14 @@ public class WorkbasketController extends AbstractPagingController {
}
List wbAccessItems = new ArrayList<>();
- workbasketAccessResourceItems.forEach(item -> wbAccessItems.add(workbasketAccessItemAssembler.toModel(item)));
+ workbasketAccessResourceItems.forEach(
+ item -> wbAccessItems.add(workbasketAccessItemResourceAssembler.toModel(item)));
workbasketService.setWorkbasketAccessItems(workbasketId, wbAccessItems);
-
List updatedWbAccessItems = workbasketService.getWorkbasketAccessItems(workbasketId);
- Resources accessItemListResource = accessItemListAssembler
- .toResource(workbasketId, updatedWbAccessItems);
- ResponseEntity> response = new ResponseEntity<>(accessItemListResource, HttpStatus.OK);
+ ResponseEntity> response = new ResponseEntity<>(
+ workbasketAccessItemResourceAssembler
+ .toResources(workbasketId, updatedWbAccessItems), HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Exit from setWorkbasketAccessItems(), returning {}", response);
}
@@ -268,11 +248,12 @@ public class WorkbasketController extends AbstractPagingController {
public ResponseEntity> getDistributionTargets(
@PathVariable(value = "workbasketId") String workbasketId)
throws WorkbasketNotFoundException, NotAuthorizedException {
+
LOGGER.debug("Entry to getDistributionTargets(workbasketId= {})", workbasketId);
ResponseEntity> result;
List distributionTargets = workbasketService.getDistributionTargets(workbasketId);
- Resources distributionTargetListResource = distributionTargetListAssembler
- .toResource(workbasketId, distributionTargets);
+ Resources distributionTargetListResource = distributionTargetResourceAssembler
+ .toResources(workbasketId, distributionTargets);
result = new ResponseEntity<>(distributionTargetListResource, HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Exit from getDistributionTargets(), returning {}", result);
@@ -295,10 +276,9 @@ public class WorkbasketController extends AbstractPagingController {
workbasketService.setDistributionTargets(sourceWorkbasketId, targetWorkbasketIds);
List distributionTargets = workbasketService.getDistributionTargets(sourceWorkbasketId);
- Resources distributionTargetListResource = distributionTargetListAssembler
- .toResource(sourceWorkbasketId, distributionTargets);
-
- ResponseEntity> response = new ResponseEntity<>(distributionTargetListResource, HttpStatus.OK);
+ ResponseEntity> response = new ResponseEntity<>(
+ distributionTargetResourceAssembler
+ .toResources(sourceWorkbasketId, distributionTargets), HttpStatus.OK);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Exit from getTasksStatusReport(), returning {}", response);
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketDefinitionController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketDefinitionController.java
index de0309468..14a8b0e7d 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketDefinitionController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketDefinitionController.java
@@ -9,7 +9,6 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
@@ -49,12 +48,18 @@ public class WorkbasketDefinitionController {
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketDefinitionController.class);
- @Autowired
private WorkbasketService workbasketService;
- @Autowired
private WorkbasketDefinitionResourceAssembler workbasketDefinitionAssembler;
+ WorkbasketDefinitionController(
+ WorkbasketService workbasketService,
+ WorkbasketDefinitionResourceAssembler workbasketDefinitionAssembler
+ ) {
+ this.workbasketService = workbasketService;
+ this.workbasketDefinitionAssembler = workbasketDefinitionAssembler;
+ }
+
@GetMapping
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity> exportWorkbaskets(@RequestParam(required = false) String domain)
@@ -86,6 +91,13 @@ public class WorkbasketDefinitionController {
* @param file the list of workbasket definitions which will be imported to the current system.
* @return Return answer is determined by the status code: 200 - all good 400 - list state error (referring to non
* existing id's) 401 - not authorized
+ * @throws IOException if multipart file cannot be parsed.
+ * @throws NotAuthorizedException if the user is not authorized.
+ * @throws DomainNotFoundException if domain information is incorrect.
+ * @throws InvalidWorkbasketException if workbasket has invalid information.
+ * @throws WorkbasketAlreadyExistException if workbasket already exists when trying to create a new one.
+ * @throws WorkbasketNotFoundException if do not exists a workbasket in the system with the used id.
+ * @throws InvalidArgumentException if authorization information in workbaskets definitions is incorrect.
*/
@PostMapping
@Transactional(rollbackFor = Exception.class)
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/query/TaskFilter.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/query/TaskFilter.java
deleted file mode 100644
index 5950889b1..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/query/TaskFilter.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package pro.taskana.rest.query;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.util.MultiValueMap;
-
-import pro.taskana.TaskQuery;
-import pro.taskana.TaskService;
-import pro.taskana.TaskState;
-import pro.taskana.TaskSummary;
-import pro.taskana.exceptions.InvalidArgumentException;
-import pro.taskana.impl.util.LoggerUtils;
-
-/**
- * TODO.
- */
-@Component
-public class TaskFilter {
- private static final Logger LOGGER = LoggerFactory.getLogger(TaskFilter.class);
-
- private static final String CLASSIFICATION = "classification";
- private static final String POR = "por";
- private static final String DOT = ".";
-
- private static final String STATE = "state";
- private static final String PRIORITY = "priority";
- private static final String DESCRIPTION = "description";
- private static final String NAME = "name";
- private static final String OWNER = "owner";
- private static final String WORKBASKET_ID = "workbasketId";
- private static final String CUSTOM = "custom";
- private static final String IS_TRANSFERRED = "isTransferred";
- private static final String IS_READ = "isRead";
-
- private static final String CLASSIFICATION_KEY = CLASSIFICATION + DOT + "key";
-
- private static final String POR_VALUE = POR + DOT + "value";
- private static final String POR_TYPE = POR + DOT + "type";
- private static final String POR_SYSTEM_INSTANCE = POR + DOT + "systemInstance";
- private static final String POR_SYSTEM = POR + DOT + "system";
- private static final String POR_COMPANY = POR + DOT + "company";
-
- private static final String CLAIMED = "CLAIMED";
- private static final String COMPLETED = "COMPLETED";
- private static final String READY = "READY";
- private static final String COMMA = ",";
-
- @Autowired
- private TaskService taskService;
-
- public List getAll() {
- return taskService.createTaskQuery().list();
- }
-
- public List inspectParams(MultiValueMap params)
- throws InvalidArgumentException {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Entry to inspectParams(params= {})", params);
- }
-
- TaskQuery taskQuery = taskService.createTaskQuery();
-
- // apply filters
- if (params.containsKey(NAME)) {
- String[] names = extractCommaSeperatedFields(params.get(NAME));
- taskQuery.nameIn(names);
- }
- if (params.containsKey(DESCRIPTION)) {
- taskQuery.descriptionLike(params.get(DESCRIPTION).get(0));
- }
- if (params.containsKey(PRIORITY)) {
- String[] prioritesInString = extractCommaSeperatedFields(params.get(PRIORITY));
- int[] priorites = extractPriorities(prioritesInString);
- taskQuery.priorityIn(priorites);
- }
- if (params.containsKey(STATE)) {
- TaskState[] states = extractStates(params);
- taskQuery.stateIn(states);
- }
- if (params.containsKey(CLASSIFICATION_KEY)) {
- String[] classificationKeys = extractCommaSeperatedFields(params.get(CLASSIFICATION_KEY));
- taskQuery.classificationKeyIn(classificationKeys);
- }
- if (params.containsKey(WORKBASKET_ID)) {
- String[] workbaskets = extractCommaSeperatedFields(params.get(WORKBASKET_ID));
- taskQuery.workbasketIdIn(workbaskets);
- }
- if (params.containsKey(OWNER)) {
- String[] owners = extractCommaSeperatedFields(params.get(OWNER));
- taskQuery.ownerIn(owners);
- }
- // objectReference
- if (params.keySet().stream().filter(s -> s.startsWith(POR)).toArray().length > 0) {
- if (params.containsKey(POR_COMPANY)) {
- String[] companies = extractCommaSeperatedFields(params.get(POR_COMPANY));
- taskQuery.primaryObjectReferenceCompanyIn(companies);
- }
- if (params.containsKey(POR_SYSTEM)) {
- String[] systems = extractCommaSeperatedFields(params.get(POR_SYSTEM));
- taskQuery.primaryObjectReferenceSystemIn(systems);
- }
- if (params.containsKey(POR_SYSTEM_INSTANCE)) {
- String[] systemInstances = extractCommaSeperatedFields(params.get(POR_SYSTEM_INSTANCE));
- taskQuery.primaryObjectReferenceSystemInstanceIn(systemInstances);
- }
- if (params.containsKey(POR_TYPE)) {
- String[] types = extractCommaSeperatedFields(params.get(POR_TYPE));
- taskQuery.primaryObjectReferenceTypeIn(types);
- }
- if (params.containsKey(POR_VALUE)) {
- String[] values = extractCommaSeperatedFields(params.get(POR_VALUE));
- taskQuery.primaryObjectReferenceValueIn(values);
- }
- }
- if (params.containsKey(IS_READ)) {
- taskQuery.readEquals(Boolean.getBoolean(params.get(IS_READ).get(0)));
- }
- if (params.containsKey(IS_TRANSFERRED)) {
- taskQuery.transferredEquals(Boolean.getBoolean(params.get(IS_TRANSFERRED).get(0)));
- }
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Exit from inspectParams(), returning {}", LoggerUtils.listToString(taskQuery.list()));
- }
-
- return taskQuery.list();
- }
-
- private int[] extractPriorities(String[] prioritesInString) {
- int[] priorites = new int[prioritesInString.length];
- for (int i = 0; i < prioritesInString.length; i++) {
- priorites[i] = Integer.getInteger(prioritesInString[i]);
- }
- return priorites;
- }
-
- private String[] extractCommaSeperatedFields(List list) {
- List values = new ArrayList<>();
- list.forEach(item -> values.addAll(Arrays.asList(item.split(COMMA))));
- return values.toArray(new String[0]);
- }
-
- private TaskState[] extractStates(MultiValueMap params) throws InvalidArgumentException {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Entry to extractStates(params= {})", params);
- }
-
- List states = new ArrayList<>();
- for (String item : params.get(STATE)) {
- for (String state : item.split(COMMA)) {
- switch (state) {
- case READY:
- states.add(TaskState.READY);
- break;
- case COMPLETED:
- states.add(TaskState.COMPLETED);
- break;
- case CLAIMED:
- states.add(TaskState.CLAIMED);
- break;
- default:
- throw new InvalidArgumentException("Unknown status '" + state + "'");
- }
- }
- }
- LOGGER.debug("Exit from extractStates()");
- return states.toArray(new TaskState[0]);
- }
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AbstractRessourcesAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AbstractRessourcesAssembler.java
index d52a2abd8..8d3868eea 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AbstractRessourcesAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AbstractRessourcesAssembler.java
@@ -1,59 +1,69 @@
package pro.taskana.rest.resource;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
import org.springframework.hateoas.Link;
import org.springframework.hateoas.PagedResources;
-import org.springframework.hateoas.PagedResources.PageMetadata;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import org.springframework.web.util.UriComponentsBuilder;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Iterator;
+import java.util.Map;
+
+
/**
- * Base assembler for paged list resources.
+ * Abstract resources assembler for taskana REST controller with pageable resources.
+ * This method is deprecated, it can be removed after fixing taskana-simple-history references
*/
+@Deprecated
public abstract class AbstractRessourcesAssembler {
- UriComponentsBuilder original;
+ UriComponentsBuilder original = getBuilderForOriginalUri();
public AbstractRessourcesAssembler() {
- original = getBuilderForOriginalUri();
}
protected static UriComponentsBuilder getBuilderForOriginalUri() {
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
- .getRequest();
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
UriComponentsBuilder baseUri = ServletUriComponentsBuilder.fromServletMapping(request)
.path(request.getRequestURI());
- for (Map.Entry entry : request.getParameterMap().entrySet()) {
- for (String value : entry.getValue()) {
- baseUri.queryParam(entry.getKey(), value);
+ Iterator var2 = request.getParameterMap().entrySet().iterator();
+
+ while (var2.hasNext()) {
+ Map.Entry entry = (Map.Entry) var2.next();
+ String[] var4 = (String[]) entry.getValue();
+ int var5 = var4.length;
+
+ for (int var6 = 0; var6 < var5; ++var6) {
+ String value = var4[var6];
+ baseUri.queryParam((String) entry.getKey(), new Object[] {value});
}
}
- UriComponentsBuilder original = baseUri;
- return original;
+
+ return baseUri;
}
- protected PagedResources> addPageLinks(PagedResources> pagedResources, PageMetadata pageMetadata) {
+ protected PagedResources> addPageLinks(PagedResources> pagedResources,
+ PagedResources.PageMetadata pageMetadata) {
UriComponentsBuilder original = getBuilderForOriginalUri();
- pagedResources.add(new Link(original.replaceQueryParam("page", 1).toUriString()).withRel(Link.REL_FIRST));
- pagedResources.add(new Link(original.replaceQueryParam("page", pageMetadata.getTotalPages()).toUriString())
- .withRel(Link.REL_LAST));
- if (pageMetadata.getNumber() > 1) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() - 1).toUriString())
- .withRel(Link.REL_PREVIOUS));
+ pagedResources.add(
+ (new Link(original.replaceQueryParam("page", new Object[] {1}).toUriString())).withRel("first"));
+ pagedResources.add((new Link(
+ original.replaceQueryParam("page", new Object[] {pageMetadata.getTotalPages()}).toUriString())).withRel(
+ "last"));
+ if (pageMetadata.getNumber() > 1L) {
+ pagedResources.add((new Link(
+ original.replaceQueryParam("page", new Object[] {pageMetadata.getNumber() - 1L})
+ .toUriString())).withRel("prev"));
}
+
if (pageMetadata.getNumber() < pageMetadata.getTotalPages()) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() + 1).toUriString())
- .withRel(Link.REL_NEXT));
+ pagedResources.add((new Link(
+ original.replaceQueryParam("page", new Object[] {pageMetadata.getNumber() + 1L})
+ .toUriString())).withRel("next"));
}
return pagedResources;
}
-
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResource.java
index 1609fb19c..341675485 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResource.java
@@ -5,12 +5,14 @@ import java.util.Map;
import org.springframework.hateoas.ResourceSupport;
+import pro.taskana.Attachment;
import pro.taskana.ObjectReference;
/**
* Resource class for {@link pro.taskana.Attachment}.
*/
public class AttachmentResource extends ResourceSupport {
+
private String attachmentId;
private String taskId;
private String created;
@@ -20,6 +22,21 @@ public class AttachmentResource extends ResourceSupport {
private String channel;
private String received;
+ public AttachmentResource() {
+ }
+
+ public AttachmentResource(Attachment attachment) {
+ this.attachmentId = attachment.getId();
+ this.taskId = attachment.getTaskId();
+ this.created = attachment.getCreated() != null ? attachment.getCreated().toString() : null;
+ this.modified = attachment.getModified() != null ? attachment.getModified().toString() : null;
+ this.classificationSummaryResource = new ClassificationSummaryResource(attachment.getClassificationSummary());
+ this.objectReference = attachment.getObjectReference();
+ this.channel = attachment.getChannel();
+ this.received = attachment.getReceived() != null ? attachment.getReceived().toString() : null;
+ this.customAttributes = attachment.getCustomAttributes();
+ }
+
public String getCreated() {
return created;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResourceAssembler.java
new file mode 100644
index 000000000..44ce786b4
--- /dev/null
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResourceAssembler.java
@@ -0,0 +1,51 @@
+package pro.taskana.rest.resource;
+
+import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
+import org.springframework.stereotype.Component;
+
+import pro.taskana.Attachment;
+import pro.taskana.TaskService;
+import pro.taskana.impl.AttachmentImpl;
+import pro.taskana.rest.AttachmentController;
+
+/**
+ * Resource assembler for {@link AttachmentResource}.
+ */
+@Component
+public class AttachmentResourceAssembler extends ResourceAssemblerSupport {
+
+ @Autowired
+ private TaskService taskService;
+
+ @Autowired
+ private ClassificationSummaryResourceAssembler classificationAssembler;
+
+ public AttachmentResourceAssembler() {
+ super(AttachmentController.class, AttachmentResource.class);
+ }
+
+ @Override
+ public AttachmentResource toResource(Attachment attachment) {
+ AttachmentResource resource = new AttachmentResource(attachment);
+ resource.add(linkTo(AttachmentController.class).slash(attachment.getId()).withSelfRel());
+ return resource;
+ }
+
+ public List toModel(List resources) {
+ return resources.stream().map(attachmentResource -> {
+ AttachmentImpl attachment = (AttachmentImpl) taskService.newAttachment();
+ BeanUtils.copyProperties(attachmentResource, attachment);
+ attachment.setId(attachmentResource.getAttachmentId());
+ attachment.setClassificationSummary(
+ classificationAssembler.toModel(attachmentResource.getClassificationSummary()));
+ return attachment;
+ }).collect(Collectors.toList());
+ }
+}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResourcesAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResourcesAssembler.java
deleted file mode 100644
index 2ec5b8e8d..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentResourcesAssembler.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package pro.taskana.rest.resource;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import pro.taskana.Attachment;
-import pro.taskana.TaskService;
-import pro.taskana.impl.AttachmentImpl;
-
-/**
- * Resource assembler for {@link AttachmentResource}.
- */
-@Component
-public class AttachmentResourcesAssembler {
-
- @Autowired
- private TaskService taskService;
-
- @Autowired
- private ClassificationSummaryResourceAssembler classificationAssembler;
-
- public List toResources(List attachments) {
- List resourceList = new ArrayList<>();
- for (Attachment a : attachments) {
- AttachmentResource resource = new AttachmentResource();
- BeanUtils.copyProperties(a, resource);
- if (a.getCreated() != null) {
- resource.setCreated(a.getCreated().toString());
- }
- if (a.getModified() != null) {
- resource.setModified(a.getModified().toString());
- }
- if (a.getReceived() != null) {
- resource.setReceived(a.getReceived().toString());
- }
- resource.setAttachmentId(a.getId());
- resource.setClassificationSummary(
- classificationAssembler.toResource(a.getClassificationSummary()));
- resourceList.add(resource);
- }
-
- return resourceList;
- }
-
- public List toModel(List resources) {
-
- List attachmentList = new ArrayList<>();
- for (AttachmentResource ar : resources) {
- AttachmentImpl attachment = (AttachmentImpl) taskService.newAttachment();
- BeanUtils.copyProperties(ar, attachment);
- attachment.setId(ar.getAttachmentId());
- attachment.setClassificationSummary(
- classificationAssembler.toModel(ar.getClassificationSummary()));
- attachmentList.add(attachment);
- }
-
- return attachmentList;
- }
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResource.java
index 267efa8fa..0333d28e3 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResource.java
@@ -2,6 +2,7 @@ package pro.taskana.rest.resource;
import org.springframework.hateoas.ResourceSupport;
+import pro.taskana.AttachmentSummary;
import pro.taskana.ObjectReference;
/**
@@ -12,12 +13,27 @@ public class AttachmentSummaryResource extends ResourceSupport {
private String attachmentId;
private String taskId;
private String created;
- private String modified;
+ private String modified;
private ClassificationSummaryResource classificationSummaryResource;
private ObjectReference objectReference;
private String channel;
private String received;
+ AttachmentSummaryResource() {
+ }
+
+ public AttachmentSummaryResource(AttachmentSummary attachmentSummary) {
+ this.attachmentId = attachmentSummary.getId();
+ this.taskId = attachmentSummary.getTaskId();
+ this.created = attachmentSummary.getCreated() != null ? attachmentSummary.getCreated().toString() : null;
+ this.modified = attachmentSummary.getModified() != null ? attachmentSummary.getModified().toString() : null;
+ this.classificationSummaryResource = new ClassificationSummaryResource(
+ attachmentSummary.getClassificationSummary());
+ this.objectReference = attachmentSummary.getObjectReference();
+ this.channel = attachmentSummary.getChannel();
+ this.received = attachmentSummary.getReceived() != null ? attachmentSummary.getReceived().toString() : null;
+ }
+
public String getAttachmentId() {
return attachmentId;
}
@@ -41,6 +57,7 @@ public class AttachmentSummaryResource extends ResourceSupport {
public void setCreated(String created) {
this.created = created;
}
+
public String getModified() {
return modified;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResourceAssembler.java
index b2cb49742..17a516ab6 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResourceAssembler.java
@@ -1,6 +1,7 @@
package pro.taskana.rest.resource;
-import org.springframework.beans.BeanUtils;
+import java.util.List;
+
import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
import org.springframework.stereotype.Component;
@@ -20,19 +21,12 @@ public class AttachmentSummaryResourceAssembler
@Override
public AttachmentSummaryResource toResource(AttachmentSummary attachmentSummary) {
- AttachmentSummaryResource resource = createResourceWithId(attachmentSummary.getId(),
- attachmentSummary);
- BeanUtils.copyProperties(attachmentSummary, resource);
- if (attachmentSummary.getCreated() != null) {
- resource.setCreated(attachmentSummary.getCreated().toString());
- }
- if (attachmentSummary.getModified() != null) {
- resource.setModified(attachmentSummary.getModified().toString());
- }
- if (attachmentSummary.getReceived() != null) {
- resource.setReceived(attachmentSummary.getReceived().toString());
- }
- resource.setAttachmentId(attachmentSummary.getId());
- return resource;
+ return new AttachmentSummaryResource(attachmentSummary);
+ }
+
+ public List toResources(
+ List attachmentSummaries) {
+ List resources = super.toResources(attachmentSummaries);
+ return resources;
}
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResourcesAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResourcesAssembler.java
deleted file mode 100644
index 11e718edb..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AttachmentSummaryResourcesAssembler.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package pro.taskana.rest.resource;
-
-import java.util.List;
-import pro.taskana.AttachmentSummary;
-
-/**
- * Resources assembler for {@link AttachmentSummaryResource}.
- */
-public class AttachmentSummaryResourcesAssembler {
-
- public List toResources(
- List attachmentSummaries) {
- AttachmentSummaryResourceAssembler assembler = new AttachmentSummaryResourceAssembler();
- List resources = assembler.toResources(attachmentSummaries);
- return resources;
- }
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResource.java
index b8f5403db..f44149a7b 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResource.java
@@ -1,13 +1,19 @@
package pro.taskana.rest.resource;
+import javax.validation.constraints.NotNull;
+
import org.springframework.hateoas.ResourceSupport;
+import pro.taskana.Classification;
+
/**
* Resource class for {@link pro.taskana.Classification}.
*/
public class ClassificationResource extends ResourceSupport {
+ @NotNull
public String classificationId;
+ @NotNull
public String key;
public String parentId;
public String parentKey;
@@ -31,12 +37,33 @@ public class ClassificationResource extends ResourceSupport {
public String custom7;
public String custom8;
- public Boolean getIsValidInDomain() {
- return isValidInDomain;
+ public ClassificationResource() {
}
- public void setIsValidInDomain(Boolean isValidInDomain) {
- this.isValidInDomain = isValidInDomain;
+ public ClassificationResource(Classification classification) {
+ this.classificationId = classification.getId();
+ this.key = classification.getKey();
+ this.parentId = classification.getParentId();
+ this.parentKey = classification.getParentKey();
+ this.category = classification.getCategory();
+ this.type = classification.getType();
+ this.domain = classification.getDomain();
+ this.isValidInDomain = classification.getIsValidInDomain();
+ this.created = classification.getCreated() != null ? classification.getCreated().toString() : null;
+ this.modified = classification.getModified() != null ? classification.getModified().toString() : null;
+ this.name = classification.getName();
+ this.description = classification.getDescription();
+ this.priority = classification.getPriority();
+ this.serviceLevel = classification.getServiceLevel();
+ this.applicationEntryPoint = classification.getApplicationEntryPoint();
+ this.custom1 = classification.getCustom1();
+ this.custom2 = classification.getCustom2();
+ this.custom3 = classification.getCustom3();
+ this.custom4 = classification.getCustom4();
+ this.custom5 = classification.getCustom5();
+ this.custom6 = classification.getCustom6();
+ this.custom7 = classification.getCustom7();
+ this.custom8 = classification.getCustom8();
}
public String getClassificationId() {
@@ -95,6 +122,14 @@ public class ClassificationResource extends ResourceSupport {
this.domain = domain;
}
+ public Boolean getIsValidInDomain() {
+ return isValidInDomain;
+ }
+
+ public void setIsValidInDomain(Boolean validInDomain) {
+ isValidInDomain = validInDomain;
+ }
+
public String getCreated() {
return created;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResourceAssembler.java
index d71f1c3e9..17ec22949 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationResourceAssembler.java
@@ -1,22 +1,16 @@
package pro.taskana.rest.resource;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
import java.time.Instant;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
import org.springframework.stereotype.Component;
import pro.taskana.Classification;
import pro.taskana.ClassificationService;
-import pro.taskana.exceptions.ClassificationAlreadyExistException;
-import pro.taskana.exceptions.ClassificationNotFoundException;
-import pro.taskana.exceptions.ConcurrencyException;
-import pro.taskana.exceptions.DomainNotFoundException;
-import pro.taskana.exceptions.InvalidArgumentException;
-import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.ClassificationImpl;
import pro.taskana.rest.ClassificationController;
@@ -24,22 +18,24 @@ import pro.taskana.rest.ClassificationController;
* Transforms {@link Classification} to its resource counterpart {@link ClassificationResource} and vice versa.
*/
@Component
-public class ClassificationResourceAssembler {
+public class ClassificationResourceAssembler extends ResourceAssemblerSupport {
@Autowired
ClassificationService classificationService;
- public ClassificationResource toResource(Classification classification)
- throws InvalidArgumentException, ConcurrencyException, ClassificationNotFoundException, DomainNotFoundException,
- ClassificationAlreadyExistException, NotAuthorizedException {
- return this.createResource(classification);
+ public ClassificationResourceAssembler() {
+ super(ClassificationController.class, ClassificationResource.class);
}
- public ClassificationResource toDefinition(Classification classification)
- throws InvalidArgumentException, ConcurrencyException, ClassificationNotFoundException, DomainNotFoundException,
- ClassificationAlreadyExistException, NotAuthorizedException {
- ClassificationResource resource = this.createResource(classification);
- resource.removeLinks();
+ public ClassificationResource toResource(Classification classification) {
+ ClassificationResource resource = new ClassificationResource(classification);
+ resource.add(linkTo(ClassificationController.class).slash(classification.getId()).withSelfRel());
+ return resource;
+ }
+
+ public ClassificationResource toDefinition(Classification classification) {
+ ClassificationResource resource = new ClassificationResource(classification);
+ resource.add(linkTo(ClassificationController.class).slash(classification.getId()).withSelfRel());
return resource;
}
@@ -58,28 +54,4 @@ public class ClassificationResourceAssembler {
return classification;
}
- private ClassificationResource createResource(Classification classification)
- throws NotAuthorizedException, ConcurrencyException, InvalidArgumentException, DomainNotFoundException,
- ClassificationAlreadyExistException, ClassificationNotFoundException {
- ClassificationResource resource = new ClassificationResource();
- BeanUtils.copyProperties(classification, resource);
- // need to be set by hand, because they are named different, or have different types
- resource.setClassificationId(classification.getId());
- if (classification.getCreated() != null) {
- resource.setCreated(classification.getCreated().toString());
- }
- if (classification.getModified() != null) {
- resource.setModified(classification.getModified().toString());
- }
- return addLinks(resource, classification);
- }
-
- private ClassificationResource addLinks(ClassificationResource resource, Classification classification)
- throws ClassificationNotFoundException, NotAuthorizedException, ClassificationAlreadyExistException,
- ConcurrencyException, DomainNotFoundException, InvalidArgumentException {
- resource.add(
- linkTo(methodOn(ClassificationController.class).getClassification(classification.getId()))
- .withSelfRel());
- return resource;
- }
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResource.java
index 9289bfb6b..105d02f53 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResource.java
@@ -2,8 +2,10 @@ package pro.taskana.rest.resource;
import org.springframework.hateoas.ResourceSupport;
+import pro.taskana.ClassificationSummary;
+
/**
- * Resource class for {@link pro.taskana.Classification}.
+ * Resource class for {@link pro.taskana.ClassificationSummary}.
*/
public class ClassificationSummaryResource extends ResourceSupport {
@@ -25,6 +27,29 @@ public class ClassificationSummaryResource extends ResourceSupport {
public String custom7;
public String custom8;
+ ClassificationSummaryResource() {
+ }
+
+ public ClassificationSummaryResource(ClassificationSummary classification) {
+ classificationId = classification.getId();
+ key = classification.getKey();
+ parentId = classification.getParentId();
+ parentKey = classification.getParentKey();
+ category = classification.getCategory();
+ type = classification.getType();
+ domain = classification.getDomain();
+ name = classification.getName();
+ priority = classification.getPriority();
+ custom1 = classification.getCustom1();
+ custom2 = classification.getCustom2();
+ custom3 = classification.getCustom3();
+ custom4 = classification.getCustom4();
+ custom5 = classification.getCustom5();
+ custom6 = classification.getCustom6();
+ custom7 = classification.getCustom7();
+ custom8 = classification.getCustom8();
+ }
+
public String getClassificationId() {
return classificationId;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResourceAssembler.java
index b64cc3140..4e9688a7a 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResourceAssembler.java
@@ -1,7 +1,10 @@
package pro.taskana.rest.resource;
+import java.util.Collection;
+
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.hateoas.PagedResources;
import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
import org.springframework.stereotype.Component;
@@ -9,6 +12,7 @@ import pro.taskana.ClassificationService;
import pro.taskana.ClassificationSummary;
import pro.taskana.impl.ClassificationImpl;
import pro.taskana.rest.ClassificationController;
+import pro.taskana.rest.resource.links.PageLinks;
/**
* Resource assembler for {@link ClassificationSummaryResource}.
@@ -26,12 +30,7 @@ public class ClassificationSummaryResourceAssembler
@Override
public ClassificationSummaryResource toResource(ClassificationSummary classificationSummary) {
- ClassificationSummaryResource resource = createResourceWithId(classificationSummary.getId(),
- classificationSummary);
- BeanUtils.copyProperties(classificationSummary, resource);
- // named different so needs to be set by hand
- resource.setClassificationId(classificationSummary.getId());
- return resource;
+ return new ClassificationSummaryResource(classificationSummary);
}
public ClassificationSummary toModel(ClassificationSummaryResource resource) {
@@ -44,4 +43,9 @@ public class ClassificationSummaryResourceAssembler
return classification.asSummary();
}
+ @PageLinks(ClassificationController.class)
+ public PagedResources toResources(Collection entities,
+ PagedResources.PageMetadata pageMetadata) {
+ return new PagedResources<>(toResources(entities), pageMetadata);
+ }
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResourcesAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResourcesAssembler.java
deleted file mode 100644
index 04a71cdea..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ClassificationSummaryResourcesAssembler.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package pro.taskana.rest.resource;
-
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
-import static pro.taskana.rest.resource.AbstractRessourcesAssembler.getBuilderForOriginalUri;
-
-import java.util.List;
-
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.PagedResources;
-import org.springframework.hateoas.PagedResources.PageMetadata;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import pro.taskana.ClassificationSummary;
-import pro.taskana.rest.ClassificationController;
-
-/**
- * @author HH
- */
-public class ClassificationSummaryResourcesAssembler {
-
- public ClassificationSummaryResourcesAssembler() {
- }
-
- public PagedResources toResources(
- List classificationSummaries,
- PageMetadata pageMetadata) {
-
- ClassificationSummaryResourceAssembler assembler = new ClassificationSummaryResourceAssembler();
- List resources = assembler.toResources(classificationSummaries);
- PagedResources pagedResources = new PagedResources(
- resources,
- pageMetadata);
-
- UriComponentsBuilder original = getBuilderForOriginalUri();
- pagedResources.add(new Link(original.toUriString()).withSelfRel());
- if (pageMetadata != null) {
- pagedResources.add(linkTo(ClassificationController.class).withRel("allClassifications"));
- pagedResources.add(new Link(original.replaceQueryParam("page", 1).toUriString()).withRel(Link.REL_FIRST));
- pagedResources.add(new Link(original.replaceQueryParam("page", pageMetadata.getTotalPages()).toUriString())
- .withRel(Link.REL_LAST));
- if (pageMetadata.getNumber() > 1) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() - 1).toUriString())
- .withRel(Link.REL_PREVIOUS));
- }
- if (pageMetadata.getNumber() < pageMetadata.getTotalPages()) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() + 1).toUriString())
- .withRel(Link.REL_NEXT));
- }
- }
-
- return pagedResources;
- }
-
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetListAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetListAssembler.java
deleted file mode 100644
index 56cfc0f65..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetListAssembler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package pro.taskana.rest.resource;
-
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.Resources;
-import org.springframework.stereotype.Component;
-
-import pro.taskana.WorkbasketSummary;
-import pro.taskana.exceptions.NotAuthorizedException;
-import pro.taskana.exceptions.WorkbasketNotFoundException;
-import pro.taskana.rest.WorkbasketController;
-
-/**
- * Mapper to convert from a list of WorkbasketSummary to a workbasket list resource.
- */
-@Component
-public class DistributionTargetListAssembler {
-
- @Autowired
- private DistributionTargetResourceAssembler distributionTargetResourceAssembler;
-
- public Resources toResource(String workbasketId,
- Collection distributionTargets) throws WorkbasketNotFoundException, NotAuthorizedException {
- List resourceList = new ArrayList<>();
- for (WorkbasketSummary wb : distributionTargets) {
- resourceList.add(distributionTargetResourceAssembler.toResource(wb));
- }
- Resources distributionTargetListResource = new Resources<>(resourceList);
-
- distributionTargetListResource
- .add(linkTo(methodOn(WorkbasketController.class).getDistributionTargets(workbasketId))
- .withSelfRel());
- distributionTargetListResource
- .add(linkTo(methodOn(WorkbasketController.class).getWorkbasket(workbasketId))
- .withRel("workbasket"));
-
- return distributionTargetListResource;
- }
-
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResource.java
index 6836247c2..c094372c3 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResource.java
@@ -2,10 +2,18 @@ package pro.taskana.rest.resource;
import org.springframework.hateoas.core.Relation;
+import pro.taskana.WorkbasketSummary;
+
/**
* Resource class for a distribution target based on {@link pro.taskana.WorkbasketSummary}.
*/
@Relation(collectionRelation = "distributionTargets")
public class DistributionTargetResource extends WorkbasketSummaryResource {
+ DistributionTargetResource() {
+ }
+
+ DistributionTargetResource(WorkbasketSummary workbasketSummary) {
+ super(workbasketSummary);
+ }
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResourceAssembler.java
index 160393894..02fe20465 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/DistributionTargetResourceAssembler.java
@@ -3,7 +3,10 @@ package pro.taskana.rest.resource;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
-import org.springframework.beans.BeanUtils;
+import java.util.List;
+
+import org.springframework.hateoas.Resources;
+import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
import org.springframework.stereotype.Component;
import pro.taskana.WorkbasketSummary;
@@ -15,21 +18,28 @@ import pro.taskana.rest.WorkbasketController;
* Transforms WorkbasketSummary to its resource counterpart DistributionTargerResource and vice versa.
*/
@Component
-public class DistributionTargetResourceAssembler {
+public class DistributionTargetResourceAssembler extends
+ ResourceAssemblerSupport {
- public DistributionTargetResource toResource(WorkbasketSummary summary)
- throws WorkbasketNotFoundException, NotAuthorizedException {
- DistributionTargetResource resource = new DistributionTargetResource();
- BeanUtils.copyProperties(summary, resource);
- // named different so needs to be set by hand
- resource.setWorkbasketId(summary.getId());
-
- return addLinks(resource, summary);
+ public DistributionTargetResourceAssembler() {
+ super(WorkbasketController.class, DistributionTargetResource.class);
}
- private DistributionTargetResource addLinks(DistributionTargetResource resource, WorkbasketSummary summary)
- throws WorkbasketNotFoundException, NotAuthorizedException {
- resource.add(linkTo(methodOn(WorkbasketController.class).getWorkbasket(summary.getId())).withSelfRel());
- return resource;
+ public DistributionTargetResource toResource(WorkbasketSummary summary) {
+ return new DistributionTargetResource(summary);
}
+
+ public Resources toResources(String workbasketId,
+ List distributionTargets) throws WorkbasketNotFoundException, NotAuthorizedException {
+ Resources distributionTargetListResource = new Resources<>(super.toResources(distributionTargets));
+ distributionTargetListResource
+ .add(linkTo(methodOn(WorkbasketController.class).getDistributionTargets(workbasketId))
+ .withSelfRel());
+ distributionTargetListResource
+ .add(linkTo(methodOn(WorkbasketController.class).getWorkbasket(workbasketId))
+ .withRel("workbasket"));
+
+ return distributionTargetListResource;
+ }
+
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ReportAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ReportResourceAssembler.java
similarity index 99%
rename from rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ReportAssembler.java
rename to rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ReportResourceAssembler.java
index b97f911f4..1af4c121e 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ReportAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/ReportResourceAssembler.java
@@ -32,7 +32,7 @@ import pro.taskana.rest.MonitorController;
* Transforms any {@link Report} into its {@link ReportResource}.
*/
@Component
-public class ReportAssembler {
+public class ReportResourceAssembler {
public ReportResource toResource(TaskStatusReport report, List domains, List states)
throws NotAuthorizedException, InvalidArgumentException {
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResource.java
index 4d809a438..76b6af45e 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResource.java
@@ -3,11 +3,14 @@ package pro.taskana.rest.resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.stream.Collectors;
import org.springframework.hateoas.ResourceSupport;
import pro.taskana.ObjectReference;
+import pro.taskana.Task;
import pro.taskana.TaskState;
+import pro.taskana.exceptions.InvalidArgumentException;
/**
* Resource class for {@link pro.taskana.Task}.
@@ -57,6 +60,64 @@ public class TaskResource extends ResourceSupport {
private String custom15;
private String custom16;
+ public TaskResource() {
+ }
+
+ public TaskResource(Task task) throws InvalidArgumentException {
+
+ taskId = task.getId();
+ externalId = task.getExternalId();
+ created = task.getCreated() != null ? task.getCreated().toString() : null;
+ claimed = task.getClaimed() != null ? task.getClaimed().toString() : null;
+ completed = task.getCompleted() != null ? task.getCompleted().toString() : null;
+ modified = task.getModified() != null ? task.getModified().toString() : null;
+ planned = task.getPlanned() != null ? task.getPlanned().toString() : null;
+ due = task.getDue() != null ? task.getDue().toString() : null;
+ name = task.getName();
+ creator = task.getCreator();
+ description = task.getDescription();
+ note = task.getNote();
+ priority = task.getPriority();
+ state = task.getState();
+ classificationSummaryResource = new ClassificationSummaryResource(task.getClassificationSummary());
+ workbasketSummaryResource = new WorkbasketSummaryResource(task.getWorkbasketSummary());
+ businessProcessId = task.getBusinessProcessId();
+ parentBusinessProcessId = task.getParentBusinessProcessId();
+ owner = task.getOwner();
+ primaryObjRef = task.getPrimaryObjRef();
+ isRead = task.isRead();
+ isTransferred = task.isTransferred();
+ customAttributes = task.getCustomAttributes().entrySet().stream()
+ .map(e -> new TaskResource.CustomAttribute(e.getKey(), e.getValue()))
+ .collect(Collectors.toList());
+ callbackInfo = task.getCallbackInfo().entrySet().stream()
+ .map(e -> new TaskResource.CustomAttribute(e.getKey(), e.getValue()))
+ .collect(Collectors.toList());
+
+ attachments =
+ task.getAttachments()
+ .stream()
+ .map(attachment -> new AttachmentResource(attachment))
+ .collect(Collectors.toList());
+ custom1 = task.getCustomAttribute("1");
+ custom2 = task.getCustomAttribute("2");
+ custom3 = task.getCustomAttribute("3");
+ custom4 = task.getCustomAttribute("4");
+ custom5 = task.getCustomAttribute("5");
+ custom6 = task.getCustomAttribute("6");
+ custom7 = task.getCustomAttribute("7");
+ custom8 = task.getCustomAttribute("8");
+ custom9 = task.getCustomAttribute("9");
+ custom10 = task.getCustomAttribute("10");
+ custom11 = task.getCustomAttribute("11");
+ custom12 = task.getCustomAttribute("12");
+ custom13 = task.getCustomAttribute("13");
+ custom14 = task.getCustomAttribute("14");
+ custom15 = task.getCustomAttribute("15");
+ custom16 = task.getCustomAttribute("16");
+
+ }
+
public String getTaskId() {
return taskId;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResourceAssembler.java
index 08a36ece5..495587fa2 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskResourceAssembler.java
@@ -1,5 +1,7 @@
package pro.taskana.rest.resource;
+import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
+
import java.time.Instant;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -33,7 +35,7 @@ public class TaskResourceAssembler
private WorkbasketSummaryResourceAssembler workbasketAssembler;
@Autowired
- private AttachmentResourcesAssembler attachmentAssembler;
+ private AttachmentResourceAssembler attachmentAssembler;
public TaskResourceAssembler() {
super(TaskController.class, TaskResource.class);
@@ -41,88 +43,13 @@ public class TaskResourceAssembler
@Override
public TaskResource toResource(Task task) {
- TaskResource resource = createResourceWithId(task.getId(), task);
- BeanUtils.copyProperties(task, resource);
- resource.setTaskId(task.getId());
- resource.setExternalId(task.getExternalId());
- if (task.getCreated() != null) {
- resource.setCreated(task.getCreated().toString());
- }
- if (task.getModified() != null) {
- resource.setModified(task.getModified().toString());
- }
- if (task.getClaimed() != null) {
- resource.setClaimed(task.getClaimed().toString());
- }
- if (task.getCompleted() != null) {
- resource.setCompleted(task.getCompleted().toString());
- }
- if (task.getDue() != null) {
- resource.setDue(task.getDue().toString());
- }
- resource.setClassificationSummaryResource(
- classificationAssembler.toResource(task.getClassificationSummary()));
- resource.setWorkbasketSummaryResource(workbasketAssembler.toResource(task.getWorkbasketSummary()));
- resource.setAttachments(attachmentAssembler.toResources(task.getAttachments()));
- resource.setCustomAttributes(task.getCustomAttributes().entrySet().stream()
- .map(e -> new TaskResource.CustomAttribute(e.getKey(), e.getValue()))
- .collect(Collectors.toList()));
- resource.setCallbackInfo(task.getCallbackInfo().entrySet().stream()
- .map(e -> new TaskResource.CustomAttribute(e.getKey(), e.getValue()))
- .collect(Collectors.toList()));
+ TaskResource resource;
try {
- if (task.getCustomAttribute("1") != null) {
- resource.setCustom1(task.getCustomAttribute("1"));
- }
- if (task.getCustomAttribute("2") != null) {
- resource.setCustom2(task.getCustomAttribute("2"));
- }
- if (task.getCustomAttribute("3") != null) {
- resource.setCustom3(task.getCustomAttribute("3"));
- }
- if (task.getCustomAttribute("4") != null) {
- resource.setCustom4(task.getCustomAttribute("4"));
- }
- if (task.getCustomAttribute("5") != null) {
- resource.setCustom5(task.getCustomAttribute("5"));
- }
- if (task.getCustomAttribute("6") != null) {
- resource.setCustom6(task.getCustomAttribute("6"));
- }
- if (task.getCustomAttribute("7") != null) {
- resource.setCustom7(task.getCustomAttribute("7"));
- }
- if (task.getCustomAttribute("8") != null) {
- resource.setCustom8(task.getCustomAttribute("8"));
- }
- if (task.getCustomAttribute("8") != null) {
- resource.setCustom9(task.getCustomAttribute("9"));
- }
- if (task.getCustomAttribute("10") != null) {
- resource.setCustom10(task.getCustomAttribute("10"));
- }
- if (task.getCustomAttribute("11") != null) {
- resource.setCustom11(task.getCustomAttribute("11"));
- }
- if (task.getCustomAttribute("12") != null) {
- resource.setCustom12(task.getCustomAttribute("12"));
- }
- if (task.getCustomAttribute("13") != null) {
- resource.setCustom13(task.getCustomAttribute("13"));
- }
- if (task.getCustomAttribute("14") != null) {
- resource.setCustom14(task.getCustomAttribute("14"));
- }
- if (task.getCustomAttribute("15") != null) {
- resource.setCustom15(task.getCustomAttribute("15"));
- }
- if (task.getCustomAttribute("16") != null) {
- resource.setCustom16(task.getCustomAttribute("16"));
- }
+ resource = new TaskResource(task);
+ resource.add(linkTo(TaskController.class).slash(task.getId()).withSelfRel());
} catch (InvalidArgumentException e) {
throw new SystemException("caught unexpected Exception.", e.getCause());
}
-
return resource;
}
@@ -156,54 +83,6 @@ public class TaskResourceAssembler
task.setCallbackInfo(resource.getCallbackInfo().stream()
.filter(e -> Objects.nonNull(e.getKey()) && !e.getKey().isEmpty())
.collect(Collectors.toMap(TaskResource.CustomAttribute::getKey, TaskResource.CustomAttribute::getValue)));
- if (resource.getCustom1() != null) {
- task.setCustom1(resource.getCustom1());
- }
- if (resource.getCustom2() != null) {
- task.setCustom2(resource.getCustom2());
- }
- if (resource.getCustom3() != null) {
- task.setCustom3(resource.getCustom3());
- }
- if (resource.getCustom4() != null) {
- task.setCustom4(resource.getCustom4());
- }
- if (resource.getCustom5() != null) {
- task.setCustom5(resource.getCustom5());
- }
- if (resource.getCustom6() != null) {
- task.setCustom6(resource.getCustom6());
- }
- if (resource.getCustom7() != null) {
- task.setCustom7(resource.getCustom7());
- }
- if (resource.getCustom8() != null) {
- task.setCustom8(resource.getCustom8());
- }
- if (resource.getCustom9() != null) {
- task.setCustom9(resource.getCustom9());
- }
- if (resource.getCustom10() != null) {
- task.setCustom10(resource.getCustom10());
- }
- if (resource.getCustom11() != null) {
- task.setCustom11(resource.getCustom11());
- }
- if (resource.getCustom12() != null) {
- task.setCustom12(resource.getCustom12());
- }
- if (resource.getCustom13() != null) {
- task.setCustom13(resource.getCustom13());
- }
- if (resource.getCustom14() != null) {
- task.setCustom14(resource.getCustom14());
- }
- if (resource.getCustom15() != null) {
- task.setCustom15(resource.getCustom15());
- }
- if (resource.getCustom16() != null) {
- task.setCustom16(resource.getCustom16());
- }
return task;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResource.java
index 9b7bae060..026adbc1d 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResource.java
@@ -1,15 +1,16 @@
package pro.taskana.rest.resource;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
-import java.util.Map;
+import java.util.stream.Collectors;
import org.springframework.hateoas.ResourceSupport;
import org.springframework.hateoas.core.Relation;
import pro.taskana.ObjectReference;
import pro.taskana.TaskState;
+import pro.taskana.TaskSummary;
+import pro.taskana.exceptions.InvalidArgumentException;
/**
* Resource class for {@link pro.taskana.WorkbasketSummary}.
@@ -27,7 +28,6 @@ public class TaskSummaryResource extends ResourceSupport {
private String due; // ISO-8601
private String name;
private String creator;
- private String description;
private String note;
private int priority;
private TaskState state;
@@ -39,8 +39,6 @@ public class TaskSummaryResource extends ResourceSupport {
private ObjectReference primaryObjRef;
private boolean isRead;
private boolean isTransferred;
- // All objects have to be serializable
- private Map customAttributes = Collections.emptyMap();
private List attachmentSummaryResources = new ArrayList<>();
private String custom1;
private String custom2;
@@ -59,6 +57,53 @@ public class TaskSummaryResource extends ResourceSupport {
private String custom15;
private String custom16;
+ TaskSummaryResource() {
+ }
+
+ public TaskSummaryResource(TaskSummary taskSummary) throws InvalidArgumentException {
+ this.taskId = taskSummary.getTaskId();
+ this.externalId = taskSummary.getExternalId();
+ created = taskSummary.getCreated() != null ? taskSummary.getCreated().toString() : null;
+ claimed = taskSummary.getClaimed() != null ? taskSummary.getClaimed().toString() : null;
+ completed = taskSummary.getCompleted() != null ? taskSummary.getCompleted().toString() : null;
+ modified = taskSummary.getModified() != null ? taskSummary.getModified().toString() : null;
+ planned = taskSummary.getPlanned() != null ? taskSummary.getPlanned().toString() : null;
+ due = taskSummary.getDue() != null ? taskSummary.getDue().toString() : null;
+ this.name = taskSummary.getName();
+ this.creator = taskSummary.getCreator();
+ this.note = taskSummary.getNote();
+ this.priority = taskSummary.getPriority();
+ this.state = taskSummary.getState();
+ this.classificationSummaryResource = new ClassificationSummaryResource(taskSummary.getClassificationSummary());
+ this.workbasketSummaryResource = new WorkbasketSummaryResource(taskSummary.getWorkbasketSummary());
+ this.businessProcessId = taskSummary.getBusinessProcessId();
+ this.parentBusinessProcessId = taskSummary.getParentBusinessProcessId();
+ this.owner = taskSummary.getOwner();
+ this.primaryObjRef = taskSummary.getPrimaryObjRef();
+ this.isRead = taskSummary.isRead();
+ this.isTransferred = taskSummary.isTransferred();
+ this.attachmentSummaryResources = taskSummary.getAttachmentSummaries()
+ .stream()
+ .map(attachment -> new AttachmentSummaryResource(attachment))
+ .collect(Collectors.toList());
+ this.custom1 = taskSummary.getCustomAttribute("1");
+ this.custom2 = taskSummary.getCustomAttribute("2");
+ this.custom3 = taskSummary.getCustomAttribute("3");
+ this.custom4 = taskSummary.getCustomAttribute("4");
+ this.custom5 = taskSummary.getCustomAttribute("5");
+ this.custom6 = taskSummary.getCustomAttribute("6");
+ this.custom7 = taskSummary.getCustomAttribute("7");
+ this.custom8 = taskSummary.getCustomAttribute("8");
+ this.custom9 = taskSummary.getCustomAttribute("9");
+ this.custom10 = taskSummary.getCustomAttribute("10");
+ this.custom11 = taskSummary.getCustomAttribute("11");
+ this.custom12 = taskSummary.getCustomAttribute("12");
+ this.custom13 = taskSummary.getCustomAttribute("13");
+ this.custom14 = taskSummary.getCustomAttribute("14");
+ this.custom15 = taskSummary.getCustomAttribute("15");
+ this.custom16 = taskSummary.getCustomAttribute("16");
+ }
+
public String getTaskId() {
return taskId;
}
@@ -139,14 +184,6 @@ public class TaskSummaryResource extends ResourceSupport {
this.creator = creator;
}
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
public String getNote() {
return note;
}
@@ -235,14 +272,6 @@ public class TaskSummaryResource extends ResourceSupport {
this.isTransferred = isTransferred;
}
- public Map getCustomAttributes() {
- return customAttributes;
- }
-
- public void setCustomAttributes(Map customAttributes) {
- this.customAttributes = customAttributes;
- }
-
public List getAttachmentSummaries() {
return attachmentSummaryResources;
}
@@ -392,7 +421,6 @@ public class TaskSummaryResource extends ResourceSupport {
+ "due= " + this.due
+ "name= " + this.name
+ "creator= " + this.creator
- + "description= " + this.description
+ "priority= " + this.priority
+ "owner= " + this.owner
+ "]";
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResourceAssembler.java
index 23a644a05..12bba7220 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResourceAssembler.java
@@ -1,104 +1,44 @@
package pro.taskana.rest.resource;
-import org.springframework.beans.BeanUtils;
+import java.util.List;
+
+import org.springframework.hateoas.PagedResources;
import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
+import org.springframework.stereotype.Component;
import pro.taskana.TaskSummary;
import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.SystemException;
import pro.taskana.rest.TaskController;
+import pro.taskana.rest.resource.links.PageLinks;
/**
* Resource assembler for {@link TaskSummaryResource}.
*/
+@Component
public class TaskSummaryResourceAssembler
extends ResourceAssemblerSupport {
- private WorkbasketSummaryResourceAssembler workbasketAssembler = new WorkbasketSummaryResourceAssembler();
- private ClassificationSummaryResourceAssembler classificationAssembler = new ClassificationSummaryResourceAssembler();
- private AttachmentSummaryResourcesAssembler attachmentsAssembler = new AttachmentSummaryResourcesAssembler();
-
public TaskSummaryResourceAssembler() {
super(TaskController.class, TaskSummaryResource.class);
}
@Override
public TaskSummaryResource toResource(TaskSummary taskSummary) {
- TaskSummaryResource resource = createResourceWithId(taskSummary.getTaskId(), taskSummary);
- BeanUtils.copyProperties(taskSummary, resource);
- if (taskSummary.getCreated() != null) {
- resource.setCreated(taskSummary.getCreated().toString());
- }
- if (taskSummary.getModified() != null) {
- resource.setModified(taskSummary.getModified().toString());
- }
- if (taskSummary.getClaimed() != null) {
- resource.setClaimed(taskSummary.getClaimed().toString());
- }
- if (taskSummary.getCompleted() != null) {
- resource.setCompleted(taskSummary.getCompleted().toString());
- }
- if (taskSummary.getDue() != null) {
- resource.setDue(taskSummary.getDue().toString());
- }
- resource.setClassificationSummaryResource(
- classificationAssembler.toResource(taskSummary.getClassificationSummary()));
- resource.setWorkbasketSummaryResource(workbasketAssembler.toResource(taskSummary.getWorkbasketSummary()));
- resource.setAttachmentSummaries(attachmentsAssembler.toResources(taskSummary.getAttachmentSummaries()));
+ TaskSummaryResource resource = null;
try {
- if (taskSummary.getCustomAttribute("1") != null) {
- resource.setCustom1(taskSummary.getCustomAttribute("1"));
- }
- if (taskSummary.getCustomAttribute("2") != null) {
- resource.setCustom2(taskSummary.getCustomAttribute("2"));
- }
- if (taskSummary.getCustomAttribute("3") != null) {
- resource.setCustom3(taskSummary.getCustomAttribute("3"));
- }
- if (taskSummary.getCustomAttribute("4") != null) {
- resource.setCustom4(taskSummary.getCustomAttribute("4"));
- }
- if (taskSummary.getCustomAttribute("5") != null) {
- resource.setCustom5(taskSummary.getCustomAttribute("5"));
- }
- if (taskSummary.getCustomAttribute("6") != null) {
- resource.setCustom6(taskSummary.getCustomAttribute("6"));
- }
- if (taskSummary.getCustomAttribute("7") != null) {
- resource.setCustom7(taskSummary.getCustomAttribute("7"));
- }
- if (taskSummary.getCustomAttribute("8") != null) {
- resource.setCustom8(taskSummary.getCustomAttribute("8"));
- }
- if (taskSummary.getCustomAttribute("8") != null) {
- resource.setCustom9(taskSummary.getCustomAttribute("9"));
- }
- if (taskSummary.getCustomAttribute("10") != null) {
- resource.setCustom10(taskSummary.getCustomAttribute("10"));
- }
- if (taskSummary.getCustomAttribute("11") != null) {
- resource.setCustom11(taskSummary.getCustomAttribute("11"));
- }
- if (taskSummary.getCustomAttribute("12") != null) {
- resource.setCustom12(taskSummary.getCustomAttribute("12"));
- }
- if (taskSummary.getCustomAttribute("13") != null) {
- resource.setCustom13(taskSummary.getCustomAttribute("13"));
- }
- if (taskSummary.getCustomAttribute("14") != null) {
- resource.setCustom14(taskSummary.getCustomAttribute("14"));
- }
- if (taskSummary.getCustomAttribute("15") != null) {
- resource.setCustom15(taskSummary.getCustomAttribute("15"));
- }
- if (taskSummary.getCustomAttribute("16") != null) {
- resource.setCustom16(taskSummary.getCustomAttribute("16"));
- }
+ resource = new TaskSummaryResource(taskSummary);
} catch (InvalidArgumentException e) {
throw new SystemException("caught unexpected Exception.", e.getCause());
+ } finally {
+ return resource;
}
+ }
- return resource;
+ @PageLinks(TaskController.class)
+ public PagedResources toResources(List taskSummaries,
+ PagedResources.PageMetadata pageMetadata) {
+ return new PagedResources<>(toResources(taskSummaries), pageMetadata);
}
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResourcesAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResourcesAssembler.java
deleted file mode 100644
index e0ad8108b..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/TaskSummaryResourcesAssembler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package pro.taskana.rest.resource;
-
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
-
-import java.util.List;
-
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.PagedResources;
-import org.springframework.hateoas.PagedResources.PageMetadata;
-
-import pro.taskana.TaskSummary;
-import pro.taskana.rest.TaskController;
-
-/**
- * Resources assembler for {@link TaskSummaryResource}.
- */
-public class TaskSummaryResourcesAssembler extends AbstractRessourcesAssembler {
-
- public TaskSummaryResourcesAssembler() {
- super();
- }
-
- public PagedResources toResources(List taskSummaries,
- PageMetadata pageMetadata) {
-
- TaskSummaryResourceAssembler assembler = new TaskSummaryResourceAssembler();
- List resources = assembler.toResources(taskSummaries);
- PagedResources pagedResources = new PagedResources(
- resources,
- pageMetadata);
-
- pagedResources.add(new Link(original.toUriString()).withSelfRel());
- if (pageMetadata != null) {
- pagedResources.add(linkTo(TaskController.class).withRel("allTasks"));
- addPageLinks(pagedResources, pageMetadata);
- }
-
- return pagedResources;
- }
-
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemAssembler.java
deleted file mode 100644
index a8e126373..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemAssembler.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package pro.taskana.rest.resource;
-
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
-import static pro.taskana.rest.resource.AbstractRessourcesAssembler.getBuilderForOriginalUri;
-
-import java.util.List;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.PagedResources;
-import org.springframework.stereotype.Component;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import pro.taskana.WorkbasketAccessItem;
-import pro.taskana.WorkbasketService;
-import pro.taskana.exceptions.NotAuthorizedException;
-import pro.taskana.exceptions.WorkbasketNotFoundException;
-import pro.taskana.impl.WorkbasketAccessItemImpl;
-import pro.taskana.rest.WorkbasketController;
-
-/**
- * Transforms {@link WorkbasketAccessItem} to its resource counterpart {@link WorkbasketAccessItemResource} and vice
- * versa.
- */
-@Component
-public class WorkbasketAccessItemAssembler {
-
- @Autowired
- private WorkbasketService workbasketService;
-
- public WorkbasketAccessItemResource toResource(WorkbasketAccessItem wbAccItem)
- throws NotAuthorizedException, WorkbasketNotFoundException {
- WorkbasketAccessItemResource resource = new WorkbasketAccessItemResource();
- BeanUtils.copyProperties(wbAccItem, resource);
- // property is named different, so it needs to be set by hand
- resource.setAccessItemId(wbAccItem.getId());
-
- return addLinks(resource, wbAccItem);
- }
-
- public WorkbasketAccessItem toModel(WorkbasketAccessItemResource wbAccItemRecource) {
- WorkbasketAccessItemImpl wbAccItemModel = (WorkbasketAccessItemImpl) workbasketService.newWorkbasketAccessItem(
- wbAccItemRecource.workbasketId, wbAccItemRecource.accessId);
- BeanUtils.copyProperties(wbAccItemRecource, wbAccItemModel);
-
- wbAccItemModel.setId(wbAccItemRecource.accessItemId);
- return wbAccItemModel;
- }
-
- private WorkbasketAccessItemResource addLinks(WorkbasketAccessItemResource resource, WorkbasketAccessItem wbAccItem)
- throws NotAuthorizedException, WorkbasketNotFoundException {
-
- resource.add(
- linkTo(methodOn(WorkbasketController.class).getWorkbasket(wbAccItem.getWorkbasketId()))
- .withRel("workbasket"));
- return resource;
- }
-
- public PagedResources toResources(List workbasketAccessItems,
- PagedResources.PageMetadata pageMetadata) {
- WorkbasketAccessItemsAssembler assembler = new WorkbasketAccessItemsAssembler();
- List resources = assembler.toResources(workbasketAccessItems);
-
- PagedResources pagedResources = new PagedResources(
- resources,
- pageMetadata);
-
- UriComponentsBuilder original = getBuilderForOriginalUri();
- pagedResources.add(new Link(original.toUriString()).withSelfRel());
- if (pageMetadata != null) {
- pagedResources.add(new Link(original.replaceQueryParam("page", 1).toUriString()).withRel(Link.REL_FIRST));
- pagedResources.add(new Link(original.replaceQueryParam("page", pageMetadata.getTotalPages()).toUriString())
- .withRel(Link.REL_LAST));
- if (pageMetadata.getNumber() > 1) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() - 1).toUriString())
- .withRel(Link.REL_PREVIOUS));
- }
- if (pageMetadata.getNumber() < pageMetadata.getTotalPages()) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() + 1).toUriString())
- .withRel(Link.REL_NEXT));
- }
- }
-
- return pagedResources;
- }
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemListAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemListAssembler.java
deleted file mode 100644
index e65063b4d..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemListAssembler.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package pro.taskana.rest.resource;
-
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.Resources;
-import org.springframework.stereotype.Component;
-
-import pro.taskana.WorkbasketAccessItem;
-import pro.taskana.exceptions.NotAuthorizedException;
-import pro.taskana.exceptions.WorkbasketNotFoundException;
-import pro.taskana.rest.WorkbasketController;
-
-/**
- * Mapper to convert from a list of WorkbasketAccessItem to a WorkbasketAccessItemResource.
- */
-@Component
-public class WorkbasketAccessItemListAssembler {
-
- @Autowired
- private WorkbasketAccessItemAssembler workbasketAccessItemAssembler;
-
- public Resources toResource(String workbasketId,
- Collection accessItems) throws NotAuthorizedException, WorkbasketNotFoundException {
- List resourceList = new ArrayList<>();
- for (WorkbasketAccessItem accessItem : accessItems) {
- resourceList.add(workbasketAccessItemAssembler.toResource(accessItem));
- }
-
- Resources accessItemListResource = new Resources<>(resourceList);
-
- accessItemListResource
- .add(linkTo(methodOn(WorkbasketController.class).getWorkbasketAccessItems(workbasketId))
- .withSelfRel());
- accessItemListResource
- .add(linkTo(methodOn(WorkbasketController.class).getWorkbasket(workbasketId))
- .withRel("workbasket"));
-
- return accessItemListResource;
- }
-
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemResource.java
index c1f7258d0..29c191355 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemResource.java
@@ -5,6 +5,8 @@ import javax.validation.constraints.NotNull;
import org.springframework.hateoas.ResourceSupport;
import org.springframework.hateoas.core.Relation;
+import pro.taskana.WorkbasketAccessItem;
+
/**
* Resource class for {@link pro.taskana.WorkbasketAccessItem}.
*/
@@ -42,6 +44,34 @@ public class WorkbasketAccessItemResource extends ResourceSupport {
public boolean permCustom11;
public boolean permCustom12;
+ public WorkbasketAccessItemResource() {
+ }
+
+ public WorkbasketAccessItemResource(WorkbasketAccessItem workbasketAccessItem) {
+ this.accessItemId = workbasketAccessItem.getId();
+ this.workbasketId = workbasketAccessItem.getWorkbasketId();
+ this.workbasketKey = workbasketAccessItem.getWorkbasketKey();
+ this.accessId = workbasketAccessItem.getAccessId();
+ this.accessName = workbasketAccessItem.getAccessName();
+ this.permRead = workbasketAccessItem.isPermRead();
+ this.permOpen = workbasketAccessItem.isPermOpen();
+ this.permAppend = workbasketAccessItem.isPermAppend();
+ this.permTransfer = workbasketAccessItem.isPermTransfer();
+ this.permDistribute = workbasketAccessItem.isPermDistribute();
+ this.permCustom1 = workbasketAccessItem.isPermCustom1();
+ this.permCustom2 = workbasketAccessItem.isPermCustom2();
+ this.permCustom3 = workbasketAccessItem.isPermCustom3();
+ this.permCustom4 = workbasketAccessItem.isPermCustom4();
+ this.permCustom5 = workbasketAccessItem.isPermCustom5();
+ this.permCustom6 = workbasketAccessItem.isPermCustom6();
+ this.permCustom7 = workbasketAccessItem.isPermCustom7();
+ this.permCustom8 = workbasketAccessItem.isPermCustom8();
+ this.permCustom9 = workbasketAccessItem.isPermCustom9();
+ this.permCustom10 = workbasketAccessItem.isPermCustom10();
+ this.permCustom11 = workbasketAccessItem.isPermCustom11();
+ this.permCustom12 = workbasketAccessItem.isPermCustom12();
+ }
+
public String getAccessItemId() {
return accessItemId;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemResourceAssembler.java
new file mode 100644
index 000000000..5f788e0c7
--- /dev/null
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemResourceAssembler.java
@@ -0,0 +1,71 @@
+package pro.taskana.rest.resource;
+
+import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
+import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
+
+import java.util.List;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.hateoas.PagedResources;
+import org.springframework.hateoas.Resources;
+import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
+import org.springframework.stereotype.Component;
+
+import pro.taskana.WorkbasketAccessItem;
+import pro.taskana.WorkbasketService;
+import pro.taskana.exceptions.NotAuthorizedException;
+import pro.taskana.exceptions.WorkbasketNotFoundException;
+import pro.taskana.impl.WorkbasketAccessItemImpl;
+import pro.taskana.rest.WorkbasketAccessItemController;
+import pro.taskana.rest.WorkbasketController;
+import pro.taskana.rest.resource.links.PageLinks;
+
+/**
+ * Transforms {@link WorkbasketAccessItem} to its resource counterpart {@link WorkbasketAccessItemResource} and vice
+ * versa.
+ */
+@Component
+public class WorkbasketAccessItemResourceAssembler extends
+ ResourceAssemblerSupport {
+
+ @Autowired
+ private WorkbasketService workbasketService;
+ public WorkbasketAccessItemResourceAssembler() {
+ super(WorkbasketController.class, WorkbasketAccessItemResource.class);
+ }
+
+
+ public WorkbasketAccessItemResource toResource(WorkbasketAccessItem wbAccItem) {
+ return new WorkbasketAccessItemResource(wbAccItem);
+ }
+
+ public WorkbasketAccessItem toModel(WorkbasketAccessItemResource wbAccItemResource) {
+ WorkbasketAccessItemImpl wbAccItemModel = (WorkbasketAccessItemImpl) workbasketService.newWorkbasketAccessItem(
+ wbAccItemResource.workbasketId, wbAccItemResource.accessId);
+ BeanUtils.copyProperties(wbAccItemResource, wbAccItemModel);
+
+ wbAccItemModel.setId(wbAccItemResource.accessItemId);
+ return wbAccItemModel;
+ }
+
+
+ @PageLinks(WorkbasketAccessItemController.class)
+ public PagedResources toResources(List entities,
+ PagedResources.PageMetadata pageMetadata) {
+ return new PagedResources<>(toResources(entities), pageMetadata);
+ }
+
+ public Resources toResources(String workbasketId, List entities)
+ throws NotAuthorizedException, WorkbasketNotFoundException {
+ Resources accessItemListResource = new Resources<>(super.toResources(entities));
+ accessItemListResource
+ .add(linkTo(methodOn(WorkbasketController.class).getWorkbasketAccessItems(workbasketId))
+ .withSelfRel());
+ accessItemListResource
+ .add(linkTo(methodOn(WorkbasketController.class).getWorkbasket(workbasketId))
+ .withRel("workbasket"));
+ return accessItemListResource;
+ }
+
+}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemsAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemsAssembler.java
deleted file mode 100644
index 69828a12d..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketAccessItemsAssembler.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package pro.taskana.rest.resource;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
-
-import pro.taskana.WorkbasketAccessItem;
-import pro.taskana.rest.WorkbasketAccessItemController;
-
-/**
- * Mapper to convert from a list of WorkbasketAccessItem to a WorkbasketAccessItemResource.
- */
-public class WorkbasketAccessItemsAssembler
- extends ResourceAssemblerSupport {
-
- public WorkbasketAccessItemsAssembler() {
- super(WorkbasketAccessItemController.class, WorkbasketAccessItemResource.class);
- }
-
- @Override
- public WorkbasketAccessItemResource toResource(WorkbasketAccessItem workbasketAccessItem) {
- WorkbasketAccessItemResource resource = createResourceWithId(workbasketAccessItem.getId(),
- workbasketAccessItem);
- resource.removeLinks();
- BeanUtils.copyProperties(workbasketAccessItem, resource);
- resource.setAccessItemId(workbasketAccessItem.getId());
- return resource;
- }
-
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketDefinitionResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketDefinitionResourceAssembler.java
index cdc24775e..3b62c57bf 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketDefinitionResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketDefinitionResourceAssembler.java
@@ -44,11 +44,7 @@ public class WorkbasketDefinitionResourceAssembler {
public WorkbasketDefinitionResource toResource(Workbasket workbasket)
throws NotAuthorizedException, WorkbasketNotFoundException {
- WorkbasketResourceWithoutLinks basket = new WorkbasketResourceWithoutLinks();
- BeanUtils.copyProperties(workbasket, basket);
- basket.setWorkbasketId(workbasket.getId());
- basket.setModified(workbasket.getModified().toString());
- basket.setCreated(workbasket.getCreated().toString());
+ WorkbasketResourceWithoutLinks basket = new WorkbasketResourceWithoutLinks(workbasket);
List authorizations = new ArrayList<>();
for (WorkbasketAccessItem accessItem : workbasketService.getWorkbasketAccessItems(basket.getWorkbasketId())) {
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResource.java
index 77fc3bbb3..a410c48ad 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResource.java
@@ -4,6 +4,7 @@ import javax.validation.constraints.NotNull;
import org.springframework.hateoas.ResourceSupport;
+import pro.taskana.Workbasket;
import pro.taskana.WorkbasketType;
/**
@@ -12,19 +13,14 @@ import pro.taskana.WorkbasketType;
public class WorkbasketResource extends ResourceSupport {
public String workbasketId;
-
@NotNull
public String key;
-
@NotNull
public String name;
-
@NotNull
public String domain;
-
@NotNull
public WorkbasketType type;
-
public String created; // ISO-8601
public String modified; // ISO-8601
public String description;
@@ -38,6 +34,29 @@ public class WorkbasketResource extends ResourceSupport {
public String orgLevel3;
public String orgLevel4;
+ public WorkbasketResource() {
+ }
+
+ public WorkbasketResource(Workbasket workbasket) {
+ this.workbasketId = workbasket.getId();
+ this.key = workbasket.getKey();
+ this.name = workbasket.getName();
+ this.domain = workbasket.getDomain();
+ this.type = workbasket.getType();
+ this.created = workbasket.getCreated() != null ? workbasket.getCreated().toString() : null;
+ this.modified = workbasket.getModified() != null ? workbasket.getModified().toString() : null;
+ this.description = workbasket.getDescription();
+ this.owner = workbasket.getOwner();
+ this.custom1 = workbasket.getCustom1();
+ this.custom2 = workbasket.getCustom2();
+ this.custom3 = workbasket.getCustom3();
+ this.custom4 = workbasket.getCustom4();
+ this.orgLevel1 = workbasket.getOrgLevel1();
+ this.orgLevel2 = workbasket.getOrgLevel2();
+ this.orgLevel3 = workbasket.getOrgLevel3();
+ this.orgLevel4 = workbasket.getOrgLevel4();
+ }
+
public String getWorkbasketId() {
return workbasketId;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceAssembler.java
index 93fb5e29d..ae8989962 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceAssembler.java
@@ -26,13 +26,7 @@ public class WorkbasketResourceAssembler {
private WorkbasketService workbasketService;
public WorkbasketResource toResource(Workbasket wb) throws NotAuthorizedException, WorkbasketNotFoundException {
- WorkbasketResource resource = new WorkbasketResource();
- BeanUtils.copyProperties(wb, resource);
- // need to be set by hand, since name or type is different
- resource.setWorkbasketId(wb.getId());
- resource.setModified(wb.getModified().toString());
- resource.setCreated(wb.getCreated().toString());
-
+ WorkbasketResource resource = new WorkbasketResource(wb);
return addLinks(resource, wb);
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceWithoutLinks.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceWithoutLinks.java
index 2cd2335b5..c95428bf6 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceWithoutLinks.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketResourceWithoutLinks.java
@@ -2,10 +2,18 @@ package pro.taskana.rest.resource;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import pro.taskana.Workbasket;
+
/**
* Resource class for {@link pro.taskana.Workbasket} but without links property.
*/
-@JsonIgnoreProperties(value = { "links" })
+@JsonIgnoreProperties(value = {"links"})
public class WorkbasketResourceWithoutLinks extends WorkbasketResource {
+ WorkbasketResourceWithoutLinks() {
+ }
+
+ WorkbasketResourceWithoutLinks(Workbasket workbasket) {
+ super(workbasket);
+ }
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResource.java
index ecb57c7bd..556f1991f 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResource.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResource.java
@@ -5,6 +5,7 @@ import javax.validation.constraints.NotNull;
import org.springframework.hateoas.ResourceSupport;
import org.springframework.hateoas.core.Relation;
+import pro.taskana.WorkbasketSummary;
import pro.taskana.WorkbasketType;
/**
@@ -13,32 +14,54 @@ import pro.taskana.WorkbasketType;
@Relation(collectionRelation = "workbaskets")
public class WorkbasketSummaryResource extends ResourceSupport {
- public String workbasketId;
+ private String workbasketId;
@NotNull
- public String key;
+ private String key;
@NotNull
- public String name;
+ private String name;
@NotNull
- public String domain;
+ private String domain;
@NotNull
- public WorkbasketType type;
+ private WorkbasketType type;
- public String description;
- public String owner;
- public String custom1;
- public String custom2;
- public String custom3;
- public String custom4;
- public String orgLevel1;
- public String orgLevel2;
- public String orgLevel3;
- public String orgLevel4;
+ private String description;
+ private String owner;
+ private String custom1;
+ private String custom2;
+ private String custom3;
+ private String custom4;
+ private String orgLevel1;
+ private String orgLevel2;
+ private String orgLevel3;
+ private String orgLevel4;
private boolean markedForDeletion;
+ public WorkbasketSummaryResource() {
+ }
+
+ public WorkbasketSummaryResource(WorkbasketSummary workbasketSummary) {
+ this.workbasketId = workbasketSummary.getId();
+ this.key = workbasketSummary.getKey();
+ this.name = workbasketSummary.getName();
+ this.domain = workbasketSummary.getDomain();
+ this.type = workbasketSummary.getType();
+ this.description = workbasketSummary.getDescription();
+ this.owner = workbasketSummary.getOwner();
+ this.markedForDeletion = workbasketSummary.isMarkedForDeletion();
+ this.custom1 = workbasketSummary.getCustom1();
+ this.custom2 = workbasketSummary.getCustom2();
+ this.custom3 = workbasketSummary.getCustom3();
+ this.custom4 = workbasketSummary.getCustom4();
+ this.orgLevel1 = workbasketSummary.getOrgLevel1();
+ this.orgLevel2 = workbasketSummary.getOrgLevel2();
+ this.orgLevel3 = workbasketSummary.getOrgLevel3();
+ this.orgLevel4 = workbasketSummary.getOrgLevel4();
+ }
+
public String getWorkbasketId() {
return workbasketId;
}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResourceAssembler.java
index 9ff17eeef..b7175399d 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResourceAssembler.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResourceAssembler.java
@@ -1,7 +1,10 @@
package pro.taskana.rest.resource;
+import java.util.List;
+
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.hateoas.PagedResources;
import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
import org.springframework.stereotype.Component;
@@ -9,6 +12,7 @@ import pro.taskana.WorkbasketService;
import pro.taskana.WorkbasketSummary;
import pro.taskana.impl.WorkbasketImpl;
import pro.taskana.rest.WorkbasketController;
+import pro.taskana.rest.resource.links.PageLinks;
/**
* @author HH
@@ -26,11 +30,13 @@ public class WorkbasketSummaryResourceAssembler
@Override
public WorkbasketSummaryResource toResource(WorkbasketSummary workbasketSummary) {
- WorkbasketSummaryResource resource = createResourceWithId(workbasketSummary.getId(), workbasketSummary);
- BeanUtils.copyProperties(workbasketSummary, resource);
- // named different so needs to be set by hand
- resource.setWorkbasketId(workbasketSummary.getId());
- return resource;
+ return new WorkbasketSummaryResource(workbasketSummary);
+ }
+
+ @PageLinks(WorkbasketController.class)
+ public PagedResources toResources(List entities,
+ PagedResources.PageMetadata pageMetadata) {
+ return new PagedResources<>(toResources(entities), pageMetadata);
}
public WorkbasketSummary toModel(WorkbasketSummaryResource resource) {
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResourcesAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResourcesAssembler.java
deleted file mode 100644
index 1960b3bd2..000000000
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/WorkbasketSummaryResourcesAssembler.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package pro.taskana.rest.resource;
-
-import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
-
-import java.util.List;
-
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.PagedResources;
-import org.springframework.hateoas.PagedResources.PageMetadata;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import pro.taskana.WorkbasketSummary;
-import pro.taskana.rest.WorkbasketController;
-
-/**
- * @author HH
- */
-public class WorkbasketSummaryResourcesAssembler {
-
- public WorkbasketSummaryResourcesAssembler() {
- }
-
- public PagedResources toResources(List workbasketSummaries,
- PageMetadata pageMetadata) {
-
- WorkbasketSummaryResourceAssembler assembler = new WorkbasketSummaryResourceAssembler();
- List resources = assembler.toResources(workbasketSummaries);
- PagedResources pagedResources = new PagedResources(
- resources,
- pageMetadata);
-
- UriComponentsBuilder original = AbstractRessourcesAssembler.getBuilderForOriginalUri();
- pagedResources.add(new Link(original.toUriString()).withSelfRel());
- if (pageMetadata != null) {
- pagedResources.add(linkTo(WorkbasketController.class).withRel("allWorkbaskets"));
- pagedResources.add(new Link(original.replaceQueryParam("page", 1).toUriString()).withRel(Link.REL_FIRST));
- pagedResources.add(new Link(original.replaceQueryParam("page", pageMetadata.getTotalPages()).toUriString())
- .withRel(Link.REL_LAST));
- if (pageMetadata.getNumber() > 1) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() - 1).toUriString())
- .withRel(Link.REL_PREVIOUS));
- }
- if (pageMetadata.getNumber() < pageMetadata.getTotalPages()) {
- pagedResources
- .add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() + 1).toUriString())
- .withRel(Link.REL_NEXT));
- }
- }
-
- return pagedResources;
- }
-
-}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/links/PageLinks.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/links/PageLinks.java
new file mode 100644
index 000000000..6bfdb5e3d
--- /dev/null
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/links/PageLinks.java
@@ -0,0 +1,15 @@
+package pro.taskana.rest.resource.links;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation to generate HATEOAS Links for paged list resources.
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PageLinks {
+ Class> value();
+}
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/links/PageLinksAspect.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/links/PageLinksAspect.java
new file mode 100644
index 000000000..ef53e5ea6
--- /dev/null
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/links/PageLinksAspect.java
@@ -0,0 +1,66 @@
+package pro.taskana.rest.resource.links;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.hateoas.Link;
+import org.springframework.hateoas.PagedResources;
+import org.springframework.hateoas.ResourceSupport;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Map;
+
+import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
+
+/**
+ * Implementation of the PageLinks annotation to generate HATEOAS Links for paged list resources.
+ */
+@Configuration
+@Aspect
+public class PageLinksAspect {
+
+ @Around("@annotation(pro.taskana.rest.resource.links.PageLinks) && args(data, page, ..)")
+ public ResourceSupport addLinksToPageResource(ProceedingJoinPoint joinPoint, List> data, PagedResources.PageMetadata page)
+ throws Throwable {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
+ PageLinks pageLinks = method.getAnnotation(PageLinks.class);
+ Class> controller = pageLinks.value();
+ UriComponentsBuilder original = originalUri(controller, request);
+ ResourceSupport resourceSupport = (ResourceSupport) joinPoint.proceed();
+ resourceSupport.add(new Link(original.toUriString()).withSelfRel());
+ if (page != null) {
+ resourceSupport.add(new Link(original.replaceQueryParam("page", 1).toUriString()).withRel(Link.REL_FIRST));
+ resourceSupport.add(new Link(original.replaceQueryParam("page", page.getTotalPages()).toUriString())
+ .withRel(Link.REL_LAST));
+ if (page.getNumber() > 1) {
+ resourceSupport
+ .add(new Link(original.replaceQueryParam("page", page.getNumber() - 1).toUriString())
+ .withRel(Link.REL_PREVIOUS));
+ }
+ if (page.getNumber() < page.getTotalPages()) {
+ resourceSupport
+ .add(new Link(original.replaceQueryParam("page", page.getNumber() + 1).toUriString())
+ .withRel(Link.REL_NEXT));
+ }
+ }
+ return resourceSupport;
+ }
+
+ private UriComponentsBuilder originalUri(Class> controller, HttpServletRequest request) {
+ UriComponentsBuilder baseUri = linkTo(controller).toUriComponentsBuilder();
+ for (Map.Entry entry : request.getParameterMap().entrySet()) {
+ for (String value : entry.getValue()) {
+ baseUri.queryParam(entry.getKey(), value);
+ }
+ }
+ return baseUri;
+ }
+}
diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ClassificationAssemblerTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ClassificationAssemblerTest.java
index 911f43a35..3959206e5 100644
--- a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ClassificationAssemblerTest.java
+++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ClassificationAssemblerTest.java
@@ -12,12 +12,6 @@ import org.springframework.test.context.web.WebAppConfiguration;
import pro.taskana.Classification;
import pro.taskana.ClassificationService;
-import pro.taskana.exceptions.ClassificationAlreadyExistException;
-import pro.taskana.exceptions.ClassificationNotFoundException;
-import pro.taskana.exceptions.ConcurrencyException;
-import pro.taskana.exceptions.DomainNotFoundException;
-import pro.taskana.exceptions.InvalidArgumentException;
-import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.ClassificationImpl;
import pro.taskana.rest.TestConfiguration;
@@ -36,8 +30,7 @@ public class ClassificationAssemblerTest {
private ClassificationService classificationService;
@Test
- public void classificationToResource() throws ClassificationNotFoundException, NotAuthorizedException,
- ClassificationAlreadyExistException, ConcurrencyException, DomainNotFoundException, InvalidArgumentException {
+ public void classificationToResource() {
// given
ClassificationImpl classification = (ClassificationImpl) classificationService.newClassification("DOMAIN_A",
"1", "A");
@@ -68,34 +61,37 @@ public class ClassificationAssemblerTest {
@Test
public void resourceToClassification() {
+ ClassificationImpl classification = (ClassificationImpl) classificationService.newClassification("12",
+ "DOMAIN_B", "AB");
+
// given
- ClassificationResource classificationResource = new ClassificationResource();
- classificationResource.setClassificationId("1");
- classificationResource.setKey("12");
- classificationResource.setName("TestB");
- classificationResource.setType("AB");
- classificationResource.setDomain("DOMAIN_B");
- classificationResource.setApplicationEntryPoint("Test");
- classificationResource.setCategory("ABC");
- classificationResource.setCreated("2010-01-01T12:00:00Z");
- classificationResource.setModified("2011-11-11T11:00:00Z");
- classificationResource.setCustom1("Custom");
- classificationResource.setCustom2("Custom2");
- classificationResource.setCustom1("Custom1");
- classificationResource.setCustom3("Custom3");
- classificationResource.setCustom4("Custom4");
- classificationResource.setCustom5("Custom5");
- classificationResource.setCustom6("Custom6");
- classificationResource.setCustom7("Custom7");
- classificationResource.setCustom8("Custom8");
- classificationResource.setParentId("2");
- classificationResource.setPriority(2);
- classificationResource.setApplicationEntryPoint("12");
- classificationResource.setServiceLevel("P1D");
- classificationResource.setDescription("Test");
- classificationResource.setIsValidInDomain(true);
+ classification.setId("1");
+ classification.setType("AB");
+ classification.setDomain("DOMAIN_B");
+ classification.setApplicationEntryPoint("Test");
+ classification.setCategory("ABC");
+ classification.setCreated(Instant.parse("2010-01-01T12:00:00Z"));
+ classification.setModified(Instant.parse("2011-11-11T11:00:00Z"));
+ classification.setCustom1("Custom");
+ classification.setCustom2("Custom2");
+ classification.setCustom1("Custom1");
+ classification.setCustom3("Custom3");
+ classification.setCustom4("Custom4");
+ classification.setCustom5("Custom5");
+ classification.setCustom6("Custom6");
+ classification.setCustom7("Custom7");
+ classification.setCustom8("Custom8");
+ classification.setParentId("2");
+ classification.setPriority(2);
+ classification.setApplicationEntryPoint("12");
+ classification.setServiceLevel("P1D");
+ classification.setDescription("Test");
+ classification.setIsValidInDomain(true);
+
+ ClassificationResource classificationResource = new ClassificationResource(classification);
+
// when
- ClassificationImpl classification = (ClassificationImpl) classificationResourceAssembler
+ classification = (ClassificationImpl) classificationResourceAssembler
.toModel(classificationResource);
// then
testEquality(classification, classificationResource);
diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ReportResourceTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ReportResourceTest.java
index 43bd41f09..05011acd9 100644
--- a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ReportResourceTest.java
+++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/ReportResourceTest.java
@@ -29,7 +29,7 @@ import pro.taskana.report.WorkbasketReport;
import pro.taskana.rest.TestConfiguration;
/**
- * Test for {@link ReportAssembler}.
+ * Test for {@link ReportResourceAssembler}.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfiguration.class})
@@ -37,7 +37,7 @@ import pro.taskana.rest.TestConfiguration;
public class ReportResourceTest {
@Autowired
- private ReportAssembler reportAssembler;
+ private ReportResourceAssembler reportResourceAssembler;
private int daysDiff;
private LocalDateTime now;
@@ -58,7 +58,7 @@ public class ReportResourceTest {
// given
WorkbasketReport report = new WorkbasketReport(headers);
// when
- ReportResource resource = reportAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
+ ReportResource resource = reportResourceAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
// then
// meta
@@ -92,7 +92,7 @@ public class ReportResourceTest {
item.setKey("key");
report.addItem(item);
// when
- ReportResource resource = reportAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
+ ReportResource resource = reportResourceAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
// then
// meta
@@ -137,7 +137,7 @@ public class ReportResourceTest {
item.setKey("key2");
report.addItem(item);
// when
- ReportResource resource = reportAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
+ ReportResource resource = reportResourceAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
// then
// meta
@@ -190,7 +190,7 @@ public class ReportResourceTest {
item.setAttachmentKey(null);
report.addItem(item);
// when
- ReportResource resource = reportAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
+ ReportResource resource = reportResourceAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
// then
// meta
@@ -268,7 +268,7 @@ public class ReportResourceTest {
item.setKey("key2");
report.addItem(item);
// when
- ReportResource resource = reportAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
+ ReportResource resource = reportResourceAssembler.toReportResource(report, now.toInstant(ZoneOffset.UTC));
// then
// meta
diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketAccessItemAssemblerTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketAccessItemResourceAssemblerTest.java
similarity index 93%
rename from rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketAccessItemAssemblerTest.java
rename to rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketAccessItemResourceAssemblerTest.java
index 69e06ef7a..07aef2eb3 100644
--- a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketAccessItemAssemblerTest.java
+++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketAccessItemResourceAssemblerTest.java
@@ -16,15 +16,15 @@ import pro.taskana.impl.WorkbasketAccessItemImpl;
import pro.taskana.rest.TestConfiguration;
/**
- * Test for {@link WorkbasketAccessItemAssembler}.
+ * Test for {@link WorkbasketAccessItemResourceAssembler}.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfiguration.class})
@WebAppConfiguration
-public class WorkbasketAccessItemAssemblerTest {
+public class WorkbasketAccessItemResourceAssemblerTest {
@Autowired
- WorkbasketAccessItemAssembler workbasketAccessItemAssembler;
+ WorkbasketAccessItemResourceAssembler workbasketAccessItemResourceAssembler;
@Autowired
WorkbasketService workbasketService;
@@ -52,7 +52,7 @@ public class WorkbasketAccessItemAssemblerTest {
accessItem.setPermCustom11(true);
accessItem.setPermCustom12(true);
// when
- WorkbasketAccessItemResource resource = workbasketAccessItemAssembler.toResource(
+ WorkbasketAccessItemResource resource = workbasketAccessItemResourceAssembler.toResource(
accessItem);
// then
testEquality(accessItem, resource);
@@ -84,7 +84,7 @@ public class WorkbasketAccessItemAssemblerTest {
resource.setPermCustom11(true);
resource.setPermCustom12(false);
// when
- WorkbasketAccessItem accessItem = workbasketAccessItemAssembler.toModel(resource);
+ WorkbasketAccessItem accessItem = workbasketAccessItemResourceAssembler.toModel(resource);
// then
testEquality(accessItem, resource);
}
diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketSummaryAssemblerTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketSummaryAssemblerTest.java
index 0835b200e..80a325f68 100644
--- a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketSummaryAssemblerTest.java
+++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/resource/WorkbasketSummaryAssemblerTest.java
@@ -47,20 +47,20 @@ public class WorkbasketSummaryAssemblerTest {
// when
WorkbasketSummaryResource workbasketSummaryResource = workbasketSummaryAssembler.toResource(workbasketSummary);
// then
- Assert.assertEquals(workbasketSummary.getDescription(), workbasketSummaryResource.description);
- Assert.assertEquals(workbasketSummary.getDomain(), workbasketSummaryResource.domain);
- Assert.assertEquals(workbasketSummary.getId(), workbasketSummaryResource.workbasketId);
- Assert.assertEquals(workbasketSummary.getKey(), workbasketSummaryResource.key);
- Assert.assertEquals(workbasketSummary.getName(), workbasketSummaryResource.name);
- Assert.assertEquals(workbasketSummary.getCustom1(), workbasketSummaryResource.custom1);
- Assert.assertEquals(workbasketSummary.getCustom2(), workbasketSummaryResource.custom2);
- Assert.assertEquals(workbasketSummary.getCustom3(), workbasketSummaryResource.custom3);
- Assert.assertEquals(workbasketSummary.getCustom4(), workbasketSummaryResource.custom4);
- Assert.assertEquals(workbasketSummary.getOrgLevel1(), workbasketSummaryResource.orgLevel1);
- Assert.assertEquals(workbasketSummary.getOrgLevel2(), workbasketSummaryResource.orgLevel2);
- Assert.assertEquals(workbasketSummary.getOrgLevel3(), workbasketSummaryResource.orgLevel3);
- Assert.assertEquals(workbasketSummary.getOrgLevel4(), workbasketSummaryResource.orgLevel4);
- Assert.assertEquals(workbasketSummary.getOwner(), workbasketSummaryResource.owner);
- Assert.assertEquals(workbasketSummary.getType(), workbasketSummaryResource.type);
+ Assert.assertEquals(workbasketSummary.getDescription(), workbasketSummaryResource.getDescription());
+ Assert.assertEquals(workbasketSummary.getDomain(), workbasketSummaryResource.getDomain());
+ Assert.assertEquals(workbasketSummary.getId(), workbasketSummaryResource.getWorkbasketId());
+ Assert.assertEquals(workbasketSummary.getKey(), workbasketSummaryResource.getKey());
+ Assert.assertEquals(workbasketSummary.getName(), workbasketSummaryResource.getName());
+ Assert.assertEquals(workbasketSummary.getCustom1(), workbasketSummaryResource.getCustom1());
+ Assert.assertEquals(workbasketSummary.getCustom2(), workbasketSummaryResource.getCustom2());
+ Assert.assertEquals(workbasketSummary.getCustom3(), workbasketSummaryResource.getCustom3());
+ Assert.assertEquals(workbasketSummary.getCustom4(), workbasketSummaryResource.getCustom4());
+ Assert.assertEquals(workbasketSummary.getOrgLevel1(), workbasketSummaryResource.getOrgLevel1());
+ Assert.assertEquals(workbasketSummary.getOrgLevel2(), workbasketSummaryResource.getOrgLevel2());
+ Assert.assertEquals(workbasketSummary.getOrgLevel3(), workbasketSummaryResource.getOrgLevel3());
+ Assert.assertEquals(workbasketSummary.getOrgLevel4(), workbasketSummaryResource.getOrgLevel4());
+ Assert.assertEquals(workbasketSummary.getOwner(), workbasketSummaryResource.getOwner());
+ Assert.assertEquals(workbasketSummary.getType(), workbasketSummaryResource.getType());
}
}