diff options
Diffstat (limited to 'appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src')
3 files changed, 21 insertions, 24 deletions
diff --git a/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/ExecutionQueueServiceImpl.java b/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/ExecutionQueueServiceImpl.java index 2ac383696..672f4aa9b 100644 --- a/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/ExecutionQueueServiceImpl.java +++ b/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/ExecutionQueueServiceImpl.java @@ -21,6 +21,7 @@ package org.openecomp.appc.executionqueue.impl; +import java.time.Instant; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; @@ -29,6 +30,7 @@ import org.openecomp.appc.exceptions.APPCException; import org.openecomp.appc.executionqueue.ExecutionQueueService; import org.openecomp.appc.executionqueue.MessageExpirationListener; import org.openecomp.appc.executionqueue.impl.object.QueueMessage; + import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; @@ -49,7 +51,7 @@ public class ExecutionQueueServiceImpl<M extends Runnable> implements ExecutionQ @Override public void putMessage(M message, long timeout, TimeUnit unit) throws APPCException{ try { - Date expirationTime = calculateExpirationTime(timeout,unit); + Instant expirationTime = calculateExpirationTime(timeout,unit); QueueManager queueManager = QueueManager.getInstance(); boolean enqueueTask = queueManager.enqueueTask(new QueueMessage<M>(message,expirationTime)); if(!enqueueTask){ @@ -66,15 +68,15 @@ public class ExecutionQueueServiceImpl<M extends Runnable> implements ExecutionQ QueueManager.getInstance().setListener(listener); } - private Date calculateExpirationTime(long timeToLive, TimeUnit unit) { - Date expirationTime = null; - if(timeToLive > 0){ - long currentTime = System.currentTimeMillis(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(currentTime + unit.toMillis(timeToLive)); - expirationTime = cal.getTime(); + private Instant calculateExpirationTime(long timeToLive, TimeUnit unit) { + if (timeToLive > 0 && unit != null) { + // as of Java 8, there is no built-in conversion method from + // TimeUnit to ChronoUnit; do it manually + return Instant.now().plusMillis(unit.toMillis(timeToLive)); + } else { + // never expires + return Instant.MAX; } - return expirationTime; } } diff --git a/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/QueueManager.java b/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/QueueManager.java index cf625b4d5..056bfda29 100644 --- a/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/QueueManager.java +++ b/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/QueueManager.java @@ -28,6 +28,7 @@ import java.util.concurrent.LinkedBlockingQueue; import org.openecomp.appc.executionqueue.MessageExpirationListener; import org.openecomp.appc.executionqueue.helper.Util; import org.openecomp.appc.executionqueue.impl.object.QueueMessage; + import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; @@ -69,7 +70,7 @@ public class QueueManager { while (true){ try{ QueueMessage<? extends Runnable> queueMessage = queue.take(); - if(messageExpired(queueMessage)){ + if (queueMessage.isExpired()) { logger.debug("Message expired "+ queueMessage.getMessage()); if(listener != null){ listener.onMessageExpiration(queueMessage.getMessage()); @@ -98,11 +99,4 @@ public class QueueManager { return queue.offer(queueMessage); } - private boolean messageExpired(QueueMessage<? extends Runnable> queueMessage) { - if(queueMessage.getExpirationTime() != null){ - return queueMessage.getExpirationTime().getTime() < System.currentTimeMillis(); - } - return false; - } - } diff --git a/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/object/QueueMessage.java b/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/object/QueueMessage.java index bbf805871..d3097e650 100644 --- a/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/object/QueueMessage.java +++ b/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/src/main/java/org/openecomp/appc/executionqueue/impl/object/QueueMessage.java @@ -21,22 +21,23 @@ package org.openecomp.appc.executionqueue.impl.object; -import java.util.Date; +import java.time.Instant; +import java.util.Objects; public class QueueMessage<M extends Runnable> { - M message; - Date expirationTime; - public QueueMessage(M message, Date expirationTime){ + private final M message; + private final Instant expirationTime; + public QueueMessage(M message, Instant expirationTime){ this.message = message; - this.expirationTime = expirationTime; + this.expirationTime = Objects.requireNonNull(expirationTime); } public M getMessage() { return message; } - public Date getExpirationTime() { - return expirationTime; + public boolean isExpired() { + return expirationTime.isBefore(Instant.now()); } } |