You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/04/20 03:32:50 UTC
svn commit: r1588715 [1/2] - in /qpid/trunk/qpid/java:
bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/
broker-core/src/main/java/org/apache/qpid/server/binding/
broker-core/src/main/java/org/apache/qpid/server/configuration/updater/
bro...
Author: rgodfrey
Date: Sun Apr 20 01:32:50 2014
New Revision: 1588715
URL: http://svn.apache.org/r1588715
Log:
QPID-5712 : [Java Broker] Remove VirtualHostRegistry and remove redundant maps from BrokerAdapter
Removed:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/ChangeAttributesTask.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/ChangeStateTask.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/CreateChildTask.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostRegistry.java
Modified:
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/SetAttributeTask.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/updater/TaskExecutorTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ConnectionOpenMethodHandler.java
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/state/AMQStateManager.java
qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java
Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java Sun Apr 20 01:32:50 2014
@@ -59,6 +59,7 @@ public class VirtualHostTest extends Qpi
private File _bdbStorePath;
private VirtualHost<?,?,?> _host;
private ConfigurationEntryStore _store;
+ private TaskExecutor _taskExecutor;
@Override
protected void setUp() throws Exception
@@ -67,9 +68,9 @@ public class VirtualHostTest extends Qpi
_store = mock(ConfigurationEntryStore.class);
_broker = BrokerTestHelper.createBrokerMock();
- TaskExecutor taslExecutor = mock(TaskExecutor.class);
- when(taslExecutor.isTaskExecutorThread()).thenReturn(true);
- when(_broker.getTaskExecutor()).thenReturn(taslExecutor);
+ _taskExecutor = new TaskExecutor();
+ _taskExecutor.start();
+ when(_broker.getTaskExecutor()).thenReturn(_taskExecutor);
_statisticsGatherer = mock(StatisticsGatherer.class);
@@ -89,6 +90,8 @@ public class VirtualHostTest extends Qpi
}
finally
{
+ _taskExecutor.stopImmediately();
+
if (_bdbStorePath != null)
{
FileUtils.delete(_bdbStorePath, true);
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java Sun Apr 20 01:32:50 2014
@@ -29,6 +29,7 @@ import java.util.concurrent.CopyOnWriteA
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.exchange.AbstractExchange;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.logging.EventLogger;
@@ -255,26 +256,22 @@ public class BindingImpl
public void setArguments(final Map<String, Object> arguments)
{
- if(getTaskExecutor().isTaskExecutorThread())
- {
- _arguments = arguments;
- super.setAttribute(ARGUMENTS, getActualAttributes().get(ARGUMENTS), arguments);
- if (isDurable())
- {
- VirtualHostImpl<?, ?, ?> vhost = (VirtualHostImpl<?, ?, ?>) _exchange.getParent(VirtualHost.class);
- vhost.getDurableConfigurationStore().update(true, asObjectRecord());
- }
- }
- else
- {
- getTaskExecutor().submitAndWait(new Runnable()
- {
- @Override
- public void run()
+ runTask(new TaskExecutor.VoidTask()
{
- setArguments(arguments);
+ @Override
+ public void execute()
+ {
+ _arguments = arguments;
+ BindingImpl.super.setAttribute(ARGUMENTS, getActualAttributes().get(ARGUMENTS), arguments);
+ if (isDurable())
+ {
+ VirtualHostImpl<?, ?, ?> vhost =
+ (VirtualHostImpl<?, ?, ?>) _exchange.getParent(VirtualHost.class);
+ vhost.getDurableConfigurationStore().update(true, asObjectRecord());
+ }
+ }
}
- });
- }
+ );
+
}
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/SetAttributeTask.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/SetAttributeTask.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/SetAttributeTask.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/SetAttributeTask.java Sun Apr 20 01:32:50 2014
@@ -60,7 +60,7 @@ public final class SetAttributeTask impl
}
@Override
- public Object call()
+ public Object execute()
{
return _object.setAttribute(_attributeName, _expectedValue, _desiredValue);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java Sun Apr 20 01:32:50 2014
@@ -49,11 +49,27 @@ public class TaskExecutor
private final AtomicReference<State> _state;
private volatile ExecutorService _executor;
- public static interface Task<X> extends Callable<X>
+ public static interface Task<X>
{
- X call();
+ X execute();
}
+ public static interface VoidTask
+ {
+ void execute();
+ }
+
+ public static interface TaskWithException<X,E extends Exception>
+ {
+ X execute() throws E;
+ }
+
+ public static interface VoidTaskWithException<E extends Exception>
+ {
+ void execute() throws E;
+ }
+
+
public TaskExecutor()
{
_state = new AtomicReference<State>(State.INITIALISING);
@@ -142,20 +158,109 @@ public class TaskExecutor
return future;
}
- public void submitAndWait(final Runnable task) throws CancellationException
+ public void run(final VoidTask task) throws CancellationException
{
- submitAndWait(new Task<Void>()
+ run(new Task<Void>()
{
@Override
- public Void call()
+ public Void execute()
{
- task.run();
+ task.execute();
return null;
}
});
}
- public <T> T submitAndWait(Task<T> task) throws CancellationException
+ private static class ExceptionTaskWrapper<T, E extends Exception> implements Task<T>
+ {
+ private final TaskWithException<T,E> _underlying;
+ private E _exception;
+
+ private ExceptionTaskWrapper(final TaskWithException<T, E> underlying)
+ {
+ _underlying = underlying;
+ }
+
+
+ @Override
+ public T execute()
+ {
+ try
+ {
+ return _underlying.execute();
+ }
+ catch (Exception e)
+ {
+ _exception = (E) e;
+ return null;
+ }
+ }
+
+ E getException()
+ {
+ return _exception;
+ }
+ }
+
+
+ private static class ExceptionVoidTaskWrapper<E extends Exception> implements Task<Void>
+ {
+ private final VoidTaskWithException<E> _underlying;
+ private E _exception;
+
+ private ExceptionVoidTaskWrapper(final VoidTaskWithException<E> underlying)
+ {
+ _underlying = underlying;
+ }
+
+
+ @Override
+ public Void execute()
+ {
+ try
+ {
+ _underlying.execute();
+
+ }
+ catch (Exception e)
+ {
+ _exception = (E) e;
+ }
+ return null;
+ }
+
+ E getException()
+ {
+ return _exception;
+ }
+ }
+
+ public <T, E extends Exception> T run(TaskWithException<T,E> task) throws CancellationException, E
+ {
+ ExceptionTaskWrapper<T,E> wrapper = new ExceptionTaskWrapper<T, E>(task);
+ T result = run(wrapper);
+ if(wrapper.getException() != null)
+ {
+ throw wrapper.getException();
+ }
+ else
+ {
+ return result;
+ }
+ }
+
+
+ public <E extends Exception> void run(VoidTaskWithException<E> task) throws CancellationException, E
+ {
+ ExceptionVoidTaskWrapper<E> wrapper = new ExceptionVoidTaskWrapper<E>(task);
+ run(wrapper);
+ if(wrapper.getException() != null)
+ {
+ throw wrapper.getException();
+ }
+ }
+
+ public <T> T run(Task<T> task) throws CancellationException
{
try
{
@@ -207,7 +312,7 @@ public class TaskExecutor
{
LOGGER.debug("Performing task " + userTask);
}
- T result = userTask.call();
+ T result = userTask.execute();
if (LOGGER.isDebugEnabled())
{
LOGGER.debug("Task " + userTask + " is performed successfully with result:" + result);
@@ -215,7 +320,7 @@ public class TaskExecutor
return result;
}
- private class CallableWrapper<T> implements Task<T>
+ private class CallableWrapper<T> implements Callable<T>
{
private Task<T> _userTask;
private Subject _contextSubject;
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Sun Apr 20 01:32:50 2014
@@ -48,10 +48,6 @@ import java.util.concurrent.atomic.Atomi
import javax.security.auth.Subject;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.configuration.updater.ChangeAttributesTask;
-import org.apache.qpid.server.configuration.updater.ChangeStateTask;
-import org.apache.qpid.server.configuration.updater.CreateChildTask;
-import org.apache.qpid.server.configuration.updater.SetAttributeTask;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
@@ -544,23 +540,25 @@ public abstract class AbstractConfigured
public final State setDesiredState(final State currentState, final State desiredState)
throws IllegalStateTransitionException, AccessControlException
{
- if (_taskExecutor.isTaskExecutorThread())
- {
- authoriseSetDesiredState(currentState, desiredState);
- if (setState(currentState, desiredState))
- {
- notifyStateChanged(currentState, desiredState);
- return desiredState;
- }
- else
- {
- return getState();
- }
- }
- else
- {
- return _taskExecutor.submitAndWait(new ChangeStateTask(this, currentState, desiredState));
- }
+
+
+ return runTask(new TaskExecutor.Task<State>()
+ {
+ @Override
+ public State execute()
+ {
+ authoriseSetDesiredState(currentState, desiredState);
+ if (setState(currentState, desiredState))
+ {
+ notifyStateChanged(currentState, desiredState);
+ return desiredState;
+ }
+ else
+ {
+ return getState();
+ }
+ }
+ });
}
/**
@@ -727,25 +725,25 @@ public abstract class AbstractConfigured
public Object setAttribute(final String name, final Object expected, final Object desired)
throws IllegalStateException, AccessControlException, IllegalArgumentException
{
- if (_taskExecutor.isTaskExecutorThread())
+ return _taskExecutor.run(new TaskExecutor.Task<Object>()
{
- authoriseSetAttributes(createProxyForValidation(Collections.singletonMap(name, desired)),
- Collections.singleton(name));
-
- if (changeAttribute(name, expected, desired))
- {
- attributeSet(name, expected, desired);
- return desired;
- }
- else
+ @Override
+ public Object execute()
{
- return getAttribute(name);
+ authoriseSetAttributes(createProxyForValidation(Collections.singletonMap(name, desired)),
+ Collections.singleton(name));
+
+ if (changeAttribute(name, expected, desired))
+ {
+ attributeSet(name, expected, desired);
+ return desired;
+ }
+ else
+ {
+ return getAttribute(name);
+ }
}
- }
- else
- {
- return _taskExecutor.submitAndWait(new SetAttributeTask(this, name, expected, desired));
- }
+ });
}
protected boolean changeAttribute(final String name, final Object expected, final Object desired)
@@ -864,22 +862,23 @@ public abstract class AbstractConfigured
@SuppressWarnings("unchecked")
@Override
- public <C extends ConfiguredObject> C createChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
+ public <C extends ConfiguredObject> C createChild(final Class<C> childClass, final Map<String, Object> attributes,
+ final ConfiguredObject... otherParents)
{
- if (_taskExecutor.isTaskExecutorThread())
- {
- authoriseCreateChild(childClass, attributes, otherParents);
- C child = addChild(childClass, attributes, otherParents);
- if (child != null)
+ return _taskExecutor.run(new TaskExecutor.Task<C>() {
+
+ @Override
+ public C execute()
{
- childAdded(child);
+ authoriseCreateChild(childClass, attributes, otherParents);
+ C child = addChild(childClass, attributes, otherParents);
+ if (child != null)
+ {
+ childAdded(child);
+ }
+ return child;
}
- return child;
- }
- else
- {
- return (C)_taskExecutor.submitAndWait(new CreateChildTask(this, childClass, attributes, otherParents));
- }
+ });
}
protected <C extends ConfiguredObject> C addChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
@@ -973,18 +972,39 @@ public abstract class AbstractConfigured
return _taskExecutor;
}
+ protected final <C> C runTask(TaskExecutor.Task<C> task)
+ {
+ return _taskExecutor.run(task);
+ }
+
+ protected void runTask(TaskExecutor.VoidTask task)
+ {
+ _taskExecutor.run(task);
+ }
+
+ protected final <T, E extends Exception> T runTask(TaskExecutor.TaskWithException<T,E> task) throws E
+ {
+ return _taskExecutor.run(task);
+ }
+
+ protected final <E extends Exception> void runTask(TaskExecutor.VoidTaskWithException<E> task) throws E
+ {
+ _taskExecutor.run(task);
+ }
+
+
@Override
public void setAttributes(final Map<String, Object> attributes) throws IllegalStateException, AccessControlException, IllegalArgumentException
{
- if (getTaskExecutor().isTaskExecutorThread())
+ runTask(new TaskExecutor.VoidTask()
{
- authoriseSetAttributes(createProxyForValidation(attributes), attributes.keySet());
- changeAttributes(attributes);
- }
- else
- {
- getTaskExecutor().submitAndWait(new ChangeAttributesTask(this, attributes));
- }
+ @Override
+ public void execute()
+ {
+ authoriseSetAttributes(createProxyForValidation(attributes), attributes.keySet());
+ changeAttributes(attributes);
+ }
+ });
}
protected void authoriseSetAttributes(final ConfiguredObject<?> proxyForValidation,
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java Sun Apr 20 01:32:50 2014
@@ -30,7 +30,6 @@ import org.apache.qpid.server.logging.Lo
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.stats.StatisticsGatherer;
-import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
@ManagedObject( defaultType = "broker" )
public interface Broker<X extends Broker<X>> extends ConfiguredObject<X>, EventLoggerProvider, StatisticsGatherer
@@ -178,11 +177,6 @@ public interface Broker<X extends Broker
Collection<TrustStore<?>> getTrustStores();
- /*
- * TODO: Remove this method. Eventually the broker will become a registry.
- */
- VirtualHostRegistry getVirtualHostRegistry();
-
TaskExecutor getTaskExecutor();
boolean isManagementMode();
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java Sun Apr 20 01:32:50 2014
@@ -84,121 +84,138 @@ public class SystemContextImpl extends A
}
@Override
- public void resolveObjects(ConfiguredObjectRecord... records)
+ public void resolveObjects(final ConfiguredObjectRecord... records)
{
-
- ConfiguredObjectFactory factory = getObjectFactory();
-
- Map<UUID, ConfiguredObject<?>> resolvedObjects = new HashMap<UUID, ConfiguredObject<?>>();
- resolvedObjects.put(getId(), this);
-
- Collection<ConfiguredObjectRecord> recordsWithUnresolvedParents = new ArrayList<ConfiguredObjectRecord>(Arrays.asList(records));
- Collection<UnresolvedConfiguredObject<? extends ConfiguredObject>> recordsWithUnresolvedDependencies =
- new ArrayList<UnresolvedConfiguredObject<? extends ConfiguredObject>>();
-
- boolean updatesMade;
-
- do
+ runTask(new TaskExecutor.VoidTask()
{
- updatesMade = false;
- Iterator<ConfiguredObjectRecord> iter = recordsWithUnresolvedParents.iterator();
- while (iter.hasNext())
+ @Override
+ public void execute()
{
- ConfiguredObjectRecord record = iter.next();
- Collection<ConfiguredObject<?>> parents = new ArrayList<ConfiguredObject<?>>();
- boolean foundParents = true;
- for (ConfiguredObjectRecord parent : record.getParents().values())
- {
- if (!resolvedObjects.containsKey(parent.getId()))
- {
- foundParents = false;
- break;
- }
- else
- {
- parents.add(resolvedObjects.get(parent.getId()));
- }
- }
- if (foundParents)
- {
- iter.remove();
- UnresolvedConfiguredObject<? extends ConfiguredObject> recovered =
- factory.recover(record, parents.toArray(new ConfiguredObject<?>[parents.size()]));
- Collection<ConfiguredObjectDependency<?>> dependencies =
- recovered.getUnresolvedDependencies();
- if (dependencies.isEmpty())
- {
- updatesMade = true;
- ConfiguredObject<?> resolved = recovered.resolve();
- resolvedObjects.put(resolved.getId(), resolved);
- }
- else
- {
- recordsWithUnresolvedDependencies.add(recovered);
- }
- }
- }
- Iterator<UnresolvedConfiguredObject<? extends ConfiguredObject>> unresolvedIter =
- recordsWithUnresolvedDependencies.iterator();
+ ConfiguredObjectFactory factory = getObjectFactory();
- while(unresolvedIter.hasNext())
- {
- UnresolvedConfiguredObject<? extends ConfiguredObject> unresolvedObject = unresolvedIter.next();
- Collection<ConfiguredObjectDependency<?>> dependencies =
- new ArrayList<ConfiguredObjectDependency<?>>(unresolvedObject.getUnresolvedDependencies());
+ Map<UUID, ConfiguredObject<?>> resolvedObjects = new HashMap<UUID, ConfiguredObject<?>>();
+ resolvedObjects.put(getId(), SystemContextImpl.this);
+
+ Collection<ConfiguredObjectRecord> recordsWithUnresolvedParents =
+ new ArrayList<ConfiguredObjectRecord>(Arrays.asList(records));
+ Collection<UnresolvedConfiguredObject<? extends ConfiguredObject>> recordsWithUnresolvedDependencies =
+ new ArrayList<UnresolvedConfiguredObject<? extends ConfiguredObject>>();
+
+ boolean updatesMade;
- for(ConfiguredObjectDependency dependency : dependencies)
+ do
{
- if(dependency instanceof ConfiguredObjectIdDependency)
- {
- UUID id = ((ConfiguredObjectIdDependency)dependency).getId();
- if(resolvedObjects.containsKey(id))
+ updatesMade = false;
+ Iterator<ConfiguredObjectRecord> iter = recordsWithUnresolvedParents.iterator();
+ while (iter.hasNext())
+ {
+ ConfiguredObjectRecord record = iter.next();
+ Collection<ConfiguredObject<?>> parents = new ArrayList<ConfiguredObject<?>>();
+ boolean foundParents = true;
+ for (ConfiguredObjectRecord parent : record.getParents().values())
{
- dependency.resolve(resolvedObjects.get(id));
+ if (!resolvedObjects.containsKey(parent.getId()))
+ {
+ foundParents = false;
+ break;
+ }
+ else
+ {
+ parents.add(resolvedObjects.get(parent.getId()));
+ }
}
+ if (foundParents)
+ {
+ iter.remove();
+ UnresolvedConfiguredObject<? extends ConfiguredObject> recovered =
+ factory.recover(record, parents.toArray(new ConfiguredObject<?>[parents.size()]));
+ Collection<ConfiguredObjectDependency<?>> dependencies =
+ recovered.getUnresolvedDependencies();
+ if (dependencies.isEmpty())
+ {
+ updatesMade = true;
+ ConfiguredObject<?> resolved = recovered.resolve();
+ resolvedObjects.put(resolved.getId(), resolved);
+ }
+ else
+ {
+ recordsWithUnresolvedDependencies.add(recovered);
+ }
+ }
+
}
- else if(dependency instanceof ConfiguredObjectNameDependency)
+
+ Iterator<UnresolvedConfiguredObject<? extends ConfiguredObject>> unresolvedIter =
+ recordsWithUnresolvedDependencies.iterator();
+
+ while (unresolvedIter.hasNext())
{
- ConfiguredObject<?> dependentObject = null;
- for(ConfiguredObject<?> parent : unresolvedObject.getParents())
+ UnresolvedConfiguredObject<? extends ConfiguredObject> unresolvedObject = unresolvedIter.next();
+ Collection<ConfiguredObjectDependency<?>> dependencies =
+ new ArrayList<ConfiguredObjectDependency<?>>(unresolvedObject.getUnresolvedDependencies());
+
+ for (ConfiguredObjectDependency dependency : dependencies)
{
- dependentObject = parent.findConfiguredObject(dependency.getCategoryClass(), ((ConfiguredObjectNameDependency)dependency).getName());
- if(dependentObject != null)
+ if (dependency instanceof ConfiguredObjectIdDependency)
{
- break;
+ UUID id = ((ConfiguredObjectIdDependency) dependency).getId();
+ if (resolvedObjects.containsKey(id))
+ {
+ dependency.resolve(resolvedObjects.get(id));
+ }
+ }
+ else if (dependency instanceof ConfiguredObjectNameDependency)
+ {
+ ConfiguredObject<?> dependentObject = null;
+ for (ConfiguredObject<?> parent : unresolvedObject.getParents())
+ {
+ dependentObject = parent.findConfiguredObject(dependency.getCategoryClass(),
+ ((ConfiguredObjectNameDependency) dependency)
+ .getName()
+ );
+ if (dependentObject != null)
+ {
+ break;
+ }
+ }
+ if (dependentObject != null)
+ {
+ dependency.resolve(dependentObject);
+ }
+ }
+ else
+ {
+ throw new ServerScopedRuntimeException("Unknown dependency type "
+ + dependency.getClass()
+ .getSimpleName());
}
}
- if(dependentObject != null)
+ if (unresolvedObject.getUnresolvedDependencies().isEmpty())
{
- dependency.resolve(dependentObject);
+ updatesMade = true;
+ unresolvedIter.remove();
+ ConfiguredObject<?> resolved = unresolvedObject.resolve();
+ resolvedObjects.put(resolved.getId(), resolved);
}
}
- else
- {
- throw new ServerScopedRuntimeException("Unknown dependency type " + dependency.getClass().getSimpleName());
- }
+
+ } while (updatesMade && !(recordsWithUnresolvedDependencies.isEmpty()
+ && recordsWithUnresolvedParents.isEmpty()));
+
+ if (!recordsWithUnresolvedDependencies.isEmpty())
+ {
+ throw new IllegalArgumentException("Cannot resolve some objects: "
+ + recordsWithUnresolvedDependencies);
}
- if(unresolvedObject.getUnresolvedDependencies().isEmpty())
+ if (!recordsWithUnresolvedParents.isEmpty())
{
- updatesMade = true;
- unresolvedIter.remove();
- ConfiguredObject<?> resolved = unresolvedObject.resolve();
- resolvedObjects.put(resolved.getId(), resolved);
+ throw new IllegalArgumentException("Cannot resolve object because their parents cannot be found"
+ + recordsWithUnresolvedParents);
}
}
-
- } while(updatesMade && !(recordsWithUnresolvedDependencies.isEmpty() && recordsWithUnresolvedParents.isEmpty()));
-
- if(!recordsWithUnresolvedDependencies.isEmpty())
- {
- throw new IllegalArgumentException("Cannot resolve some objects: " + recordsWithUnresolvedDependencies);
- }
- if(!recordsWithUnresolvedParents.isEmpty())
- {
- throw new IllegalArgumentException("Cannot resolve object because their parents cannot be found" + recordsWithUnresolvedParents);
- }
+ });
}
@Override
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Sun Apr 20 01:32:50 2014
@@ -24,9 +24,7 @@ import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.security.AccessControlException;
import java.security.PrivilegedAction;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -59,7 +57,6 @@ import org.apache.qpid.server.security.a
import org.apache.qpid.server.stats.StatisticsCounter;
import org.apache.qpid.server.stats.StatisticsGatherer;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
import org.apache.qpid.util.SystemUtils;
public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> implements Broker<BrokerAdapter>, ConfigurationChangeListener, StatisticsGatherer, StatisticsGatherer.Source
@@ -77,18 +74,10 @@ public class BrokerAdapter extends Abstr
private EventLogger _eventLogger;
- private final VirtualHostRegistry _virtualHostRegistry;
+ //private final VirtualHostRegistry _virtualHostRegistry;
private final LogRecorder _logRecorder;
- private final Map<String, VirtualHost<?,?,?>> _vhostAdapters = new HashMap<String, VirtualHost<?,?,?>>();
- private final Map<UUID, Port<?>> _portAdapters = new HashMap<UUID, Port<?>>();
private final Map<Port, Integer> _stillInUsePortNumbers = new HashMap<Port, Integer>();
- private final Map<UUID, AuthenticationProvider<?>> _authenticationProviders = new HashMap<UUID, AuthenticationProvider<?>>();
- private final Map<String, GroupProvider<?>> _groupProviders = new HashMap<String, GroupProvider<?>>();
- private final Map<UUID, ConfiguredObject<?>> _plugins = new HashMap<UUID, ConfiguredObject<?>>();
- private final Map<String, KeyStore<?>> _keyStores = new HashMap<String, KeyStore<?>>();
- private final Map<String, TrustStore<?>> _trustStores = new HashMap<String, TrustStore<?>>();
- private final Map<UUID, AccessControlProvider<?>> _accessControlProviders = new HashMap<UUID, AccessControlProvider<?>>();
private final SecurityManager _securityManager;
@@ -122,7 +111,7 @@ public class BrokerAdapter extends Abstr
parent.getTaskExecutor());
_objectFactory = parent.getObjectFactory();
- _virtualHostRegistry = new VirtualHostRegistry(parent.getEventLogger());
+ //_virtualHostRegistry = new VirtualHostRegistry(parent.getEventLogger());
_logRecorder = parent.getLogRecorder();
_eventLogger = parent.getEventLogger();
@@ -220,7 +209,6 @@ public class BrokerAdapter extends Abstr
{
_managementModeAuthenticationProvider.open();
}
- _virtualHostRegistry.setDefaultVirtualHostName(getDefaultVirtualHost());
for(KeyStore<?> keyStore : getChildren(KeyStore.class))
{
@@ -375,26 +363,20 @@ public class BrokerAdapter extends Abstr
public Collection<VirtualHost<?,?,?>> getVirtualHosts()
{
- synchronized(_vhostAdapters)
- {
- return new ArrayList<VirtualHost<?,?,?>>(_vhostAdapters.values());
- }
+ Collection children = getChildren(VirtualHost.class);
+ return children;
}
public Collection<Port<?>> getPorts()
{
- synchronized (_portAdapters)
- {
- return new ArrayList<Port<?>>(_portAdapters.values());
- }
+ Collection children = getChildren(Port.class);
+ return children;
}
public Collection<AuthenticationProvider<?>> getAuthenticationProviders()
{
- synchronized (_authenticationProviders)
- {
- return new ArrayList<AuthenticationProvider<?>>(_authenticationProviders.values());
- }
+ Collection children = getChildren(AuthenticationProvider.class);
+ return children;
}
public AuthenticationProvider<?> findAuthenticationProviderByName(String authenticationProviderName)
@@ -403,40 +385,24 @@ public class BrokerAdapter extends Abstr
{
return _managementModeAuthenticationProvider;
}
- Collection<AuthenticationProvider<?>> providers = getAuthenticationProviders();
- for (AuthenticationProvider<?> authenticationProvider : providers)
- {
- if (authenticationProvider.getName().equals(authenticationProviderName))
- {
- return authenticationProvider;
- }
- }
- return null;
+ return getChildByName(AuthenticationProvider.class, authenticationProviderName);
}
public KeyStore<?> findKeyStoreByName(String keyStoreName)
{
- synchronized(_keyStores)
- {
- return _keyStores.get(keyStoreName);
- }
+ return getChildByName(KeyStore.class, keyStoreName);
}
public TrustStore<?> findTrustStoreByName(String trustStoreName)
{
- synchronized(_trustStores)
- {
- return _trustStores.get(trustStoreName);
- }
+ return getChildByName(TrustStore.class, trustStoreName);
}
@Override
public Collection<GroupProvider<?>> getGroupProviders()
{
- synchronized (_groupProviders)
- {
- return new ArrayList<GroupProvider<?>>(_groupProviders.values());
- }
+ Collection children = getChildren(GroupProvider.class);
+ return children;
}
private VirtualHost createVirtualHost(final Map<String, Object> attributes)
@@ -462,10 +428,6 @@ public class BrokerAdapter extends Abstr
private boolean deleteVirtualHost(final VirtualHost vhost) throws AccessControlException, IllegalStateException
{
- synchronized (_vhostAdapters)
- {
- _vhostAdapters.remove(vhost.getName());
- }
vhost.removeChangeListener(this);
return true;
}
@@ -476,18 +438,6 @@ public class BrokerAdapter extends Abstr
return null; //TODO
}
- public long getTimeToLive()
- {
- return 0;
- }
-
- public long setTimeToLive(final long expected, final long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- throw new IllegalStateException();
- }
-
-
@Override
public long getBytesIn()
{
@@ -514,40 +464,48 @@ public class BrokerAdapter extends Abstr
@SuppressWarnings("unchecked")
@Override
- public <C extends ConfiguredObject> C addChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
+ public <C extends ConfiguredObject> C addChild(final Class<C> childClass, final Map<String, Object> attributes, final ConfiguredObject... otherParents)
{
- if(childClass == VirtualHost.class)
- {
- return (C) createVirtualHost(attributes);
- }
- else if(childClass == Port.class)
+ return runTask( new TaskExecutor.Task<C>()
{
- return (C) createPort(attributes);
- }
- else if(childClass == AccessControlProvider.class)
- {
- return (C) createAccessControlProvider(attributes);
- }
- else if(childClass == AuthenticationProvider.class)
- {
- return (C) createAuthenticationProvider(attributes);
- }
- else if(childClass == KeyStore.class)
- {
- return (C) createKeyStore(attributes);
- }
- else if(childClass == TrustStore.class)
- {
- return (C) createTrustStore(attributes);
- }
- else if(childClass == GroupProvider.class)
- {
- return (C) createGroupProvider(attributes);
- }
- else
- {
- throw new IllegalArgumentException("Cannot create child of class " + childClass.getSimpleName());
- }
+ @Override
+ public C execute()
+ {
+ if (childClass == VirtualHost.class)
+ {
+ return (C) createVirtualHost(attributes);
+ }
+ else if (childClass == Port.class)
+ {
+ return (C) createPort(attributes);
+ }
+ else if (childClass == AccessControlProvider.class)
+ {
+ return (C) createAccessControlProvider(attributes);
+ }
+ else if (childClass == AuthenticationProvider.class)
+ {
+ return (C) createAuthenticationProvider(attributes);
+ }
+ else if (childClass == KeyStore.class)
+ {
+ return (C) createKeyStore(attributes);
+ }
+ else if (childClass == TrustStore.class)
+ {
+ return (C) createTrustStore(attributes);
+ }
+ else if (childClass == GroupProvider.class)
+ {
+ return (C) createGroupProvider(attributes);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot create child of class " + childClass.getSimpleName());
+ }
+ }
+ });
+
}
/**
@@ -569,101 +527,77 @@ public class BrokerAdapter extends Abstr
return port;
}
- private void addPort(Port<?> port)
+ private void addPort(final Port<?> port)
{
- synchronized (_portAdapters)
- {
- int portNumber = port.getPort();
- String portName = port.getName();
- UUID portId = port.getId();
+ assert getTaskExecutor().isTaskExecutorThread();
- for(Port<?> p : _portAdapters.values())
- {
- if(portNumber == p.getPort())
- {
- throw new IllegalConfigurationException("Can't add port " + portName + " because port number " + portNumber + " is already configured for port " + p.getName());
- }
-
- if(portName.equals(p.getName()))
- {
- throw new IllegalConfigurationException("Can't add Port because one with name " + portName + " already exists");
- }
+ int portNumber = port.getPort();
+ String portName = port.getName();
- if(portId.equals(p.getId()))
+ for (Port<?> p : getChildren(Port.class))
+ {
+ if(p != port)
+ {
+ if (portNumber == p.getPort())
{
- throw new IllegalConfigurationException("Can't add Port because one with id " + portId + " already exists");
+ throw new IllegalConfigurationException("Can't add port "
+ + portName
+ + " because port number "
+ + portNumber
+ + " is already configured for port "
+ + p.getName());
}
}
-
- _portAdapters.put(port.getId(), port);
}
+
port.addChangeListener(this);
+
}
- private AccessControlProvider<?> createAccessControlProvider(Map<String, Object> attributes)
+ private AccessControlProvider<?> createAccessControlProvider(final Map<String, Object> attributes)
{
- AccessControlProvider<?> accessControlProvider;
- synchronized (_accessControlProviders)
- {
- accessControlProvider = (AccessControlProvider<?>) createChild(AccessControlProvider.class, attributes);
- addAccessControlProvider(accessControlProvider);
- }
+ assert getTaskExecutor().isTaskExecutorThread();
+
+ AccessControlProvider<?> accessControlProvider = (AccessControlProvider<?>) createChild(AccessControlProvider.class, attributes);
+ addAccessControlProvider(accessControlProvider);
- boolean quiesce = isManagementMode() ;
+ boolean quiesce = isManagementMode();
accessControlProvider.setDesiredState(State.INITIALISING, quiesce ? State.QUIESCED : State.ACTIVE);
return accessControlProvider;
+
}
- /**
- * @throws IllegalConfigurationException if an AuthenticationProvider with the same name already exists
- */
- private void addAccessControlProvider(AccessControlProvider<?> accessControlProvider)
+ private void addAccessControlProvider(final AccessControlProvider<?> accessControlProvider)
{
- String name = accessControlProvider.getName();
- synchronized (_accessControlProviders)
- {
- if (_accessControlProviders.containsKey(accessControlProvider.getId()))
- {
- throw new IllegalConfigurationException("Can't add AccessControlProvider because one with id " + accessControlProvider.getId() + " already exists");
- }
- for (AccessControlProvider<?> provider : _accessControlProviders.values())
- {
- if (provider.getName().equals(name))
- {
- throw new IllegalConfigurationException("Can't add AccessControlProvider because one with name " + name + " already exists");
- }
- }
- _accessControlProviders.put(accessControlProvider.getId(), accessControlProvider);
- }
+ assert getTaskExecutor().isTaskExecutorThread();
accessControlProvider.addChangeListener(this);
accessControlProvider.addChangeListener(_securityManager);
+
}
private boolean deleteAccessControlProvider(AccessControlProvider<?> accessControlProvider)
{
- AccessControlProvider removedAccessControlProvider;
- synchronized (_accessControlProviders)
- {
- removedAccessControlProvider = _accessControlProviders.remove(accessControlProvider.getId());
- }
-
- if(removedAccessControlProvider != null)
- {
- removedAccessControlProvider.removeChangeListener(this);
- removedAccessControlProvider.removeChangeListener(_securityManager);
- }
+ accessControlProvider.removeChangeListener(this);
+ accessControlProvider.removeChangeListener(_securityManager);
- return removedAccessControlProvider != null;
+ return true;
}
- private AuthenticationProvider createAuthenticationProvider(Map<String, Object> attributes)
+ private AuthenticationProvider createAuthenticationProvider(final Map<String, Object> attributes)
{
- AuthenticationProvider<?> authenticationProvider = createChild(AuthenticationProvider.class, attributes);
- addAuthenticationProvider(authenticationProvider);
- authenticationProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
- return authenticationProvider;
+ return runTask(new TaskExecutor.Task<AuthenticationProvider>()
+ {
+ @Override
+ public AuthenticationProvider execute()
+ {
+ AuthenticationProvider<?> authenticationProvider = createChild(AuthenticationProvider.class, attributes);
+ addAuthenticationProvider(authenticationProvider);
+ authenticationProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
+ return authenticationProvider;
+ }
+ });
}
private <X extends ConfiguredObject> X createChild(Class<X> clazz, Map<String, Object> attributes)
@@ -685,61 +619,35 @@ public class BrokerAdapter extends Abstr
*/
private void addAuthenticationProvider(AuthenticationProvider<?> authenticationProvider)
{
- String name = authenticationProvider.getName();
- synchronized (_authenticationProviders)
- {
- if (_authenticationProviders.containsKey(authenticationProvider.getId()))
- {
- throw new IllegalConfigurationException("Cannot add AuthenticationProvider because one with id " + authenticationProvider.getId() + " already exists");
- }
- for (AuthenticationProvider provider : _authenticationProviders.values())
- {
- if (provider.getName().equals(name))
- {
- throw new IllegalConfigurationException("Cannot add AuthenticationProvider because one with name " + name + " already exists");
- }
- }
- _authenticationProviders.put(authenticationProvider.getId(), authenticationProvider);
- }
+ assert getTaskExecutor().isTaskExecutorThread();
+
authenticationProvider.addChangeListener(this);
}
- private GroupProvider<?> createGroupProvider(Map<String, Object> attributes)
+ private GroupProvider<?> createGroupProvider(final Map<String, Object> attributes)
{
- GroupProvider<?> groupProvider = createChild(GroupProvider.class, attributes);
- addGroupProvider(groupProvider);
- groupProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
- return groupProvider;
+ return runTask(new TaskExecutor.Task<GroupProvider<?>>()
+ {
+ @Override
+ public GroupProvider<?> execute()
+ {
+ GroupProvider<?> groupProvider = createChild(GroupProvider.class, attributes);
+ addGroupProvider(groupProvider);
+ groupProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
+ return groupProvider;
+ }
+ });
}
private void addGroupProvider(GroupProvider<?> groupProvider)
{
- synchronized (_groupProviders)
- {
- String name = groupProvider.getName();
- if(_groupProviders.containsKey(name))
- {
- throw new IllegalConfigurationException("Cannot add GroupProvider because one with name " + name + " already exists");
- }
- _groupProviders.put(name, groupProvider);
- }
groupProvider.addChangeListener(this);
}
private boolean deleteGroupProvider(GroupProvider groupProvider)
{
- GroupProvider removedGroupProvider = null;
- synchronized (_groupProviders)
- {
- removedGroupProvider = _groupProviders.remove(groupProvider.getName());
- }
-
- if(removedGroupProvider != null)
- {
- removedGroupProvider.removeChangeListener(this);
- }
-
- return removedGroupProvider != null;
+ groupProvider.removeChangeListener(this);
+ return true;
}
private KeyStore createKeyStore(Map<String, Object> attributes)
@@ -760,58 +668,25 @@ public class BrokerAdapter extends Abstr
private void addKeyStore(KeyStore keyStore)
{
- synchronized (_keyStores)
- {
- if(_keyStores.containsKey(keyStore.getName()))
- {
- throw new IllegalConfigurationException("Can't add KeyStore because one with name " + keyStore.getName() + " already exists");
- }
- _keyStores.put(keyStore.getName(), keyStore);
- }
keyStore.addChangeListener(this);
}
- private boolean deleteKeyStore(KeyStore object)
+ private boolean deleteKeyStore(KeyStore keyStore)
{
- synchronized(_keyStores)
- {
- String name = object.getName();
- KeyStore removedKeyStore = _keyStores.remove(name);
- if(removedKeyStore != null)
- {
- removedKeyStore.removeChangeListener(this);
- }
-
- return removedKeyStore != null;
- }
+ keyStore.removeChangeListener(this);
+ return true;
}
private void addTrustStore(TrustStore trustStore)
{
- synchronized (_trustStores)
- {
- if(_trustStores.containsKey(trustStore.getName()))
- {
- throw new IllegalConfigurationException("Can't add TrustStore because one with name " + trustStore.getName() + " already exists");
- }
- _trustStores.put(trustStore.getName(), trustStore);
- }
trustStore.addChangeListener(this);
}
- private boolean deleteTrustStore(TrustStore object)
+ private boolean deleteTrustStore(TrustStore trustStore)
{
- synchronized(_trustStores)
- {
- String name = object.getName();
- TrustStore removedTrustStore = _trustStores.remove(name);
- if(removedTrustStore != null)
- {
- removedTrustStore.removeChangeListener(this);
- }
+ trustStore.removeChangeListener(this);
+ return true;
- return removedTrustStore != null;
- }
}
@Override
@@ -824,56 +699,36 @@ public class BrokerAdapter extends Abstr
return super.getAttribute(name);
}
- private boolean deletePort(State oldState, Port portAdapter)
+ private boolean deletePort(State oldState, Port port)
{
- Port<?> removedPort;
- synchronized (_portAdapters)
- {
- removedPort = _portAdapters.remove(portAdapter.getId());
- }
+ port.removeChangeListener(this);
- if (removedPort != null)
- {
- removedPort.removeChangeListener(this);
+ // TODO - this seems suspicious, wouldn't it make more sense to not allow deletion from active
+ // (must be stopped first) or something?
- if(oldState == State.ACTIVE)
- {
- //Record the originally used port numbers of previously-active ports being deleted, to ensure
- //when creating new ports we don't try to re-bind a port number that we are currently still using
- recordPreviouslyUsedPortNumberIfNecessary(removedPort, removedPort.getPort());
- }
+ if(oldState == State.ACTIVE)
+ {
+ //Record the originally used port numbers of previously-active ports being deleted, to ensure
+ //when creating new ports we don't try to re-bind a port number that we are currently still using
+ recordPreviouslyUsedPortNumberIfNecessary(port, port.getPort());
}
- return removedPort != null;
+
+ return port != null;
}
private boolean deleteAuthenticationProvider(AuthenticationProvider<?> authenticationProvider)
{
- AuthenticationProvider removedAuthenticationProvider;
- synchronized (_authenticationProviders)
- {
- removedAuthenticationProvider = _authenticationProviders.remove(authenticationProvider.getId());
- }
-
- if(removedAuthenticationProvider != null)
+ if(authenticationProvider != null)
{
- removedAuthenticationProvider.removeChangeListener(this);
+ authenticationProvider.removeChangeListener(this);
}
-
- return removedAuthenticationProvider != null;
+ return true;
}
private void addVirtualHost(VirtualHost<?,?,?> virtualHost)
{
- synchronized (_vhostAdapters)
- {
- String name = virtualHost.getName();
- if (_vhostAdapters.containsKey(name))
- {
- throw new IllegalConfigurationException("Virtual host with name " + name + " is already specified!");
- }
- _vhostAdapters.put(name, virtualHost);
- }
+
virtualHost.addChangeListener(this);
}
@@ -883,16 +738,7 @@ public class BrokerAdapter extends Abstr
if (desiredState == State.ACTIVE)
{
initialiseStatisticsReporting();
- changeState(_groupProviders, currentState, State.ACTIVE, false);
- changeState(_authenticationProviders, currentState, State.ACTIVE, false);
- changeState(_accessControlProviders, currentState, State.ACTIVE, false);
-
-
- changeState(_vhostAdapters, currentState, State.ACTIVE, false);
-
- changeState(_portAdapters, currentState,State.ACTIVE, false);
- changeState(_plugins, currentState,State.ACTIVE, false);
-
+ changeChildState(currentState, State.ACTIVE, false);
if (isManagementMode())
{
_eventLogger.message(BrokerMessages.MANAGEMENT_MODE(BrokerOptions.MANAGEMENT_MODE_USER_NAME,
@@ -908,49 +754,53 @@ public class BrokerAdapter extends Abstr
_reportingTimer.cancel();
}
- changeState(_plugins, currentState,State.STOPPED, true);
- changeState(_portAdapters, currentState, State.STOPPED, true);
- changeState(_vhostAdapters,currentState, State.STOPPED, true);
- changeState(_authenticationProviders, currentState, State.STOPPED, true);
- changeState(_groupProviders, currentState, State.STOPPED, true);
- _virtualHostRegistry.close();
+ changeChildState(currentState, State.STOPPED, true);
return true;
}
return false;
}
- private void changeState(Map<?, ? extends ConfiguredObject> configuredObjectMap, State currentState, State desiredState, boolean swallowException)
+ private void changeChildState(final State currentState,
+ final State desiredState,
+ final boolean swallowException)
{
- synchronized(configuredObjectMap)
+ runTask(new TaskExecutor.VoidTask()
{
- Collection<? extends ConfiguredObject> adapters = configuredObjectMap.values();
- for (ConfiguredObject configuredObject : adapters)
+ @Override
+ public void execute()
{
- if (State.ACTIVE.equals(desiredState) && State.QUIESCED.equals(configuredObject.getState()))
+ for (Class<? extends ConfiguredObject> clazz : Model.getInstance().getChildTypes(getCategoryClass()))
{
- if (LOGGER.isDebugEnabled())
+ for (ConfiguredObject configuredObject : getChildren(clazz))
{
- LOGGER.debug(configuredObject + " cannot be activated as it is " +State.QUIESCED);
- }
- continue;
- }
- try
- {
- configuredObject.setDesiredState(currentState, desiredState);
- }
- catch(RuntimeException e)
- {
- if (swallowException)
- {
- LOGGER.error("Failed to stop " + configuredObject, e);
- }
- else
- {
- throw e;
+ if (State.ACTIVE.equals(desiredState) && State.QUIESCED.equals(configuredObject.getState()))
+ {
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug(configuredObject + " cannot be activated as it is " + State.QUIESCED);
+ }
+ continue;
+ }
+ try
+ {
+ configuredObject.setDesiredState(currentState, desiredState);
+ }
+ catch (RuntimeException e)
+ {
+ if (swallowException)
+ {
+ LOGGER.error("Failed to stop " + configuredObject, e);
+ }
+ else
+ {
+ throw e;
+ }
+ }
}
}
}
- }
+ });
+
}
@Override
@@ -1023,24 +873,14 @@ public class BrokerAdapter extends Abstr
private void addPlugin(ConfiguredObject<?> plugin)
{
- synchronized(_plugins)
- {
- if (_plugins.containsKey(plugin.getId()))
- {
- throw new IllegalConfigurationException("Plugin with id '" + plugin.getId() + "' is already registered!");
- }
- _plugins.put(plugin.getId(), plugin);
- }
plugin.addChangeListener(this);
}
private Collection<ConfiguredObject<?>> getPlugins()
{
- synchronized(_plugins)
- {
- return Collections.unmodifiableCollection(_plugins.values());
- }
+ Collection children = getChildren(Plugin.class);
+ return children;
}
@Override
@@ -1058,7 +898,7 @@ public class BrokerAdapter extends Abstr
@Override
public VirtualHost findVirtualHostByName(String name)
{
- return _vhostAdapters.get(name);
+ return getChildByName(VirtualHost.class, name);
}
@Override
@@ -1094,31 +934,15 @@ public class BrokerAdapter extends Abstr
@Override
public Collection<KeyStore<?>> getKeyStores()
{
- synchronized(_keyStores)
- {
- return Collections.unmodifiableCollection(_keyStores.values());
- }
+ Collection children = getChildren(KeyStore.class);
+ return children;
}
@Override
public Collection<TrustStore<?>> getTrustStores()
{
- synchronized(_trustStores)
- {
- return Collections.unmodifiableCollection(_trustStores.values());
- }
- }
-
- @Override
- public VirtualHostRegistry getVirtualHostRegistry()
- {
- return _virtualHostRegistry;
- }
-
- @Override
- public TaskExecutor getTaskExecutor()
- {
- return super.getTaskExecutor();
+ Collection children = getChildren(TrustStore.class);
+ return children;
}
@Override
@@ -1149,10 +973,8 @@ public class BrokerAdapter extends Abstr
@Override
public Collection<AccessControlProvider<?>> getAccessControlProviders()
{
- synchronized (_accessControlProviders)
- {
- return new ArrayList<AccessControlProvider<?>>(_accessControlProviders.values());
- }
+ Collection children = getChildren(AccessControlProvider.class);
+ return children;
}
private void recordPreviouslyUsedPortNumberIfNecessary(Port port, Integer portNumber)
@@ -1232,9 +1054,12 @@ public class BrokerAdapter extends Abstr
_messagesReceived.reset();
_dataReceived.reset();
- for (VirtualHostImpl vhost : _virtualHostRegistry.getVirtualHosts())
+ for (VirtualHost vhost : getVirtualHosts())
{
- vhost.resetStatistics();
+ if(vhost instanceof VirtualHostImpl)
+ {
+ ((VirtualHostImpl) vhost).resetStatistics();
+ }
}
}
@@ -1285,27 +1110,37 @@ public class BrokerAdapter extends Abstr
_eventLogger.message(BrokerMessages.STATS_MSGS(RECEIVED,
_messagesReceived.getPeak(),
_messagesReceived.getTotal()));
- Collection<VirtualHostImpl> hosts = _virtualHostRegistry.getVirtualHosts();
+ Collection<VirtualHost<?,?,?>> hosts = getVirtualHosts();
- if (hosts.size() > 1)
- {
- for (VirtualHostImpl vhost : hosts)
+ for (VirtualHost vhost : hosts)
{
- String name = vhost.getName();
- StatisticsCounter dataDelivered = vhost.getDataDeliveryStatistics();
- StatisticsCounter messagesDelivered = vhost.getMessageDeliveryStatistics();
- StatisticsCounter dataReceived = vhost.getDataReceiptStatistics();
- StatisticsCounter messagesReceived = vhost.getMessageReceiptStatistics();
- EventLogger logger = vhost.getEventLogger();
- logger.message(VirtualHostMessages.STATS_DATA(name,
- DELIVERED,
- dataDelivered.getPeak() / 1024.0,
- dataDelivered.getTotal()));
- logger.message(VirtualHostMessages.STATS_MSGS(name, DELIVERED, messagesDelivered.getPeak(), messagesDelivered.getTotal()));
- logger.message(VirtualHostMessages.STATS_DATA(name, RECEIVED, dataReceived.getPeak() / 1024.0, dataReceived.getTotal()));
- logger.message(VirtualHostMessages.STATS_MSGS(name, RECEIVED, messagesReceived.getPeak(), messagesReceived.getTotal()));
+ if(vhost instanceof VirtualHostImpl)
+ {
+ VirtualHostImpl vhostImpl = (VirtualHostImpl) vhost;
+ String name = vhost.getName();
+ StatisticsCounter dataDelivered = vhostImpl.getDataDeliveryStatistics();
+ StatisticsCounter messagesDelivered = vhostImpl.getMessageDeliveryStatistics();
+ StatisticsCounter dataReceived = vhostImpl.getDataReceiptStatistics();
+ StatisticsCounter messagesReceived = vhostImpl.getMessageReceiptStatistics();
+ EventLogger logger = vhostImpl.getEventLogger();
+ logger.message(VirtualHostMessages.STATS_DATA(name,
+ DELIVERED,
+ dataDelivered.getPeak() / 1024.0,
+ dataDelivered.getTotal()));
+ logger.message(VirtualHostMessages.STATS_MSGS(name,
+ DELIVERED,
+ messagesDelivered.getPeak(),
+ messagesDelivered.getTotal()));
+ logger.message(VirtualHostMessages.STATS_DATA(name,
+ RECEIVED,
+ dataReceived.getPeak() / 1024.0,
+ dataReceived.getTotal()));
+ logger.message(VirtualHostMessages.STATS_MSGS(name,
+ RECEIVED,
+ messagesReceived.getPeak(),
+ messagesReceived.getTotal()));
+ }
}
- }
if (_reset)
{
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java Sun Apr 20 01:32:50 2014
@@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -420,7 +421,7 @@ abstract public class AbstractPort<X ext
//ManagementMode needs this relaxed to allow its overriding management ports to be inserted.
//Enforce only a single port of each management protocol, as the plugins will only use one.
- Collection<Port<?>> existingPorts = broker.getPorts();
+ Collection<Port<?>> existingPorts = new HashSet<Port<?>>(broker.getPorts());
existingPorts.remove(this);
for (Port<?> existingPort : existingPorts)
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java Sun Apr 20 01:32:50 2014
@@ -24,6 +24,7 @@ import org.apache.qpid.server.model.Auth
import org.apache.qpid.server.model.ManagedAttribute;
import org.apache.qpid.server.model.ManagedObject;
import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
@ManagedObject( category = false, type = "AMQP")
public interface AmqpPort<X extends AmqpPort<X>> extends Port<X>
@@ -53,4 +54,6 @@ public interface AmqpPort<X extends Amqp
@ManagedAttribute( automate = true, mandatory = true )
AuthenticationProvider getAuthenticationProvider();
+
+ VirtualHostImpl getVirtualHost(String name);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java Sun Apr 20 01:32:50 2014
@@ -41,11 +41,13 @@ import org.apache.qpid.server.model.Mana
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.model.TrustStore;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.plugin.QpidServiceLoader;
import org.apache.qpid.server.plugin.TransportProviderFactory;
import org.apache.qpid.server.transport.AcceptingTransport;
import org.apache.qpid.server.transport.TransportProvider;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager;
public class AmqpPortImpl extends AbstractPortWithAuthProvider<AmqpPortImpl> implements AmqpPort<AmqpPortImpl>
@@ -89,6 +91,17 @@ public class AmqpPortImpl extends Abstra
return _receiveBufferSize;
}
+ @Override
+ public VirtualHostImpl getVirtualHost(String name)
+ {
+ // TODO - aliases
+ if(name == null || name.trim().length() == 0)
+ {
+ name = _broker.getDefaultVirtualHost();
+ }
+ return (VirtualHostImpl) _broker.getChildByName(VirtualHost.class, name);
+ }
+
protected Set<Protocol> getDefaultProtocols()
{
Set<Protocol> defaultProtocols = EnumSet.of(Protocol.AMQP_0_8, Protocol.AMQP_0_9, Protocol.AMQP_0_9_1,
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java Sun Apr 20 01:32:50 2014
@@ -45,7 +45,6 @@ import javax.xml.bind.DatatypeConverter;
import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
import org.apache.qpid.server.configuration.RecovererProvider;
-import org.apache.qpid.server.configuration.updater.ChangeAttributesTask;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.Broker;
@@ -255,42 +254,34 @@ public class ScramSHA1AuthenticationMana
@Override
public boolean createUser(final String username, final String password, final Map<String, String> attributes)
{
- if (getTaskExecutor().isTaskExecutorThread())
+ return runTask(new TaskExecutor.Task<Boolean>()
{
- getSecurityManager().authoriseUserOperation(Operation.CREATE, username);
- if(_users.containsKey(username))
+ @Override
+ public Boolean execute()
{
- throw new IllegalArgumentException("User '"+username+"' already exists");
- }
- try
- {
- Map<String,Object> userAttrs = new HashMap<String, Object>();
- userAttrs.put(User.ID, UUID.randomUUID());
- userAttrs.put(User.NAME, username);
- userAttrs.put(User.PASSWORD, createStoredPassword(password));
- userAttrs.put(User.TYPE, SCRAM_USER_TYPE);
- ScramAuthUser user = new ScramAuthUser(userAttrs, this);
- user.create();
-
- return true;
- }
- catch (SaslException e)
- {
- throw new IllegalArgumentException(e);
- }
- }
- else
- {
- return getTaskExecutor().submitAndWait(new TaskExecutor.Task<Boolean>()
- {
- @Override
- public Boolean call()
+ getSecurityManager().authoriseUserOperation(Operation.CREATE, username);
+ if (_users.containsKey(username))
{
- return createUser(username, password, attributes);
+ throw new IllegalArgumentException("User '" + username + "' already exists");
}
- });
- }
+ try
+ {
+ Map<String, Object> userAttrs = new HashMap<String, Object>();
+ userAttrs.put(User.ID, UUID.randomUUID());
+ userAttrs.put(User.NAME, username);
+ userAttrs.put(User.PASSWORD, createStoredPassword(password));
+ userAttrs.put(User.TYPE, SCRAM_USER_TYPE);
+ ScramAuthUser user = new ScramAuthUser(userAttrs, ScramSHA1AuthenticationManager.this);
+ user.create();
+ return true;
+ }
+ catch (SaslException e)
+ {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ });
}
private SecurityManager getSecurityManager()
@@ -301,115 +292,64 @@ public class ScramSHA1AuthenticationMana
@Override
public void deleteUser(final String user) throws AccountNotFoundException
{
- if (getTaskExecutor().isTaskExecutorThread())
+ runTask(new TaskExecutor.VoidTaskWithException<AccountNotFoundException>()
{
-
- final ScramAuthUser authUser = getUser(user);
- if(authUser != null)
- {
- authUser.setState(State.ACTIVE, State.DELETED);
- }
- else
+ @Override
+ public void execute() throws AccountNotFoundException
{
- throw new AccountNotFoundException("No such user: '" + user + "'");
- }
- }
- else
- {
- AccountNotFoundException e =
- getTaskExecutor().submitAndWait(new TaskExecutor.Task<AccountNotFoundException>() {
-
- @Override
- public AccountNotFoundException call()
+ final ScramAuthUser authUser = getUser(user);
+ if(authUser != null)
{
- try
- {
- deleteUser(user);
- return null;
- }
- catch (AccountNotFoundException e)
- {
- return e;
- }
-
+ authUser.setState(State.ACTIVE, State.DELETED);
+ }
+ else
+ {
+ throw new AccountNotFoundException("No such user: '" + user + "'");
}
- });
-
- if(e != null)
- {
- throw e;
}
- }
+ });
}
@Override
public void setPassword(final String username, final String password) throws AccountNotFoundException
{
- if (getTaskExecutor().isTaskExecutorThread())
+ runTask(new TaskExecutor.VoidTaskWithException<AccountNotFoundException>()
{
- final ScramAuthUser authUser = getUser(username);
- if(authUser != null)
+ @Override
+ public void execute() throws AccountNotFoundException
{
- authUser.setPassword(password);
- }
- else
- {
- throw new AccountNotFoundException("No such user: '" + username + "'");
- }
- }
- else
- {
- AccountNotFoundException e =
- getTaskExecutor().submitAndWait(new TaskExecutor.Task<AccountNotFoundException>()
- {
- @Override
- public AccountNotFoundException call()
- {
- try
- {
- setPassword(username, password);
- return null;
- }
- catch (AccountNotFoundException e)
- {
- return e;
- }
-
- }
- });
-
- if (e != null)
- {
- throw e;
+ final ScramAuthUser authUser = getUser(username);
+ if (authUser != null)
+ {
+ authUser.setPassword(password);
+ }
+ else
+ {
+ throw new AccountNotFoundException("No such user: '" + username + "'");
+ }
}
- }
+ });
}
@Override
public Map<String, Map<String, String>> getUsers()
{
- if (getTaskExecutor().isTaskExecutorThread())
- {
- Map<String, Map<String,String>> users = new HashMap<String, Map<String, String>>();
- for(String user : _users.keySet())
- {
- users.put(user, Collections.<String,String>emptyMap());
- }
- return users;
- }
- else
+ return runTask(new TaskExecutor.Task<Map<String, Map<String, String>>>()
{
- return getTaskExecutor().submitAndWait(new TaskExecutor.Task<Map<String, Map<String, String>>>()
+ @Override
+ public Map<String, Map<String, String>> execute()
{
- @Override
- public Map<String, Map<String, String>> call()
+
+ Map<String, Map<String, String>> users = new HashMap<String, Map<String, String>>();
+ for (String user : _users.keySet())
{
- return getUsers();
+ users.put(user, Collections.<String, String>emptyMap());
}
- });
- }
+ return users;
+ }
+ });
}
@Override
@@ -491,27 +431,31 @@ public class ScramSHA1AuthenticationMana
public void setAttributes(final Map<String, Object> attributes)
throws IllegalStateException, AccessControlException, IllegalArgumentException
{
- if (getTaskExecutor().isTaskExecutorThread())
+ runTask(new TaskExecutor.VoidTask()
{
- Map<String,Object> modifiedAttributes = new HashMap<String, Object>(attributes);
- final String newPassword = (String) attributes.get(User.PASSWORD);
- if(attributes.containsKey(User.PASSWORD) && !newPassword.equals(getActualAttributes().get(User.PASSWORD)))
+
+ @Override
+ public void execute()
{
- try
- {
- modifiedAttributes.put(User.PASSWORD, _authenticationManager.createStoredPassword(newPassword));
- }
- catch (SaslException e)
+ Map<String, Object> modifiedAttributes = new HashMap<String, Object>(attributes);
+ final String newPassword = (String) attributes.get(User.PASSWORD);
+ if (attributes.containsKey(User.PASSWORD)
+ && !newPassword.equals(getActualAttributes().get(User.PASSWORD)))
{
- throw new IllegalArgumentException(e);
+ try
+ {
+ modifiedAttributes.put(User.PASSWORD,
+ _authenticationManager.createStoredPassword(newPassword));
+ }
+ catch (SaslException e)
+ {
+ throw new IllegalArgumentException(e);
+ }
}
+ ScramSHA1AuthenticationManager.ScramAuthUser.super.setAttributes(modifiedAttributes);
}
- super.setAttributes(modifiedAttributes);
- }
- else
- {
- getTaskExecutor().submitAndWait(new ChangeAttributesTask(this, attributes));
- }
+ });
+
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1588715&r1=1588714&r2=1588715&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Sun Apr 20 01:32:50 2014
@@ -172,7 +172,7 @@ public abstract class AbstractVirtualHos
_broker = broker;
_dtxRegistry = new DtxRegistry();
- _eventLogger = _broker.getVirtualHostRegistry().getEventLogger();
+ _eventLogger = _broker.getParent(SystemContext.class).getEventLogger();
_eventLogger.message(VirtualHostMessages.CREATED(getName()));
@@ -244,8 +244,6 @@ public abstract class AbstractVirtualHos
getMessageStore().addEventListener(this, Event.PERSISTENT_MESSAGE_SIZE_OVERFULL);
getMessageStore().addEventListener(this, Event.PERSISTENT_MESSAGE_SIZE_UNDERFULL);
- _broker.getVirtualHostRegistry().registerVirtualHost(this);
-
synchronized(_aliases)
{
@@ -869,11 +867,6 @@ public abstract class AbstractVirtualHos
return null;
}
- public VirtualHostRegistry getVirtualHostRegistry()
- {
- return _broker.getVirtualHostRegistry();
- }
-
public void registerMessageDelivered(long messageSize)
{
_messagesDelivered.registerEvent(1L);
@@ -1448,15 +1441,7 @@ public abstract class AbstractVirtualHos
}
else if (desiredState == State.STOPPED)
{
- try
- {
- close();
- }
- finally
- {
- _broker.getVirtualHostRegistry().unregisterVirtualHost(this);
- }
-
+ close();
return true;
}
else if (desiredState == State.DELETED)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org