From 2a230f2c7aeb0fc798ba9893f5eaa194ad5ffcd7 Mon Sep 17 00:00:00 2001 From: smcvb Date: Tue, 12 Jun 2018 16:36:15 +0200 Subject: [PATCH] Drop use of DelayedTask as deadlines aren't scheduled by the aggregate Drop use of DelayedTask as deadlines aren't scheduled by the aggregate directly, but through a provided DeadlineManager #220 --- .../model/inspection/AnnotatedAggregate.java | 47 ++----------------- 1 file changed, 5 insertions(+), 42 deletions(-) diff --git a/core/src/main/java/org/axonframework/commandhandling/model/inspection/AnnotatedAggregate.java b/core/src/main/java/org/axonframework/commandhandling/model/inspection/AnnotatedAggregate.java index aa0b731061..83308c766f 100644 --- a/core/src/main/java/org/axonframework/commandhandling/model/inspection/AnnotatedAggregate.java +++ b/core/src/main/java/org/axonframework/commandhandling/model/inspection/AnnotatedAggregate.java @@ -32,9 +32,11 @@ import org.axonframework.messaging.unitofwork.CurrentUnitOfWork; import org.axonframework.messaging.unitofwork.UnitOfWork; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.PriorityQueue; +import java.util.Queue; import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; @@ -60,8 +62,7 @@ public class AnnotatedAggregate extends AggregateLifecycle implements Aggrega private final AggregateModel inspector; private final RepositoryProvider repositoryProvider; - private final PriorityQueue delayedTasks = new PriorityQueue<>(); - private final AtomicInteger delayedTasksSequence = new AtomicInteger(0); + private final Queue delayedTasks = new LinkedList<>(); private final EventBus eventBus; private T aggregateRoot; private boolean applying = false; @@ -453,8 +454,7 @@ protected

ApplyMore doApply(P payload, MetaData metaData) { applying = false; } } else { - delayedTasks.add(DelayedTask.highPriorityTask(() -> publish(createMessage(payload, metaData)), - delayedTasksSequence.getAndIncrement())); + delayedTasks.add(() -> publish(createMessage(payload, metaData))); } return this; } @@ -499,7 +499,7 @@ public ApplyMore andThenApply(Supplier payloadOrMessageSupplier) { @Override public ApplyMore andThen(Runnable runnable) { if (applying || aggregateRoot == null) { - delayedTasks.add(DelayedTask.highPriorityTask(runnable, delayedTasksSequence.getAndIncrement())); + delayedTasks.add(runnable); } else { runnable.run(); } @@ -560,41 +560,4 @@ public GenericDomainEventMessage

andMetaData(Map additionalMetaDat } } } - - private static class DelayedTask implements Runnable, Comparable { - - private static final int HIGH_PRIORITY = 1; - private static final int LOW_PRIORITY = 10; - - private final int priority; - private final int order; - private final Runnable delegate; - - private DelayedTask(int priority, int order, Runnable delegate) { - this.priority = priority; - this.order = order; - this.delegate = delegate; - } - - private static DelayedTask highPriorityTask(Runnable delegate, int order) { - return new DelayedTask(HIGH_PRIORITY, order, delegate); - } - - private static DelayedTask lowPriorityTask(Runnable delegate, int order) { - return new DelayedTask(LOW_PRIORITY, order, delegate); - } - - @Override - public void run() { - delegate.run(); - } - - @Override - public int compareTo(DelayedTask o) { - if (priority == o.priority) { - return Integer.compare(order, o.order); - } - return Integer.compare(priority, o.priority); - } - } }