From ae1ccfdd01112311a9e9d0870928a0052578be8f Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Sat, 26 Apr 2014 22:22:10 +0000 Subject: QPID-5715: [Java Broker]: Refactor VHN implementations to avoid duplicated code git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1590316 13f79535-47bb-0310-9956-ffa450edef68 --- .../berkeleydb/BDBHAVirtualHostNodeImpl.java | 218 +++------------------ 1 file changed, 27 insertions(+), 191 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 fff5c63337..55f90ebbcb 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 @@ -21,29 +21,20 @@ package org.apache.qpid.server.virtualhostnode.berkeleydb; import java.security.PrivilegedAction; -import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.atomic.AtomicReference; import javax.security.auth.Subject; import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.updater.TaskExecutor; -import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.messages.ConfigStoreMessages; -import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject; -import org.apache.qpid.server.model.AbstractConfiguredObject; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.ConfiguredObjectFactory; -import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.ManagedAttributeField; import org.apache.qpid.server.model.ManagedObject; import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.security.SecurityManager; @@ -55,12 +46,13 @@ import org.apache.qpid.server.store.berkeleydb.BDBMessageStore; import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade; import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacadeFactory; import org.apache.qpid.server.virtualhost.VirtualHostState; +import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode; import com.sleepycat.je.rep.StateChangeEvent; import com.sleepycat.je.rep.StateChangeListener; @ManagedObject( category = false, type = "BDB_HA" ) -public class BDBHAVirtualHostNodeImpl extends AbstractConfiguredObject implements BDBHAVirtualHostNode +public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode implements BDBHAVirtualHostNode { private static final Logger LOGGER = Logger.getLogger(BDBHAVirtualHostNodeImpl.class); @@ -97,27 +89,9 @@ public class BDBHAVirtualHostNodeImpl extends AbstractConfiguredObject _replicatedEnvironmentConfiguration; - //TODO: remove this field - @ManagedAttributeField - private boolean _messageStoreProvider; - - private final AtomicReference _state = new AtomicReference(State.INITIALISING); - private final Broker _broker; - private final ConfiguredObjectFactory _objectFactory; - private final EventLogger _eventLogger; - - private MessageStoreLogSubject _configurationStoreLogSubject; - private BDBMessageStore _durableConfigurationStore; - - @SuppressWarnings("rawtypes") - protected BDBHAVirtualHostNodeImpl(Broker broker, Map attributes, TaskExecutor taskExecutor) + public BDBHAVirtualHostNodeImpl(Broker broker, Map attributes, TaskExecutor taskExecutor) { - super(Collections.,ConfiguredObject>singletonMap(Broker.class, broker), attributes, taskExecutor); - _broker = broker; - _objectFactory = _broker.getParent(SystemContext.class).getObjectFactory(); - SystemContext systemContext = _broker.getParent(SystemContext.class); - _eventLogger = systemContext.getEventLogger(); - + super(broker, attributes, taskExecutor); } @Override @@ -138,44 +112,6 @@ public class BDBHAVirtualHostNodeImpl extends AbstractConfiguredObject getVirtualHost() - { - @SuppressWarnings("rawtypes") - Collection children = getChildren(VirtualHost.class); - if (children.size() == 0) - { - return null; - } - else if (children.size() == 1) - { - return children.iterator().next(); - } - else - { - throw new IllegalStateException(this + " has an unexpected number of virtualhost children, size " + children.size()); - } - } - - - @Override - public DurableConfigurationStore getConfigurationStore() - { - return _durableConfigurationStore; - } - - @Override - public State getState() - { - return _state.get(); - } - - @Override - public LifetimePolicy getLifetimePolicy() - { - return LifetimePolicy.PERMANENT; - } - @Override public String getGroupName() { @@ -230,77 +166,11 @@ public class BDBHAVirtualHostNodeImpl extends AbstractConfiguredObject attributes = buildAttributesForStore(); - - _durableConfigurationStore.openConfigurationStore(this, attributes); - - _eventLogger.message(_configurationStoreLogSubject, ConfigStoreMessages.CREATED()); - _eventLogger.message(_configurationStoreLogSubject, ConfigStoreMessages.STORE_LOCATION(getStorePath())); - - - ReplicatedEnvironmentFacade environmentFacade = (ReplicatedEnvironmentFacade) _durableConfigurationStore.getEnvironmentFacade(); - environmentFacade.setStateChangeListener(new BDBHAMessageStoreStateChangeListener()); + return (BDBMessageStore) super.getConfigurationStore(); } - private void stop() + protected DurableConfigurationStore createConfigurationStore() { - destroyVirtualHostIfExist(); - _durableConfigurationStore.closeConfigurationStore(); - _eventLogger.message(_configurationStoreLogSubject, ConfigStoreMessages.CLOSE()); + return new BDBMessageStore(new ReplicatedEnvironmentFacadeFactory()); } - private void delete() + @Override + protected void activate() { - VirtualHost virtualHost = getVirtualHost(); - if (virtualHost != null) + if (LOGGER.isDebugEnabled()) { - virtualHost.setDesiredState(virtualHost.getState(), State.DELETED); + LOGGER.debug("Activating virtualhost node " + this); } - //TODO: this needs to be called from parent - deleted(); + Map attributes = buildAttributesForStore(); - _durableConfigurationStore.onDelete(); + getConfigurationStore().openConfigurationStore(this, attributes); - } + getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.CREATED()); + getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(getStorePath())); - private Map buildAttributesForStore() - { - final Map attributes = new HashMap(); - Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), new PrivilegedAction() - { - @Override - public Object run() - { - for (String attributeName : getAttributeNames()) - { - Object value = getAttribute(attributeName); - attributes.put(attributeName, value); - } - return null; - } - }); - attributes.put(IS_MESSAGE_STORE_PROVIDER, true); - return attributes; + ReplicatedEnvironmentFacade environmentFacade = (ReplicatedEnvironmentFacade) getConfigurationStore().getEnvironmentFacade(); + environmentFacade.setStateChangeListener(new BDBHAMessageStoreStateChangeListener()); } private void onMaster() @@ -395,12 +231,12 @@ public class BDBHAVirtualHostNodeImpl extends AbstractConfiguredObject host = getVirtualHost(); -- cgit v1.2.1