From 65af0e588588f15bbb1498403ee49f3c41ed04a0 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Tue, 20 May 2014 15:04:11 +0000 Subject: QPID-5715: [Java Broker] Make virtualhosts respect the states ACTIVE and STOPPED * Changes in virtualhost state are now persisted to store. * VirtualHostState eliminated. The PASSIVE state used when a BDB HA Virtualhost is in replica is replaced by UNAVAILABLE. Work by me and Andrew MacBean . git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1596281 13f79535-47bb-0310-9956-ffa450edef68 --- .../berkeleydb/BDBHAVirtualHostNodeImpl.java | 37 ++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'qpid/java/bdbstore/src') diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java index c019465176..4061da177b 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java @@ -44,6 +44,8 @@ import com.sleepycat.je.rep.util.ReplicationGroupAdmin; import com.sleepycat.je.rep.utilint.HostPortPair; import org.apache.log4j.Logger; + +import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.logging.messages.ConfigStoreMessages; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.BrokerModel; @@ -57,6 +59,7 @@ import org.apache.qpid.server.model.StateTransition; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; +import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.VirtualHostStoreUpgraderAndRecoverer; @@ -66,7 +69,6 @@ import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironment import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacadeFactory; import org.apache.qpid.server.store.berkeleydb.replication.ReplicationGroupListener; import org.apache.qpid.server.util.ServerScopedRuntimeException; -import org.apache.qpid.server.virtualhost.VirtualHostState; import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode; @ManagedObject( category = false, type = "BDB_HA" ) @@ -702,12 +704,41 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode attributes, VirtualHostNode virtualHostNode) { super(attributes, virtualHostNode); - setState(VirtualHostState.PASSIVE); } @Override - public void onCreate() + protected C addChild(final Class childClass, + final Map attributes, + final ConfiguredObject... otherParents) + { + throwUnsupportedForReplica(); + return null; + } + + @Override + public ExchangeImpl createExchange(final Map attributes) + { + throwUnsupportedForReplica(); + return null; + } + + @Override + public AMQQueue createQueue(final Map attributes) + { + throwUnsupportedForReplica(); + return null; + } + + @Override + public State getState() + { + return State.UNAVAILABLE; + } + + private void throwUnsupportedForReplica() { + throw new IllegalStateException("The virtual host state of " + getState() + + " does not permit this operation."); } } -- cgit v1.2.1