From a2dfed6abeaad71e69d9d73c6db42b47d7d93c66 Mon Sep 17 00:00:00 2001 From: Alex Rudyy Date: Fri, 4 Jul 2014 01:16:07 +0000 Subject: QPID-5867: Add intruder protection functionality for a cluster of BDB HA virtual host nodes git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1607772 13f79535-47bb-0310-9956-ffa450edef68 --- .../server/configuration/updater/TaskExecutor.java | 3 ++ .../configuration/updater/TaskExecutorImpl.java | 3 +- .../virtualhostnode/AbstractVirtualHostNode.java | 9 ++++- .../updater/CurrentThreadTaskExecutor.java | 43 ++++++++++++++++++++++ 4 files changed, 55 insertions(+), 3 deletions(-) (limited to 'qpid/java/broker-core/src') diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java index c1e2f59bd8..e0c03fe822 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.configuration.updater; import java.util.concurrent.CancellationException; +import java.util.concurrent.Future; public interface TaskExecutor { @@ -40,4 +41,6 @@ public interface TaskExecutor T run(Task task) throws CancellationException; + Future submit(Task task) throws CancellationException; + } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java index b140fc4a61..96e4e256b2 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java @@ -117,7 +117,8 @@ public class TaskExecutorImpl implements TaskExecutor } } - Future submit(Task task) + @Override + public Future submit(Task task) { checkState(); if (LOGGER.isDebugEnabled()) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java index 44bc923f0e..0cb69e4cd8 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java @@ -88,7 +88,7 @@ public abstract class AbstractVirtualHostNode Future submit(Task task) throws CancellationException + { + checkThread(); + final T result = task.execute(); + return new Future() + { + @Override + public boolean cancel(boolean mayInterruptIfRunning) + { + return true; + } + + @Override + public boolean isCancelled() + { + return false; + } + + @Override + public boolean isDone() + { + return true; + } + + @Override + public T get() throws InterruptedException, ExecutionException + { + return result; + } + + @Override + public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException + { + return result; + } + }; + } + public static TaskExecutor newStartedInstance() { TaskExecutor executor = new CurrentThreadTaskExecutor(); -- cgit v1.2.1