From 93d0b27bb058a4f47218177136bce81f99103345 Mon Sep 17 00:00:00 2001 From: Mustapha Zorgati <15628173+mustaphazorgati@users.noreply.github.com> Date: Thu, 21 Apr 2022 13:23:43 +0200 Subject: [PATCH] TSK-1831: dropped support for JDK8 Co-authored-by: Yakup Ensar Evli <54323073+ensarevlideveloper@users.noreply.github.com> Co-authored-by: ryzheboka <25465835+ryzheboka@users.noreply.github.com> Co-authored-by: knht <43456808+knht@users.noreply.github.com> --- .../security/CurrentUserContextImpl.java | 4 ++- .../TaskanaConfigurationInitializer.java | 6 +++-- .../util/ObjectAttributeChangeDetector.java | 5 ++-- .../common/internal/util/ReflectionUtil.java | 4 ++- .../impl/jobs/HistoryCleanupJob.java | 4 ++- .../api/models/Classification.java | 1 + .../api/models/ClassificationSummary.java | 1 + .../pro/taskana/task/api/models/Task.java | 1 + .../taskana/task/api/models/TaskSummary.java | 1 + .../task/internal/AttachmentHandler.java | 4 ++- .../task/internal/ObjectReferenceHandler.java | 4 ++- .../task/internal/ServiceLevelHandler.java | 5 +++- .../task/internal/TaskServiceImpl.java | 6 +++-- .../task/internal/jobs/TaskCleanupJob.java | 9 ++++--- .../jobs/helper/TaskUpdatePriorityWorker.java | 4 ++- .../workbasket/api/models/Workbasket.java | 1 + .../api/models/WorkbasketSummary.java | 1 + .../java/acceptance/ArchitectureTest.java | 19 +++++++------- .../create/CreateClassificationAccTest.java | 5 ++-- .../query/QueryTasksWithSortingAccTest.java | 7 +++-- pom.xml | 10 ------- .../rest/TaskanaRestExceptionHandler.java | 4 ++- .../taskana/common/rest/ldap/LdapClient.java | 26 ++++++++++--------- .../pro/taskana/task/rest/TaskController.java | 7 ++++- .../TaskRepresentationModelAssembler.java | 4 ++- .../pro/taskana/SpringArchitectureTest.java | 6 ++--- 26 files changed, 92 insertions(+), 57 deletions(-) diff --git a/common/taskana-common-security/src/main/java/pro/taskana/common/internal/security/CurrentUserContextImpl.java b/common/taskana-common-security/src/main/java/pro/taskana/common/internal/security/CurrentUserContextImpl.java index b4f291030..25514f7b2 100644 --- a/common/taskana-common-security/src/main/java/pro/taskana/common/internal/security/CurrentUserContextImpl.java +++ b/common/taskana-common-security/src/main/java/pro/taskana/common/internal/security/CurrentUserContextImpl.java @@ -1,5 +1,7 @@ package pro.taskana.common.internal.security; +import static java.util.function.Predicate.not; + import java.lang.reflect.Method; import java.security.AccessController; import java.security.Principal; @@ -131,7 +133,7 @@ public class CurrentUserContextImpl implements CurrentUserContext { Set principals = subject.getPrincipals(); LOGGER.trace("Public principals of caller: {}", principals); return principals.stream() - .filter(principal -> !(principal instanceof GroupPrincipal)) + .filter(not(GroupPrincipal.class::isInstance)) .map(Principal::getName) .filter(Objects::nonNull) .map(this::convertAccessId) diff --git a/common/taskana-common/src/main/java/pro/taskana/common/internal/configuration/TaskanaConfigurationInitializer.java b/common/taskana-common/src/main/java/pro/taskana/common/internal/configuration/TaskanaConfigurationInitializer.java index 8f49a08a4..f4cdd6653 100644 --- a/common/taskana-common/src/main/java/pro/taskana/common/internal/configuration/TaskanaConfigurationInitializer.java +++ b/common/taskana-common/src/main/java/pro/taskana/common/internal/configuration/TaskanaConfigurationInitializer.java @@ -1,5 +1,7 @@ package pro.taskana.common.internal.configuration; +import static java.util.function.Predicate.not; + import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -110,7 +112,7 @@ public class TaskanaConfigurationInitializer { static List splitStringAndTrimElements( String str, String separator, UnaryOperator modifier) { return Arrays.stream(str.split(Pattern.quote(separator))) - .filter(s -> !s.isEmpty()) + .filter(not(String::isEmpty)) .map(String::trim) .map(modifier) .collect(Collectors.toList()); @@ -134,7 +136,7 @@ public class TaskanaConfigurationInitializer { .filter(m -> m.getName().toLowerCase().contains(field.getName().toLowerCase())) .findFirst(); - if (!hasSetterMethod.isPresent()) { + if (hasSetterMethod.isEmpty()) { throw new SystemException("No setter method for " + field.getName()); } diff --git a/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ObjectAttributeChangeDetector.java b/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ObjectAttributeChangeDetector.java index 682da6fbf..ea1ef1a35 100644 --- a/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ObjectAttributeChangeDetector.java +++ b/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ObjectAttributeChangeDetector.java @@ -1,5 +1,6 @@ package pro.taskana.common.internal.util; +import static java.util.function.Predicate.not; import static pro.taskana.common.internal.util.CheckedFunction.wrap; import java.lang.reflect.Field; @@ -51,9 +52,9 @@ public class ObjectAttributeChangeDetector { List changedAttributes = ReflectionUtil.retrieveAllFields(objectClass).stream() .peek(field -> field.setAccessible(true)) - .filter(field -> !"customAttributes".equals(field.getName())) + .filter(not(field -> "customAttributes".equals(field.getName()))) .map(wrap(field -> Triplet.of(field, field.get(oldObject), field.get(newObject)))) - .filter(t -> !Objects.equals(t.getMiddle(), t.getRight())) + .filter(not(t -> Objects.equals(t.getMiddle(), t.getRight()))) .map(t -> generateChangedAttribute(t.getLeft(), t.getMiddle(), t.getRight())) .collect(Collectors.toList()); diff --git a/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ReflectionUtil.java b/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ReflectionUtil.java index 535e0dc94..2559fd8bd 100644 --- a/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ReflectionUtil.java +++ b/common/taskana-common/src/main/java/pro/taskana/common/internal/util/ReflectionUtil.java @@ -1,5 +1,7 @@ package pro.taskana.common.internal.util; +import static java.util.function.Predicate.not; + import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; @@ -34,7 +36,7 @@ public class ReflectionUtil { fields.addAll(Arrays.asList(currentClass.getDeclaredFields())); currentClass = currentClass.getSuperclass(); } - return fields.stream().filter(f -> !f.isSynthetic()).collect(Collectors.toList()); + return fields.stream().filter(not(Field::isSynthetic)).collect(Collectors.toList()); } // safe because both Long.class and long.class are of type Class diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/jobs/HistoryCleanupJob.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/jobs/HistoryCleanupJob.java index c37fc36a5..82441c46f 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/jobs/HistoryCleanupJob.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/jobs/HistoryCleanupJob.java @@ -1,5 +1,6 @@ package pro.taskana.simplehistory.impl.jobs; +import static java.util.function.Predicate.not; import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.mapping; import static java.util.stream.Collectors.toList; @@ -165,7 +166,8 @@ public class HistoryCleanupJob extends AbstractTaskanaJob { (parentBusinessProcessId, taskHistoryIdsByEventType) -> { if (taskHistoryIdsByEventType.get(TaskHistoryEventType.CREATED.getName()).size() == taskHistoryIdsByEventType.entrySet().stream() - .filter(entry -> !entry.getKey().equals(TaskHistoryEventType.CREATED.getName())) + .filter( + not(entry -> entry.getKey().equals(TaskHistoryEventType.CREATED.getName()))) .mapToInt(stringListEntry -> stringListEntry.getValue().size()) .sum()) { taskIdsToDeleteHistoryEventsFor.addAll( diff --git a/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/Classification.java b/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/Classification.java index 54e6ec169..65eba36da 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/Classification.java +++ b/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/Classification.java @@ -134,6 +134,7 @@ public interface Classification extends ClassificationSummary { * to be set * @deprecated Use {@linkplain #setCustomField(ClassificationCustomField, String)} instead */ + @Deprecated void setCustomAttribute(ClassificationCustomField customField, String value); /** diff --git a/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/ClassificationSummary.java b/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/ClassificationSummary.java index 7285ba5bb..9a40df866 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/ClassificationSummary.java +++ b/lib/taskana-core/src/main/java/pro/taskana/classification/api/models/ClassificationSummary.java @@ -96,6 +96,7 @@ public interface ClassificationSummary { * ClassificationCustomField} * @deprecated Use {@linkplain #getCustomField(ClassificationCustomField)} instead */ + @Deprecated String getCustomAttribute(ClassificationCustomField customField); /** diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/api/models/Task.java b/lib/taskana-core/src/main/java/pro/taskana/task/api/models/Task.java index 92f2cf5ee..9542c4f58 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/api/models/Task.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/api/models/Task.java @@ -129,6 +129,7 @@ public interface Task extends TaskSummary { * @param value the value of the {@linkplain TaskCustomField customField} to be set * @deprecated Use {@linkplain #setCustomField(TaskCustomField, String)} instead */ + @Deprecated void setCustomAttribute(TaskCustomField customField, String value); /** diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/api/models/TaskSummary.java b/lib/taskana-core/src/main/java/pro/taskana/task/api/models/TaskSummary.java index 8b91184f7..5fd6af102 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/api/models/TaskSummary.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/api/models/TaskSummary.java @@ -268,6 +268,7 @@ public interface TaskSummary { * @return the value for the given customField * @deprecated Use {@linkplain #getCustomField(TaskCustomField)} instead */ + @Deprecated String getCustomAttribute(TaskCustomField customField); /** diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/AttachmentHandler.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/AttachmentHandler.java index 617a95fe8..968da18d5 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/AttachmentHandler.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/AttachmentHandler.java @@ -1,5 +1,7 @@ package pro.taskana.task.internal; +import static java.util.function.Predicate.not; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -87,7 +89,7 @@ public class AttachmentHandler { List newAttachments = newTaskImpl.getAttachments().stream() - .filter(a -> !oldAttachmentIds.contains(a.getId())) + .filter(not(a -> oldAttachmentIds.contains(a.getId()))) .collect(Collectors.toList()); for (Attachment attachment : newAttachments) { diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/ObjectReferenceHandler.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/ObjectReferenceHandler.java index ab031e363..ab5074b65 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/ObjectReferenceHandler.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/ObjectReferenceHandler.java @@ -1,5 +1,7 @@ package pro.taskana.task.internal; +import static java.util.function.Predicate.not; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -79,7 +81,7 @@ public class ObjectReferenceHandler { List newObjectReferences = newTaskImpl.getSecondaryObjectReferences().stream() - .filter(o -> !oldObjectReferencesIds.contains(o.getId())) + .filter(not(o -> oldObjectReferencesIds.contains(o.getId()))) .collect(Collectors.toList()); for (ObjectReference objectReference : newObjectReferences) { diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/ServiceLevelHandler.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/ServiceLevelHandler.java index f1c982557..eb18ba692 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/ServiceLevelHandler.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/ServiceLevelHandler.java @@ -1,5 +1,6 @@ package pro.taskana.task.internal; +import static java.util.function.Predicate.not; import static java.util.stream.Collectors.groupingBy; import java.time.Duration; @@ -71,7 +72,9 @@ class ServiceLevelHandler { } if (priorityChanged) { List tasksWithoutManualPriority = - tasks.stream().filter(t -> !t.isManualPriorityActive()).collect(Collectors.toList()); + tasks.stream() + .filter(not(MinimalTaskSummary::isManualPriorityActive)) + .collect(Collectors.toList()); updateTaskPriorityOnClassificationUpdate( tasksWithoutManualPriority, attachments, allInvolvedClassifications); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java index b7abb2412..c578f8f1a 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java @@ -1,5 +1,7 @@ package pro.taskana.task.internal; +import static java.util.function.Predicate.not; + import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.ArrayList; @@ -955,7 +957,7 @@ public class TaskServiceImpl implements TaskService { .collect(Collectors.toSet()); List tasksAuthorizedFor = existingTasks.stream() - .filter(t -> !taskIdsToRemove.contains(t.getTaskId())) + .filter(not(t -> taskIdsToRemove.contains(t.getTaskId()))) .collect(Collectors.toList()); return Pair.of(tasksAuthorizedFor, bulkLog); } @@ -969,7 +971,7 @@ public class TaskServiceImpl implements TaskService { .map(MinimalTaskSummary::getTaskId) .collect(Collectors.toSet()); requestTaskIds.stream() - .filter(taskId -> !existingTaskIds.contains(taskId)) + .filter(not(existingTaskIds::contains)) .forEach(taskId -> bulkLog.addError(taskId, new TaskNotFoundException(taskId))); return bulkLog; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/TaskCleanupJob.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/TaskCleanupJob.java index fc5b00560..a3f0b240f 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/TaskCleanupJob.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/TaskCleanupJob.java @@ -1,5 +1,8 @@ package pro.taskana.task.internal.jobs; +import static java.util.Objects.nonNull; +import static java.util.function.Predicate.not; + import java.time.Duration; import java.time.Instant; import java.util.HashMap; @@ -111,9 +114,9 @@ public class TaskCleanupJob extends AbstractTaskanaJob { List taskIdsNotAllCompletedSameParentBusiness = numberParentTasksShouldHave.entrySet().stream() - .filter(entry -> entry.getKey() != null) - .filter(entry -> !entry.getKey().isEmpty()) - .filter(entry -> !entry.getValue().equals(countParentTask.get(entry.getKey()))) + .filter(entry -> nonNull(entry.getKey())) + .filter(not(entry -> entry.getKey().isEmpty())) + .filter(not(entry -> entry.getValue().equals(countParentTask.get(entry.getKey())))) .map(Map.Entry::getKey) .collect(Collectors.toList()); diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/helper/TaskUpdatePriorityWorker.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/helper/TaskUpdatePriorityWorker.java index de6d7b8c5..27aa40877 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/helper/TaskUpdatePriorityWorker.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/jobs/helper/TaskUpdatePriorityWorker.java @@ -1,5 +1,7 @@ package pro.taskana.task.internal.jobs.helper; +import static java.util.Objects.nonNull; + import java.util.ArrayList; import java.util.List; import java.util.OptionalInt; @@ -83,6 +85,6 @@ public class TaskUpdatePriorityWorker { } public static IntPredicate hasDifferentPriority(TaskSummary taskSummary) { - return prio -> taskSummary != null && prio != taskSummary.getPriority(); + return prio -> nonNull(taskSummary) && prio != taskSummary.getPriority(); } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/Workbasket.java b/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/Workbasket.java index 480b6baaa..d0207a802 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/Workbasket.java +++ b/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/Workbasket.java @@ -36,6 +36,7 @@ public interface Workbasket extends WorkbasketSummary { * @param value the value of the {@linkplain WorkbasketCustomField} to be set * @deprecated Use {@linkplain #setCustomField(WorkbasketCustomField, String)} instead */ + @Deprecated void setCustomAttribute(WorkbasketCustomField customField, String value); /** diff --git a/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/WorkbasketSummary.java b/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/WorkbasketSummary.java index 5601628d4..3df6b34f7 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/WorkbasketSummary.java +++ b/lib/taskana-core/src/main/java/pro/taskana/workbasket/api/models/WorkbasketSummary.java @@ -66,6 +66,7 @@ public interface WorkbasketSummary { * @return the value for the given {@linkplain WorkbasketCustomField} * @deprecated Use {@linkplain #getCustomField(WorkbasketCustomField)} instead */ + @Deprecated String getCustomAttribute(WorkbasketCustomField customField); /** diff --git a/lib/taskana-core/src/test/java/acceptance/ArchitectureTest.java b/lib/taskana-core/src/test/java/acceptance/ArchitectureTest.java index 07546b5ba..d06025cb8 100644 --- a/lib/taskana-core/src/test/java/acceptance/ArchitectureTest.java +++ b/lib/taskana-core/src/test/java/acceptance/ArchitectureTest.java @@ -6,6 +6,7 @@ import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; import static com.tngtech.archunit.library.GeneralCodingRules.NO_CLASSES_SHOULD_ACCESS_STANDARD_STREAMS; import static com.tngtech.archunit.library.GeneralCodingRules.NO_CLASSES_SHOULD_THROW_GENERIC_EXCEPTIONS; import static com.tngtech.archunit.library.dependencies.SlicesRuleDefinition.slices; +import static java.util.function.Predicate.not; import static org.assertj.core.api.Assertions.assertThat; import com.tngtech.archunit.base.DescribedPredicate; @@ -256,7 +257,7 @@ class ArchitectureTest { TASKANA_SUB_PACKAGES.stream() .map(p -> p.split("\\.")[2]) .distinct() - .filter(d -> !"common".equals(d)) + .filter(not("common"::equals)) .map(d -> ".." + d + ".."); ThrowingConsumer testMethod = p -> @@ -285,7 +286,7 @@ class ArchitectureTest { TASKANA_SUB_PACKAGES.stream() .map(p -> p.split("\\.")[2]) .distinct() - .filter(d -> !"monitor".equals(d)) + .filter(not("monitor"::equals)) .map(d -> ".." + d + ".."); ThrowingConsumer testMethod = @@ -352,7 +353,7 @@ class ArchitectureTest { } private ArchCondition implementToString() { - return new ArchCondition("implement toString()") { + return new ArchCondition<>("implement toString()") { @Override public void check(JavaClass javaClass, ConditionEvents conditionEvents) { boolean implementToString = @@ -371,7 +372,7 @@ class ArchitectureTest { } private ArchCondition notImplementToString() { - return new ArchCondition("not implement toString()") { + return new ArchCondition<>("not implement toString()") { @Override public void check(JavaClass javaClass, ConditionEvents conditionEvents) { boolean implementToString = @@ -389,7 +390,7 @@ class ArchitectureTest { } private ArchCondition beAnnotatedWithTestInstancePerClass() { - return new ArchCondition("be annotated with @TestInstance(Lifecycle.PER_CLASS)") { + return new ArchCondition<>("be annotated with @TestInstance(Lifecycle.PER_CLASS)") { @Override public void check(JavaClass item, ConditionEvents events) { Optional testInstanceOptional = @@ -408,7 +409,7 @@ class ArchitectureTest { } private DescribedPredicate areNestedTaskanaIntegrationTestClasses() { - return new DescribedPredicate("are nested TaskanaIntegrationTest classes") { + return new DescribedPredicate<>("are nested TaskanaIntegrationTest classes") { @Override public boolean apply(JavaClass input) { @@ -431,7 +432,7 @@ class ArchitectureTest { } private ArchCondition onlyHaveFieldsWithNoModifierAndPrivateConstants() { - return new ArchCondition("only have fields with no modifier") { + return new ArchCondition<>("only have fields with no modifier") { final Set modifiersForConstants = Set.of(JavaModifier.PRIVATE, JavaModifier.STATIC, JavaModifier.FINAL); @@ -456,7 +457,7 @@ class ArchitectureTest { private static ArchCondition beDefinedInTaskanaSubPackages( List excludePackages) { - return new ArchCondition("all be defined in TASKANA_SUB_PACKAGES") { + return new ArchCondition<>("all be defined in TASKANA_SUB_PACKAGES") { @Override public void check(JavaClass javaClass, ConditionEvents events) { if (TASKANA_SUB_PACKAGES.stream().noneMatch(p -> javaClass.getPackageName().startsWith(p)) @@ -529,7 +530,7 @@ class ArchitectureTest { return values; }); - return new ArchCondition("not use the SQL function 'CURRENT_TIMESTAMP'") { + return new ArchCondition<>("not use the SQL function 'CURRENT_TIMESTAMP'") { @Override public void check(JavaClass javaClass, ConditionEvents events) { for (JavaMethod method : javaClass.getAllMethods()) { diff --git a/lib/taskana-core/src/test/java/acceptance/classification/create/CreateClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/create/CreateClassificationAccTest.java index 36164bef8..d854b7906 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/create/CreateClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/create/CreateClassificationAccTest.java @@ -1,5 +1,6 @@ package acceptance.classification.create; +import static java.util.Objects.nonNull; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -66,7 +67,7 @@ class CreateClassificationAccTest { classificationService.createClassificationQuery().keyIn("Key1").list(); assertThat(classifications) - .allMatch(c -> c.getId() != null) + .allMatch(c -> nonNull(c.getId())) .usingRecursiveFieldByFieldElementComparatorIgnoringFields("id") .containsExactlyInAnyOrder( classification.asSummary(), expectedMasterClassification.asSummary()); @@ -133,7 +134,7 @@ class CreateClassificationAccTest { .list(); assertThat(classifications) - .allMatch(c -> c.getId() != null) + .allMatch(c -> nonNull(c.getId())) .contains(childClassification.asSummary()); }; diff --git a/lib/taskana-core/src/test/java/acceptance/task/query/QueryTasksWithSortingAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/query/QueryTasksWithSortingAccTest.java index 07c1fbad5..024937f33 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/query/QueryTasksWithSortingAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/query/QueryTasksWithSortingAccTest.java @@ -1,6 +1,7 @@ package acceptance.task.query; import static java.lang.String.CASE_INSENSITIVE_ORDER; +import static java.util.Objects.nonNull; import static org.assertj.core.api.Assertions.assertThat; import static pro.taskana.common.api.BaseQuery.SortDirection.ASCENDING; import static pro.taskana.common.api.BaseQuery.SortDirection.DESCENDING; @@ -392,7 +393,8 @@ class QueryTasksWithSortingAccTest extends AbstractAccTest { .createTaskQuery() .orderByOwnerLongName(DESCENDING) .list(); - assertThat(results.stream().filter(r -> r.getOwnerLongName() != null)) + assertThat(results) + .filteredOn(r -> nonNull(r.getOwnerLongName())) .hasSizeGreaterThan(2) .extracting(TaskSummary::getOwnerLongName) .isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed()); @@ -403,7 +405,8 @@ class QueryTasksWithSortingAccTest extends AbstractAccTest { void should_OrderByOwnerLongNameAsc() { List results = taskanaEngine.getTaskService().createTaskQuery().orderByOwnerLongName(ASCENDING).list(); - assertThat(results.stream().filter(r -> r.getOwnerLongName() != null)) + assertThat(results) + .filteredOn(r -> nonNull(r.getOwnerLongName())) .hasSizeGreaterThan(2) .extracting(TaskSummary::getOwnerLongName) .isSortedAccordingTo(CASE_INSENSITIVE_ORDER); diff --git a/pom.xml b/pom.xml index 534370f49..a3f2f44a6 100644 --- a/pom.xml +++ b/pom.xml @@ -191,16 +191,6 @@ - - jdk8-compatibility - - [9,) - - - 8 - ${java.version} - - snapshot diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java index 95aa3b58b..61dd71c0f 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java @@ -1,5 +1,7 @@ package pro.taskana.common.rest; +import static java.util.function.Predicate.not; + import java.io.Serializable; import java.util.Arrays; import java.util.Collection; @@ -228,7 +230,7 @@ public class TaskanaRestExceptionHandler extends ResponseEntityExceptionHandler Set enumConstantSet = new HashSet<>(enumConstants); return getRejectedValues(typeMismatchException) - .filter(value -> !enumConstantSet.contains(value)) + .filter(not(enumConstantSet::contains)) .map(value -> new MalformedQueryParameter(queryParameter, value, enumConstants)) .collect(Collectors.toList()); } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java index c858cc400..c18cf01c3 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java @@ -1,5 +1,7 @@ package pro.taskana.common.rest.ldap; +import static java.util.function.Predicate.not; + import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -565,18 +567,18 @@ public class LdapClient { List checkForMissingConfigurations() { return Arrays.stream(LdapSettings.values()) // optional settings - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_MAX_NUMBER_OF_RETURNED_ACCESS_IDS)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_MIN_SEARCH_FOR_LENGTH)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_USER_EMAIL_ATTRIBUTE)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_USER_PHONE_ATTRIBUTE)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_USER_MOBILE_PHONE_ATTRIBUTE)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_1_ATTRIBUTE)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_2_ATTRIBUTE)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_3_ATTRIBUTE)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_4_ATTRIBUTE)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_GROUPS_OF_USER)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_GROUPS_OF_USER_NAME)) - .filter(p -> !p.equals(LdapSettings.TASKANA_LDAP_GROUPS_OF_USER_TYPE)) + .filter(not(LdapSettings.TASKANA_LDAP_MAX_NUMBER_OF_RETURNED_ACCESS_IDS::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_MIN_SEARCH_FOR_LENGTH::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_USER_EMAIL_ATTRIBUTE::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_USER_PHONE_ATTRIBUTE::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_USER_MOBILE_PHONE_ATTRIBUTE::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_1_ATTRIBUTE::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_2_ATTRIBUTE::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_3_ATTRIBUTE::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_USER_ORG_LEVEL_4_ATTRIBUTE::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_GROUPS_OF_USER::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_GROUPS_OF_USER_NAME::equals)) + .filter(not(LdapSettings.TASKANA_LDAP_GROUPS_OF_USER_TYPE::equals)) .filter(p -> p.getValueFromEnv(env) == null) .collect(Collectors.toList()); } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java index e3d052b57..d90c03bf6 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java @@ -1,7 +1,11 @@ package pro.taskana.task.rest; +import static java.util.function.Predicate.not; + import java.beans.ConstructorProperties; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.function.BiConsumer; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; @@ -130,9 +134,10 @@ public class TaskController { BulkOperationResults result = taskService.deleteTasks(taskIdsToDelete); + Set failedIds = new HashSet<>(result.getFailedIds()); List successfullyDeletedTaskSummaries = taskSummaries.stream() - .filter(summary -> !result.getFailedIds().contains(summary.getId())) + .filter(not(summary -> failedIds.contains(summary.getId()))) .collect(Collectors.toList()); return ResponseEntity.ok( diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java index ab29f2daf..2cfc8a9c8 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java @@ -1,5 +1,6 @@ package pro.taskana.task.rest.assembler; +import static java.util.function.Predicate.not; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn; @@ -179,7 +180,8 @@ public class TaskRepresentationModelAssembler .collect(Collectors.toMap(CustomAttribute::getKey, CustomAttribute::getValue))); task.setCallbackInfo( repModel.getCallbackInfo().stream() - .filter(e -> Objects.nonNull(e.getKey()) && !e.getKey().isEmpty()) + .filter(e -> Objects.nonNull(e.getKey())) + .filter(not(e -> e.getKey().isEmpty())) .collect(Collectors.toMap(CustomAttribute::getKey, CustomAttribute::getValue))); return task; } diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/SpringArchitectureTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/SpringArchitectureTest.java index 64af9aa0f..d21c34e39 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/SpringArchitectureTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/SpringArchitectureTest.java @@ -1,6 +1,7 @@ package pro.taskana; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; +import static java.util.function.Predicate.not; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -36,12 +37,11 @@ class SpringArchitectureTest { } private ArchCondition shouldOnlyHaveAnnotatedFields() { - return new ArchCondition( - "all fields should have a @JsonProperty or @JsonIgnore annotation") { + return new ArchCondition<>("all fields should have a @JsonProperty or @JsonIgnore annotation") { @Override public void check(JavaClass javaClass, ConditionEvents events) { javaClass.getAllFields().stream() - .filter(field -> !field.reflect().isSynthetic()) + .filter(not(field -> field.reflect().isSynthetic())) .filter( field -> Stream.of(JsonProperty.class, JsonIgnore.class)