diff options
| author | Keith Wall <kwall@apache.org> | 2015-03-12 15:41:46 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2015-03-12 15:41:46 +0000 |
| commit | 6e98063ae07795f988ad26fdcf49d204d88b39c3 (patch) | |
| tree | 7fa009399d501d9ad3e9f77f735d85a2b75807cf /qpid/java/broker-plugins/access-control | |
| parent | b66b4f357a756449c7e7184be4d963fb36f5b2d4 (diff) | |
| parent | 49c02f9fcf8c2dd1b063c887f8948f840ec785c2 (diff) | |
| download | qpid-python-6e98063ae07795f988ad26fdcf49d204d88b39c3.tar.gz | |
QPID-6429, QPID-6262, QPID-5818: [Java Broker] Utilise NIO, service connections using a thread pool, AMQP model mutating actions should use task executors
Work of Rob Godfrey and myself.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1666224 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/access-control')
2 files changed, 33 insertions, 7 deletions
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java index 0904379ab4..99db75ac91 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java @@ -25,6 +25,9 @@ import java.util.Collections; import java.util.Map; import java.util.Set; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.IllegalConfigurationException; @@ -149,7 +152,7 @@ public class ACLFileAccessControlProviderImpl @StateTransition(currentState = {State.UNINITIALIZED, State.QUIESCED, State.ERRORED}, desiredState = State.ACTIVE) - private void activate() + private ListenableFuture<Void> activate() { if(_broker.isManagementMode()) @@ -177,6 +180,7 @@ public class ACLFileAccessControlProviderImpl } } } + return Futures.immediateFuture(null); } @Override @@ -190,17 +194,36 @@ public class ACLFileAccessControlProviderImpl } @StateTransition(currentState = State.UNINITIALIZED, desiredState = State.QUIESCED) - private void startQuiesced() + private ListenableFuture<Void> startQuiesced() { setState(State.QUIESCED); + return Futures.immediateFuture(null); } @StateTransition(currentState = {State.ACTIVE, State.QUIESCED, State.ERRORED}, desiredState = State.DELETED) - private void doDelete() + private ListenableFuture<Void> doDelete() { - close(); - setState(State.DELETED); - deleted(); + final SettableFuture<Void> returnVal = SettableFuture.create(); + closeAsync().addListener( + new Runnable() + { + @Override + public void run() + { + try + { + + setState(State.DELETED); + deleted(); + } + finally + { + returnVal.set(null); + } + } + }, getTaskExecutor().getExecutor() + ); + return returnVal; } public AccessControl getAccessControl() diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java index a34ac16e80..2a691b3652 100644 --- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java +++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java @@ -30,6 +30,7 @@ import java.util.UUID; import java.util.regex.Pattern; import org.apache.qpid.server.configuration.IllegalConfigurationException; +import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor; import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.model.AccessControlProvider; import org.apache.qpid.server.model.Broker; @@ -54,7 +55,9 @@ public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase when(_broker.getObjectFactory()).thenReturn(_objectFactory); when(_broker.getModel()).thenReturn(_objectFactory.getModel()); when(_broker.getCategoryClass()).thenReturn(Broker.class); - when(_broker.getTaskExecutor()).thenReturn(mock(TaskExecutor.class)); + TaskExecutor taskExecutor = new CurrentThreadTaskExecutor(); + taskExecutor.start(); + when(_broker.getTaskExecutor()).thenReturn(taskExecutor); } public void testCreateInstanceWhenAclFileIsNotPresent() |
