TSK-1964: refactored builders to reduce code duplication
This commit is contained in:
parent
3c71c08684
commit
2dbdd874d5
|
|
@ -7,7 +7,6 @@ import static pro.taskana.testapi.DefaultTestEntities.defaultTestClassification;
|
||||||
import static pro.taskana.testapi.DefaultTestEntities.defaultTestObjectReference;
|
import static pro.taskana.testapi.DefaultTestEntities.defaultTestObjectReference;
|
||||||
import static pro.taskana.testapi.DefaultTestEntities.defaultTestWorkbasket;
|
import static pro.taskana.testapi.DefaultTestEntities.defaultTestWorkbasket;
|
||||||
|
|
||||||
import java.security.PrivilegedActionException;
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -81,15 +80,14 @@ class TaskQueryImplAccTest {
|
||||||
.workbasketSummary(wb);
|
.workbasketSummary(wb);
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketSummary createWorkbasketWithPermission() throws PrivilegedActionException {
|
private WorkbasketSummary createWorkbasketWithPermission() throws Exception {
|
||||||
WorkbasketSummary workbasketSummary =
|
WorkbasketSummary workbasketSummary =
|
||||||
defaultTestWorkbasket().buildAndStoreAsSummary(workbasketService, "businessadmin");
|
defaultTestWorkbasket().buildAndStoreAsSummary(workbasketService, "businessadmin");
|
||||||
persistPermission(workbasketSummary);
|
persistPermission(workbasketSummary);
|
||||||
return workbasketSummary;
|
return workbasketSummary;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void persistPermission(WorkbasketSummary workbasketSummary)
|
private void persistPermission(WorkbasketSummary workbasketSummary) throws Exception {
|
||||||
throws PrivilegedActionException {
|
|
||||||
WorkbasketAccessItemBuilder.newWorkbasketAccessItem()
|
WorkbasketAccessItemBuilder.newWorkbasketAccessItem()
|
||||||
.workbasketId(workbasketSummary.getId())
|
.workbasketId(workbasketSummary.getId())
|
||||||
.accessId(currentUserContext.getUserid())
|
.accessId(currentUserContext.getUserid())
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,16 @@
|
||||||
package pro.taskana.testapi;
|
package pro.taskana.testapi;
|
||||||
|
|
||||||
|
import static pro.taskana.testapi.builder.ClassificationBuilder.newClassification;
|
||||||
|
import static pro.taskana.testapi.builder.ObjectReferenceBuilder.newObjectReference;
|
||||||
|
import static pro.taskana.testapi.builder.UserBuilder.newUser;
|
||||||
|
import static pro.taskana.testapi.builder.WorkbasketBuilder.newWorkbasket;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import pro.taskana.testapi.builder.ClassificationBuilder;
|
import pro.taskana.testapi.builder.ClassificationBuilder;
|
||||||
import pro.taskana.testapi.builder.ObjectReferenceBuilder;
|
import pro.taskana.testapi.builder.ObjectReferenceBuilder;
|
||||||
|
import pro.taskana.testapi.builder.UserBuilder;
|
||||||
import pro.taskana.testapi.builder.WorkbasketBuilder;
|
import pro.taskana.testapi.builder.WorkbasketBuilder;
|
||||||
import pro.taskana.workbasket.api.WorkbasketType;
|
import pro.taskana.workbasket.api.WorkbasketType;
|
||||||
|
|
||||||
|
|
@ -14,13 +21,13 @@ public class DefaultTestEntities {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClassificationBuilder defaultTestClassification() {
|
public static ClassificationBuilder defaultTestClassification() {
|
||||||
return ClassificationBuilder.newClassification()
|
return newClassification()
|
||||||
.key(UUID.randomUUID().toString().replace("-", ""))
|
.key(UUID.randomUUID().toString().replace("-", ""))
|
||||||
.domain("DOMAIN_A");
|
.domain("DOMAIN_A");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WorkbasketBuilder defaultTestWorkbasket() {
|
public static WorkbasketBuilder defaultTestWorkbasket() {
|
||||||
return WorkbasketBuilder.newWorkbasket()
|
return newWorkbasket()
|
||||||
.key(UUID.randomUUID().toString())
|
.key(UUID.randomUUID().toString())
|
||||||
.domain("DOMAIN_A")
|
.domain("DOMAIN_A")
|
||||||
.name("Megabasket")
|
.name("Megabasket")
|
||||||
|
|
@ -29,11 +36,32 @@ public class DefaultTestEntities {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ObjectReferenceBuilder defaultTestObjectReference() {
|
public static ObjectReferenceBuilder defaultTestObjectReference() {
|
||||||
return ObjectReferenceBuilder.newObjectReference()
|
return newObjectReference()
|
||||||
.company("Company1")
|
.company("Company1")
|
||||||
.system("System1")
|
.system("System1")
|
||||||
.systemInstance("Instance1")
|
.systemInstance("Instance1")
|
||||||
.type("Type1")
|
.type("Type1")
|
||||||
.value("Value1");
|
.value("Value1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static UserBuilder randomTestUser() {
|
||||||
|
return newUser()
|
||||||
|
.id(UUID.randomUUID().toString().replace("-", ""))
|
||||||
|
.firstName(RandomStringGenerator.generateRandomString(10))
|
||||||
|
.lastName(RandomStringGenerator.generateRandomString(12));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class RandomStringGenerator {
|
||||||
|
private static final Random RANDOM = new Random(15);
|
||||||
|
|
||||||
|
private static String generateRandomString(int length) {
|
||||||
|
// see ascii table for details number -> char conversion.
|
||||||
|
return RANDOM
|
||||||
|
.ints('0', 'z' + 1)
|
||||||
|
.filter(i -> (i <= '9' || i >= 'A') && (i <= 'Z' || i >= 'a'))
|
||||||
|
.limit(length)
|
||||||
|
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
package pro.taskana.testapi.builder;
|
package pro.taskana.testapi.builder;
|
||||||
|
|
||||||
import java.security.PrivilegedActionException;
|
|
||||||
import java.security.PrivilegedExceptionAction;
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import javax.security.auth.Subject;
|
|
||||||
|
|
||||||
import pro.taskana.classification.api.ClassificationCustomField;
|
import pro.taskana.classification.api.ClassificationCustomField;
|
||||||
import pro.taskana.classification.api.ClassificationService;
|
import pro.taskana.classification.api.ClassificationService;
|
||||||
|
|
@ -15,9 +12,10 @@ import pro.taskana.classification.api.models.ClassificationSummary;
|
||||||
import pro.taskana.common.api.exceptions.DomainNotFoundException;
|
import pro.taskana.common.api.exceptions.DomainNotFoundException;
|
||||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.common.api.security.UserPrincipal;
|
import pro.taskana.testapi.builder.EntityBuilder.SummaryEntityBuilder;
|
||||||
|
|
||||||
public class ClassificationBuilder {
|
public class ClassificationBuilder
|
||||||
|
implements SummaryEntityBuilder<ClassificationSummary, Classification, ClassificationService> {
|
||||||
|
|
||||||
private final ClassificationTestImpl testClassification = new ClassificationTestImpl();
|
private final ClassificationTestImpl testClassification = new ClassificationTestImpl();
|
||||||
|
|
||||||
|
|
@ -113,6 +111,12 @@ public class ClassificationBuilder {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClassificationSummary entityToSummary(Classification classification) {
|
||||||
|
return classification.asSummary();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Classification buildAndStore(ClassificationService classificationService)
|
public Classification buildAndStore(ClassificationService classificationService)
|
||||||
throws InvalidArgumentException, ClassificationAlreadyExistException, DomainNotFoundException,
|
throws InvalidArgumentException, ClassificationAlreadyExistException, DomainNotFoundException,
|
||||||
MalformedServiceLevelException, NotAuthorizedException, ClassificationNotFoundException {
|
MalformedServiceLevelException, NotAuthorizedException, ClassificationNotFoundException {
|
||||||
|
|
@ -123,25 +127,4 @@ public class ClassificationBuilder {
|
||||||
testClassification.setId(null);
|
testClassification.setId(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Classification buildAndStore(ClassificationService classificationService, String userId)
|
|
||||||
throws PrivilegedActionException {
|
|
||||||
Subject subject = new Subject();
|
|
||||||
subject.getPrincipals().add(new UserPrincipal(userId));
|
|
||||||
PrivilegedExceptionAction<Classification> performBuildAndStore =
|
|
||||||
() -> buildAndStore(classificationService);
|
|
||||||
|
|
||||||
return Subject.doAs(subject, performBuildAndStore);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassificationSummary buildAndStoreAsSummary(ClassificationService classificationService)
|
|
||||||
throws InvalidArgumentException, ClassificationAlreadyExistException, DomainNotFoundException,
|
|
||||||
MalformedServiceLevelException, NotAuthorizedException, ClassificationNotFoundException {
|
|
||||||
return buildAndStore(classificationService).asSummary();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassificationSummary buildAndStoreAsSummary(
|
|
||||||
ClassificationService classificationService, String userId) throws PrivilegedActionException {
|
|
||||||
return buildAndStore(classificationService, userId).asSummary();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
package pro.taskana.testapi.builder;
|
||||||
|
|
||||||
|
import java.security.PrivilegedActionException;
|
||||||
|
import java.security.PrivilegedExceptionAction;
|
||||||
|
import javax.security.auth.Subject;
|
||||||
|
|
||||||
|
import pro.taskana.common.api.security.UserPrincipal;
|
||||||
|
|
||||||
|
public interface EntityBuilder<EntityT, ServiceT> {
|
||||||
|
|
||||||
|
EntityT buildAndStore(ServiceT service) throws Exception;
|
||||||
|
|
||||||
|
default EntityT buildAndStore(ServiceT service, String userId) throws Exception {
|
||||||
|
return execAsUser(userId, () -> buildAndStore(service));
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> T execAsUser(String userId, PrivilegedExceptionAction<T> runnable)
|
||||||
|
throws PrivilegedActionException {
|
||||||
|
Subject subject = new Subject();
|
||||||
|
subject.getPrincipals().add(new UserPrincipal(userId));
|
||||||
|
|
||||||
|
return Subject.doAs(subject, runnable);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SummaryEntityBuilder<SummaryEntityT, EntityT extends SummaryEntityT, ServiceT>
|
||||||
|
extends EntityBuilder<EntityT, ServiceT> {
|
||||||
|
SummaryEntityT entityToSummary(EntityT entity);
|
||||||
|
|
||||||
|
default SummaryEntityT buildAndStoreAsSummary(ServiceT service) throws Exception {
|
||||||
|
return entityToSummary(buildAndStore(service));
|
||||||
|
}
|
||||||
|
|
||||||
|
default SummaryEntityT buildAndStoreAsSummary(ServiceT service, String userId)
|
||||||
|
throws Exception {
|
||||||
|
return entityToSummary(buildAndStore(service, userId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,17 +1,13 @@
|
||||||
package pro.taskana.testapi.builder;
|
package pro.taskana.testapi.builder;
|
||||||
|
|
||||||
import java.security.PrivilegedActionException;
|
|
||||||
import java.security.PrivilegedExceptionAction;
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import javax.security.auth.Subject;
|
|
||||||
|
|
||||||
import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
|
import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
|
||||||
import pro.taskana.classification.api.models.ClassificationSummary;
|
import pro.taskana.classification.api.models.ClassificationSummary;
|
||||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.common.api.security.UserPrincipal;
|
|
||||||
import pro.taskana.task.api.CallbackState;
|
import pro.taskana.task.api.CallbackState;
|
||||||
import pro.taskana.task.api.TaskCustomField;
|
import pro.taskana.task.api.TaskCustomField;
|
||||||
import pro.taskana.task.api.TaskCustomIntField;
|
import pro.taskana.task.api.TaskCustomIntField;
|
||||||
|
|
@ -25,10 +21,11 @@ import pro.taskana.task.api.models.Attachment;
|
||||||
import pro.taskana.task.api.models.ObjectReference;
|
import pro.taskana.task.api.models.ObjectReference;
|
||||||
import pro.taskana.task.api.models.Task;
|
import pro.taskana.task.api.models.Task;
|
||||||
import pro.taskana.task.api.models.TaskSummary;
|
import pro.taskana.task.api.models.TaskSummary;
|
||||||
|
import pro.taskana.testapi.builder.EntityBuilder.SummaryEntityBuilder;
|
||||||
import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
|
import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
||||||
|
|
||||||
public class TaskBuilder {
|
public class TaskBuilder implements SummaryEntityBuilder<TaskSummary, Task, TaskService> {
|
||||||
|
|
||||||
private final TaskTestImpl testTask = new TaskTestImpl();
|
private final TaskTestImpl testTask = new TaskTestImpl();
|
||||||
|
|
||||||
|
|
@ -210,6 +207,12 @@ public class TaskBuilder {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TaskSummary entityToSummary(Task entity) {
|
||||||
|
return entity.asSummary();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Task buildAndStore(TaskService taskService)
|
public Task buildAndStore(TaskService taskService)
|
||||||
throws TaskAlreadyExistException, InvalidArgumentException, WorkbasketNotFoundException,
|
throws TaskAlreadyExistException, InvalidArgumentException, WorkbasketNotFoundException,
|
||||||
ClassificationNotFoundException, NotAuthorizedException, AttachmentPersistenceException,
|
ClassificationNotFoundException, NotAuthorizedException, AttachmentPersistenceException,
|
||||||
|
|
@ -222,25 +225,4 @@ public class TaskBuilder {
|
||||||
testTask.setExternalId(null);
|
testTask.setExternalId(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task buildAndStore(TaskService taskService, String userId)
|
|
||||||
throws PrivilegedActionException {
|
|
||||||
Subject subject = new Subject();
|
|
||||||
subject.getPrincipals().add(new UserPrincipal(userId));
|
|
||||||
PrivilegedExceptionAction<Task> performBuildAndStore = () -> buildAndStore(taskService);
|
|
||||||
|
|
||||||
return Subject.doAs(subject, performBuildAndStore);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TaskSummary buildAndStoreAsSummary(TaskService taskService)
|
|
||||||
throws TaskAlreadyExistException, InvalidArgumentException, TaskNotFoundException,
|
|
||||||
WorkbasketNotFoundException, ClassificationNotFoundException, NotAuthorizedException,
|
|
||||||
AttachmentPersistenceException, ObjectReferencePersistenceException {
|
|
||||||
return buildAndStore(taskService).asSummary();
|
|
||||||
}
|
|
||||||
|
|
||||||
public TaskSummary buildAndStoreAsSummary(TaskService taskService, String userId)
|
|
||||||
throws PrivilegedActionException {
|
|
||||||
return buildAndStore(taskService, userId).asSummary();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,15 @@
|
||||||
package pro.taskana.testapi.builder;
|
package pro.taskana.testapi.builder;
|
||||||
|
|
||||||
import java.security.PrivilegedActionException;
|
|
||||||
import java.security.PrivilegedExceptionAction;
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import javax.security.auth.Subject;
|
|
||||||
|
|
||||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.common.api.security.UserPrincipal;
|
|
||||||
import pro.taskana.task.api.TaskService;
|
import pro.taskana.task.api.TaskService;
|
||||||
import pro.taskana.task.api.exceptions.TaskCommentNotFoundException;
|
import pro.taskana.task.api.exceptions.TaskCommentNotFoundException;
|
||||||
import pro.taskana.task.api.exceptions.TaskNotFoundException;
|
import pro.taskana.task.api.exceptions.TaskNotFoundException;
|
||||||
import pro.taskana.task.api.models.TaskComment;
|
import pro.taskana.task.api.models.TaskComment;
|
||||||
|
|
||||||
public class TaskCommentBuilder {
|
public class TaskCommentBuilder implements EntityBuilder<TaskComment, TaskService> {
|
||||||
|
|
||||||
private final TaskCommentTestImpl testTaskComment = new TaskCommentTestImpl();
|
private final TaskCommentTestImpl testTaskComment = new TaskCommentTestImpl();
|
||||||
|
|
||||||
|
|
@ -51,6 +47,7 @@ public class TaskCommentBuilder {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public TaskComment buildAndStore(TaskService taskService)
|
public TaskComment buildAndStore(TaskService taskService)
|
||||||
throws InvalidArgumentException, TaskNotFoundException, NotAuthorizedException,
|
throws InvalidArgumentException, TaskNotFoundException, NotAuthorizedException,
|
||||||
TaskCommentNotFoundException {
|
TaskCommentNotFoundException {
|
||||||
|
|
@ -61,13 +58,4 @@ public class TaskCommentBuilder {
|
||||||
testTaskComment.setId(null);
|
testTaskComment.setId(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TaskComment buildAndStore(TaskService taskService, String userId)
|
|
||||||
throws PrivilegedActionException {
|
|
||||||
Subject subject = new Subject();
|
|
||||||
subject.getPrincipals().add(new UserPrincipal(userId));
|
|
||||||
PrivilegedExceptionAction<TaskComment> performBuildAndStore = () -> buildAndStore(taskService);
|
|
||||||
|
|
||||||
return Subject.doAs(subject, performBuildAndStore);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,7 @@
|
||||||
package pro.taskana.testapi.builder;
|
package pro.taskana.testapi.builder;
|
||||||
|
|
||||||
import java.security.PrivilegedActionException;
|
|
||||||
import java.security.PrivilegedExceptionAction;
|
|
||||||
import javax.security.auth.Subject;
|
|
||||||
|
|
||||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.common.api.security.UserPrincipal;
|
|
||||||
import pro.taskana.workbasket.api.WorkbasketPermission;
|
import pro.taskana.workbasket.api.WorkbasketPermission;
|
||||||
import pro.taskana.workbasket.api.WorkbasketService;
|
import pro.taskana.workbasket.api.WorkbasketService;
|
||||||
import pro.taskana.workbasket.api.exceptions.WorkbasketAccessItemAlreadyExistException;
|
import pro.taskana.workbasket.api.exceptions.WorkbasketAccessItemAlreadyExistException;
|
||||||
|
|
@ -14,7 +9,8 @@ import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.workbasket.api.models.WorkbasketAccessItem;
|
import pro.taskana.workbasket.api.models.WorkbasketAccessItem;
|
||||||
import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl;
|
import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl;
|
||||||
|
|
||||||
public class WorkbasketAccessItemBuilder {
|
public class WorkbasketAccessItemBuilder
|
||||||
|
implements EntityBuilder<WorkbasketAccessItem, WorkbasketService> {
|
||||||
|
|
||||||
WorkbasketAccessItemImpl testWorkbasketAccessItem = new WorkbasketAccessItemImpl();
|
WorkbasketAccessItemImpl testWorkbasketAccessItem = new WorkbasketAccessItemImpl();
|
||||||
|
|
||||||
|
|
@ -48,19 +44,10 @@ public class WorkbasketAccessItemBuilder {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public WorkbasketAccessItem buildAndStore(WorkbasketService workbasketService)
|
public WorkbasketAccessItem buildAndStore(WorkbasketService workbasketService)
|
||||||
throws InvalidArgumentException, WorkbasketAccessItemAlreadyExistException,
|
throws InvalidArgumentException, WorkbasketAccessItemAlreadyExistException,
|
||||||
WorkbasketNotFoundException, NotAuthorizedException {
|
WorkbasketNotFoundException, NotAuthorizedException {
|
||||||
return workbasketService.createWorkbasketAccessItem(testWorkbasketAccessItem);
|
return workbasketService.createWorkbasketAccessItem(testWorkbasketAccessItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorkbasketAccessItem buildAndStore(WorkbasketService workbasketService, String userId)
|
|
||||||
throws PrivilegedActionException {
|
|
||||||
Subject subject = new Subject();
|
|
||||||
subject.getPrincipals().add(new UserPrincipal(userId));
|
|
||||||
PrivilegedExceptionAction<WorkbasketAccessItem> performBuildAndStore =
|
|
||||||
() -> buildAndStore(workbasketService);
|
|
||||||
|
|
||||||
return Subject.doAs(subject, performBuildAndStore);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
package pro.taskana.testapi.builder;
|
package pro.taskana.testapi.builder;
|
||||||
|
|
||||||
import java.security.PrivilegedActionException;
|
|
||||||
import java.security.PrivilegedExceptionAction;
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import javax.security.auth.Subject;
|
|
||||||
|
|
||||||
import pro.taskana.common.api.exceptions.DomainNotFoundException;
|
import pro.taskana.common.api.exceptions.DomainNotFoundException;
|
||||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.common.api.security.UserPrincipal;
|
import pro.taskana.testapi.builder.EntityBuilder.SummaryEntityBuilder;
|
||||||
import pro.taskana.workbasket.api.WorkbasketCustomField;
|
import pro.taskana.workbasket.api.WorkbasketCustomField;
|
||||||
import pro.taskana.workbasket.api.WorkbasketService;
|
import pro.taskana.workbasket.api.WorkbasketService;
|
||||||
import pro.taskana.workbasket.api.WorkbasketType;
|
import pro.taskana.workbasket.api.WorkbasketType;
|
||||||
|
|
@ -17,7 +14,8 @@ import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.workbasket.api.models.Workbasket;
|
import pro.taskana.workbasket.api.models.Workbasket;
|
||||||
import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
||||||
|
|
||||||
public class WorkbasketBuilder {
|
public class WorkbasketBuilder
|
||||||
|
implements SummaryEntityBuilder<WorkbasketSummary, Workbasket, WorkbasketService> {
|
||||||
|
|
||||||
private final WorkbasketTestImpl testWorkbasket = new WorkbasketTestImpl();
|
private final WorkbasketTestImpl testWorkbasket = new WorkbasketTestImpl();
|
||||||
|
|
||||||
|
|
@ -108,6 +106,12 @@ public class WorkbasketBuilder {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkbasketSummary entityToSummary(Workbasket workbasket) {
|
||||||
|
return workbasket.asSummary();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Workbasket buildAndStore(WorkbasketService workbasketService)
|
public Workbasket buildAndStore(WorkbasketService workbasketService)
|
||||||
throws InvalidArgumentException, WorkbasketAlreadyExistException, DomainNotFoundException,
|
throws InvalidArgumentException, WorkbasketAlreadyExistException, DomainNotFoundException,
|
||||||
NotAuthorizedException, WorkbasketNotFoundException {
|
NotAuthorizedException, WorkbasketNotFoundException {
|
||||||
|
|
@ -118,25 +122,4 @@ public class WorkbasketBuilder {
|
||||||
testWorkbasket.setId(null);
|
testWorkbasket.setId(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Workbasket buildAndStore(WorkbasketService workbasketService, String userId)
|
|
||||||
throws PrivilegedActionException {
|
|
||||||
Subject subject = new Subject();
|
|
||||||
subject.getPrincipals().add(new UserPrincipal(userId));
|
|
||||||
PrivilegedExceptionAction<Workbasket> performBuildAndStore =
|
|
||||||
() -> buildAndStore(workbasketService);
|
|
||||||
|
|
||||||
return Subject.doAs(subject, performBuildAndStore);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WorkbasketSummary buildAndStoreAsSummary(WorkbasketService workbasketService)
|
|
||||||
throws InvalidArgumentException, WorkbasketAlreadyExistException, WorkbasketNotFoundException,
|
|
||||||
DomainNotFoundException, NotAuthorizedException {
|
|
||||||
return buildAndStore(workbasketService).asSummary();
|
|
||||||
}
|
|
||||||
|
|
||||||
public WorkbasketSummary buildAndStoreAsSummary(
|
|
||||||
WorkbasketService workbasketService, String userId) throws PrivilegedActionException {
|
|
||||||
return buildAndStore(workbasketService, userId).asSummary();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue