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 2016/05/23 15:25:45 UTC

svn commit: r1745217 - in /qpid/java/trunk: broker-core/src/main/java/org/apache/qpid/server/logging/ broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/o...

Author: rgodfrey
Date: Mon May 23 15:25:45 2016
New Revision: 1745217

URL: http://svn.apache.org/viewvc?rev=1745217&view=rev
Log:
QPID-7000 : Add a $management address space containing a management node for the broker

Added:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemAddressSpaceAlias.java
      - copied, changed from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PatternMatchingAlias.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemAddressSpaceCreator.java
      - copied, changed from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemNodeCreator.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java   (with props)
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistryImpl.java
      - copied, changed from r1745216, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/txn/DtxNotSupportedException.java   (with props)
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/SystemAddressSpaceAliasImpl.java
      - copied, changed from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java
    qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java   (with props)
    qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpaceCreator.java
      - copied, changed from r1745130, qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java
    qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpacePrincipal.java
      - copied, changed from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPrincipal.java
Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/NamedAddressSpace.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractSystemMessageSource.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPropertiesNode.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/VirtualHostNameAliasImpl.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/SecurityManagerTest.java
    qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
    qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java Mon May 23 15:25:45 2016
@@ -149,7 +149,7 @@ public abstract class AbstractMessageLog
     {
         if (connection.getAuthorizedPrincipal() != null)
         {
-            if (connection.getVirtualHostName() != null)
+            if (connection.getAddressSpaceName() != null)
             {
                 /**
                  * LOG FORMAT used by the AMQPConnectorActor follows
@@ -165,7 +165,7 @@ public abstract class AbstractMessageLog
                                                   connection.getConnectionId(),
                                                   connection.getAuthorizedPrincipal().getName(),
                                                   connection.getRemoteAddressString(),
-                                                  connection.getVirtualHostName())
+                                                  connection.getAddressSpaceName())
                        + "] ";
 
             }
@@ -198,9 +198,9 @@ public abstract class AbstractMessageLog
                                           (connection == null || connection.getRemoteAddressString() == null)
                                                   ? "?"
                                                   : connection.getRemoteAddressString(),
-                                          (connection == null || connection.getVirtualHostName() == null)
+                                          (connection == null || connection.getAddressSpaceName() == null)
                                                   ? "?"
-                                                  : connection.getVirtualHostName(),
+                                                  : connection.getAddressSpaceName(),
                                           session.getChannelId())
                + "] ";
     }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java Mon May 23 15:25:45 2016
@@ -48,7 +48,7 @@ public class ChannelLogSubject extends A
                                connection == null ? -1L : connection.getConnectionId(),
                                (connection == null || connection.getAuthorizedPrincipal() == null) ? "?" : connection.getAuthorizedPrincipal().getName(),
                                (connection == null || connection.getRemoteAddressString() == null) ? "?" : connection.getRemoteAddressString(),
-                               (connection == null || connection.getVirtualHostName() == null) ? "?" : connection.getVirtualHostName(),
+                               (connection == null || connection.getAddressSpaceName() == null) ? "?" : connection.getAddressSpaceName(),
                                session.getChannelId());
 
     }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java Mon May 23 15:25:45 2016
@@ -58,7 +58,7 @@ public class ConnectionLogSubject extend
         {
             if (_connection.getAuthorizedPrincipal() != null)
             {
-                if (_connection.getVirtualHostName() != null)
+                if (_connection.getAddressSpaceName() != null)
                 {
                     /**
                      * LOG FORMAT used by the AMQPConnectorActor follows
@@ -74,7 +74,7 @@ public class ConnectionLogSubject extend
                                                             _connection.getConnectionId(),
                                                             _connection.getAuthorizedPrincipal().getName(),
                                                             _connection.getRemoteAddressString(),
-                                                            _connection.getVirtualHostName())
+                                                            _connection.getAddressSpaceName())
                                  + "] ");
 
                     _upToDate = true;

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java Mon May 23 15:25:45 2016
@@ -249,6 +249,8 @@ public interface Broker<X extends Broker
 
     Collection<AccessControlProvider<?>> getAccessControlProviders();
 
+    NamedAddressSpace getSystemAddressSpace(String name);
+
     Collection<GroupProvider<?>> getGroupProviders();
 
     /**

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/NamedAddressSpace.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/NamedAddressSpace.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/NamedAddressSpace.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/NamedAddressSpace.java Mon May 23 15:25:45 2016
@@ -22,6 +22,7 @@ package org.apache.qpid.server.model;
 
 import java.security.Principal;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.qpid.server.message.MessageDestination;
@@ -66,4 +67,5 @@ public interface NamedAddressSpace exten
 
     Collection<? extends Connection<?>> getConnections();
 
+    List<String> getGlobalAddressDomains();
 }

Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemAddressSpaceAlias.java (from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PatternMatchingAlias.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemAddressSpaceAlias.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemAddressSpaceAlias.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PatternMatchingAlias.java&r1=1745130&r2=1745217&rev=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PatternMatchingAlias.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemAddressSpaceAlias.java Mon May 23 15:25:45 2016
@@ -20,11 +20,11 @@
  */
 package org.apache.qpid.server.model;
 
-@ManagedObject( category = false, type = PatternMatchingAlias.TYPE_NAME)
-public interface PatternMatchingAlias<X extends PatternMatchingAlias<X>> extends FixedVirtualHostNodeAlias<X>
+@ManagedObject( category = false, type = SystemAddressSpaceAlias.TYPE_NAME)
+public interface SystemAddressSpaceAlias<X extends SystemAddressSpaceAlias<X>> extends VirtualHostAlias<X>
 {
 
-    String TYPE_NAME = "patternMatchingAlias";
+    String TYPE_NAME = "systemAddressAlias";
 
     String PATTERN = "pattern";
 
@@ -32,5 +32,8 @@ public interface PatternMatchingAlias<X
     int getPriority();
 
     @ManagedAttribute( mandatory = true)
-    public String getPattern();
+    String getPattern();
+
+    @ManagedAttribute( mandatory = true)
+    String getSystemAddressSpace();
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Mon May 23 15:25:45 2016
@@ -38,6 +38,7 @@ import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -45,6 +46,8 @@ import java.util.Set;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
@@ -58,6 +61,7 @@ import org.apache.qpid.bytebuffer.QpidBy
 import org.apache.qpid.server.BrokerPrincipal;
 import org.apache.qpid.server.logging.QpidLoggerTurboFilter;
 import org.apache.qpid.server.logging.StartupAppender;
+import org.apache.qpid.server.plugin.SystemAddressSpaceCreator;
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.util.HousekeepingExecutor;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
@@ -141,6 +145,8 @@ public class BrokerAdapter extends Abstr
     private final BufferPoolMXBean _bufferPoolMXBean;
     private final List<String> _jvmArguments;
     private HousekeepingExecutor _houseKeepingTaskExecutor;
+    private final AddressSpaceRegistry _addressSpaceRegistry = new AddressSpaceRegistry();
+
 
     @ManagedObjectFactoryConstructor
     public BrokerAdapter(Map<String, Object> attributes,
@@ -211,6 +217,17 @@ public class BrokerAdapter extends Abstr
         }
     }
 
+    private void registerSystemAddressSpaces()
+    {
+        QpidServiceLoader qpidServiceLoader = new QpidServiceLoader();
+        Iterable<SystemAddressSpaceCreator> factories = qpidServiceLoader.instancesOf(SystemAddressSpaceCreator.class);
+        for(SystemAddressSpaceCreator creator : factories)
+        {
+            creator.register(_addressSpaceRegistry);
+        }
+    }
+
+
     @Override
     protected void postResolve()
     {
@@ -606,10 +623,18 @@ public class BrokerAdapter extends Abstr
             getEventLogger().message(BrokerMessages.PROCESS(SystemUtils.getProcessPid()));
         }
 
+        registerSystemAddressSpaces();
+
         assignTargetSizes();
     }
 
     @Override
+    public NamedAddressSpace getSystemAddressSpace(String name)
+    {
+        return _addressSpaceRegistry.getAddressSpace(name);
+    }
+
+    @Override
     public Collection<GroupProvider<?>> getGroupProviders()
     {
         Collection children = getChildren(GroupProvider.class);
@@ -1304,4 +1329,39 @@ public class BrokerAdapter extends Abstr
             return "text/plain;charset=utf-8";
         }
     }
+
+    private class AddressSpaceRegistry implements SystemAddressSpaceCreator.AddressSpaceRegistry
+    {
+        private final ConcurrentMap<String, NamedAddressSpace> _systemAddressSpaces = new ConcurrentHashMap<>();
+
+        @Override
+        public void registerAddressSpace(final NamedAddressSpace addressSpace)
+        {
+            _systemAddressSpaces.put(addressSpace.getName(), addressSpace);
+        }
+
+        @Override
+        public void removeAddressSpace(final NamedAddressSpace addressSpace)
+        {
+            _systemAddressSpaces.remove(addressSpace.getName(), addressSpace);
+        }
+
+        @Override
+        public void removeAddressSpace(final String name)
+        {
+            _systemAddressSpaces.remove(name);
+        }
+
+        @Override
+        public NamedAddressSpace getAddressSpace(final String name)
+        {
+            return _systemAddressSpaces.get(name);
+        }
+
+        @Override
+        public Broker<?> getBroker()
+        {
+            return BrokerAdapter.this;
+        }
+    }
 }

Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemAddressSpaceCreator.java (from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemNodeCreator.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemAddressSpaceCreator.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemAddressSpaceCreator.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemNodeCreator.java&r1=1745130&r2=1745217&rev=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemNodeCreator.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/SystemAddressSpaceCreator.java Mon May 23 15:25:45 2016
@@ -20,22 +20,22 @@
  */
 package org.apache.qpid.server.plugin;
 
-import org.apache.qpid.server.message.MessageNode;
-import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.NamedAddressSpace;
 
-public interface SystemNodeCreator extends Pluggable
+public interface SystemAddressSpaceCreator extends Pluggable
 {
-    interface SystemNodeRegistry
+    interface AddressSpaceRegistry
     {
-        void registerSystemNode(MessageNode node);
-        void removeSystemNode(MessageNode node);
-        void removeSystemNode(String name);
+        void registerAddressSpace(NamedAddressSpace addressSpace);
+        void removeAddressSpace(NamedAddressSpace addressSpace);
+        void removeAddressSpace(String name);
 
+        NamedAddressSpace getAddressSpace(String name);
 
-        VirtualHost<?> getVirtualHost();
+        Broker<?> getBroker();
 
-        boolean hasSystemNode(String name);
     }
 
-    void register(SystemNodeRegistry registry);
+    void register(AddressSpaceRegistry registry);
 }

Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java?rev=1745217&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java Mon May 23 15:25:45 2016
@@ -0,0 +1,34 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.protocol;
+
+public interface LinkRegistry
+{
+    LinkModel getDurableSendingLink(String name);
+
+    boolean registerSendingLink(String name, LinkModel link);
+
+    boolean unregisterSendingLink(String name);
+
+    LinkModel getDurableReceivingLink(String name);
+
+    boolean registerReceivingLink(String name, LinkModel link);
+}

Propchange: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistryImpl.java (from r1745216, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistryImpl.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistryImpl.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java&r1=1745216&r2=1745217&rev=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistry.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/LinkRegistryImpl.java Mon May 23 15:25:45 2016
@@ -23,16 +23,18 @@ package org.apache.qpid.server.protocol;
 import java.util.HashMap;
 import java.util.Map;
 
-public class LinkRegistry
+public class LinkRegistryImpl implements LinkRegistry
 {
     private final Map<String, LinkModel> _sendingLinks = new HashMap<String, LinkModel>();
     private final Map<String, LinkModel> _receivingLinks = new HashMap<String, LinkModel>();
 
+    @Override
     public synchronized LinkModel getDurableSendingLink(String name)
     {
         return _sendingLinks.get(name);
     }
 
+    @Override
     public synchronized boolean registerSendingLink(String name, LinkModel link)
     {
         if(_sendingLinks.containsKey(name))
@@ -46,6 +48,7 @@ public class LinkRegistry
         }
     }
 
+    @Override
     public synchronized boolean unregisterSendingLink(String name)
     {
         if(!_sendingLinks.containsKey(name))
@@ -59,11 +62,13 @@ public class LinkRegistry
         }
     }
 
+    @Override
     public synchronized LinkModel getDurableReceivingLink(String name)
     {
         return _receivingLinks.get(name);
     }
 
+    @Override
     public synchronized  boolean registerReceivingLink(String name, LinkModel link)
     {
         if(_receivingLinks.containsKey(name))

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java Mon May 23 15:25:45 2016
@@ -310,7 +310,7 @@ public class SecurityManager
 
     public void authoriseCreateConnection(final AMQPConnection<?> connection)
     {
-        String virtualHostName = connection.getVirtualHostName();
+        String virtualHostName = connection.getAddressSpaceName();
         ObjectProperties properties = new ObjectProperties(virtualHostName);
         properties.put(Property.VIRTUALHOST_NAME, virtualHostName);
         if (!checkAllPlugins(ObjectType.VIRTUALHOST,  properties, Operation.ACCESS))

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java Mon May 23 15:25:45 2016
@@ -41,7 +41,7 @@ public interface AMQPConnection<C extend
 
     String getRemoteAddressString();
 
-    String getVirtualHostName();
+    String getAddressSpaceName();
 
     void notifyWork();
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java Mon May 23 15:25:45 2016
@@ -293,7 +293,7 @@ public abstract class AbstractAMQPConnec
     }
 
     @Override
-    public final String getVirtualHostName()
+    public final String getAddressSpaceName()
     {
         return getAddressSpace() == null ? null : getAddressSpace().getName();
     }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java Mon May 23 15:25:45 2016
@@ -298,7 +298,8 @@ public class NonBlockingConnection imple
                 }
 
             }
-            catch (IOException | ConnectionScopedRuntimeException e)
+            catch (IOException |
+                    ConnectionScopedRuntimeException e)
             {
                 if (LOGGER.isDebugEnabled())
                 {

Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/txn/DtxNotSupportedException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/txn/DtxNotSupportedException.java?rev=1745217&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/txn/DtxNotSupportedException.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/txn/DtxNotSupportedException.java Mon May 23 15:25:45 2016
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.txn;
+
+import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
+
+public class DtxNotSupportedException extends ConnectionScopedRuntimeException
+{
+    public DtxNotSupportedException(final String message)
+    {
+        super(message);
+    }
+
+    public DtxNotSupportedException(final String message, final Throwable cause)
+    {
+        super(message, cause);
+    }
+
+    public DtxNotSupportedException(final Throwable cause)
+    {
+        super(cause);
+    }
+}

Propchange: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/txn/DtxNotSupportedException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractSystemMessageSource.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractSystemMessageSource.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractSystemMessageSource.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractSystemMessageSource.java Mon May 23 15:25:45 2016
@@ -38,6 +38,7 @@ import org.apache.qpid.server.message.Me
 import org.apache.qpid.server.message.MessageSource;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.message.internal.InternalMessage;
+import org.apache.qpid.server.model.NamedAddressSpace;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.protocol.AMQSessionModel;
 import org.apache.qpid.server.store.MessageDurability;
@@ -52,16 +53,15 @@ public abstract class AbstractSystemMess
 {
     protected final UUID _id;
     protected final String _name;
-    protected final VirtualHost<?> _virtualHost;
+    protected final NamedAddressSpace _addressSpace;
     private List<Consumer> _consumers = new CopyOnWriteArrayList<>();
 
-    public AbstractSystemMessageSource(
-            String name, final VirtualHost<?> virtualHost)
+    public AbstractSystemMessageSource(String name, final NamedAddressSpace addressSpace)
     {
         _name = name;
-        _id = UUID.nameUUIDFromBytes((getClass().getSimpleName() + "/" + virtualHost.getName() + "/" + name).getBytes(
+        _id = UUID.nameUUIDFromBytes((getClass().getSimpleName() + "/" + addressSpace.getName() + "/" + name).getBytes(
                 StandardCharsets.UTF_8));
-        _virtualHost = virtualHost;
+        _addressSpace = addressSpace;
     }
 
     @Override

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Mon May 23 15:25:45 2016
@@ -76,6 +76,7 @@ import org.apache.qpid.server.plugin.Qpi
 import org.apache.qpid.server.plugin.SystemNodeCreator;
 import org.apache.qpid.server.protocol.AMQSessionModel;
 import org.apache.qpid.server.protocol.LinkRegistry;
+import org.apache.qpid.server.protocol.LinkRegistryImpl;
 import org.apache.qpid.server.queue.QueueEntry;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.stats.StatisticsCounter;
@@ -1079,7 +1080,7 @@ public abstract class AbstractVirtualHos
         LinkRegistry linkRegistry = _linkRegistry.get(remoteContainerId);
         if(linkRegistry == null)
         {
-            linkRegistry = new LinkRegistry();
+            linkRegistry = new LinkRegistryImpl();
             _linkRegistry.put(remoteContainerId, linkRegistry);
         }
         return linkRegistry;

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPropertiesNode.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPropertiesNode.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPropertiesNode.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPropertiesNode.java Mon May 23 15:25:45 2016
@@ -32,16 +32,17 @@ import org.apache.qpid.server.filter.Fil
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.message.internal.InternalMessage;
 import org.apache.qpid.server.message.internal.InternalMessageHeader;
+import org.apache.qpid.server.model.NamedAddressSpace;
 import org.apache.qpid.server.model.VirtualHost;
 
 public class VirtualHostPropertiesNode extends AbstractSystemMessageSource
 {
 
-    public VirtualHostPropertiesNode(final VirtualHost<?> virtualHost)
+    public VirtualHostPropertiesNode(final NamedAddressSpace virtualHost)
     {
         this(virtualHost, "$virtualhostProperties");
     }
-    public VirtualHostPropertiesNode(final VirtualHost<?> virtualHost, String name)
+    public VirtualHostPropertiesNode(final NamedAddressSpace virtualHost, String name)
     {
         super(name, virtualHost);
     }
@@ -66,7 +67,7 @@ public class VirtualHostPropertiesNode e
 
         Map<String, Object> headers = new HashMap<>();
 
-        final List<String> globalAddresseDomains = _virtualHost.getGlobalAddressDomains();
+        final List<String> globalAddresseDomains = _addressSpace.getGlobalAddressDomains();
         if (globalAddresseDomains != null && !globalAddresseDomains.isEmpty())
         {
             String primaryDomain = globalAddresseDomains.get(0);
@@ -86,7 +87,7 @@ public class VirtualHostPropertiesNode e
                                                                  null, null, (byte) 4, System.currentTimeMillis(),
                                                                  0L, null, null);
         final InternalMessage message =
-                InternalMessage.createBytesMessage(_virtualHost.getMessageStore(), header, new byte[0]);
+                InternalMessage.createBytesMessage(_addressSpace.getMessageStore(), header, new byte[0]);
         message.setInitialRoutingAddress(getName());
         return message;
     }

Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/SystemAddressSpaceAliasImpl.java (from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/SystemAddressSpaceAliasImpl.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/SystemAddressSpaceAliasImpl.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java&r1=1745130&r2=1745217&rev=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/SystemAddressSpaceAliasImpl.java Mon May 23 15:25:45 2016
@@ -26,26 +26,30 @@ import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.NamedAddressSpace;
 import org.apache.qpid.server.model.PatternMatchingAlias;
 import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.SystemAddressSpaceAlias;
 
-public final class PatternMatchingAliasImpl
-        extends AbstractFixedVirtualHostNodeAlias<PatternMatchingAliasImpl>
-        implements PatternMatchingAlias<PatternMatchingAliasImpl>
+public final class SystemAddressSpaceAliasImpl
+        extends AbstractVirtualHostAlias<SystemAddressSpaceAliasImpl>
+        implements SystemAddressSpaceAlias<SystemAddressSpaceAliasImpl>
 {
     @ManagedAttributeField
     private String _pattern;
+    @ManagedAttributeField
+    private String _systemAddressSpace;
 
     @ManagedObjectFactoryConstructor
-    protected PatternMatchingAliasImpl(final Map<String, Object> attributes, final Port port)
+    protected SystemAddressSpaceAliasImpl(final Map<String, Object> attributes, final Port port)
     {
         super(attributes, port);
     }
 
-    @Override
     protected boolean matches(final String name)
     {
         return name == null ? "".matches(_pattern) : name.matches(_pattern);
@@ -84,4 +88,16 @@ public final class PatternMatchingAliasI
     {
         return _pattern;
     }
+
+    @Override
+    public String getSystemAddressSpace()
+    {
+        return _systemAddressSpace;
+    }
+
+    @Override
+    public NamedAddressSpace getAddressSpace(final String name)
+    {
+        return matches(name) ? getParent(Broker.class).getSystemAddressSpace(getSystemAddressSpace()) : null;
+    }
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/VirtualHostNameAliasImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/VirtualHostNameAliasImpl.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/VirtualHostNameAliasImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/VirtualHostNameAliasImpl.java Mon May 23 15:25:45 2016
@@ -44,14 +44,19 @@ public final class VirtualHostNameAliasI
     public NamedAddressSpace getAddressSpace(final String name)
     {
         Broker<?> broker = getPort().getParent(Broker.class);
-        for(VirtualHostNode<?> vhn : broker.getVirtualHostNodes())
+        NamedAddressSpace addressSpace = broker.getSystemAddressSpace(name);
+        if(addressSpace == null)
         {
-            VirtualHost<?> vh = vhn.getVirtualHost();
-            if(vh != null && vh.getName().equals(name))
+            for (VirtualHostNode<?> vhn : broker.getVirtualHostNodes())
             {
-                return vh;
+                VirtualHost<?> vh = vhn.getVirtualHost();
+                if (vh != null && vh.getName().equals(name))
+                {
+                    addressSpace = vh;
+                    break;
+                }
             }
         }
-        return null;
+        return addressSpace;
     }
 }

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java Mon May 23 15:25:45 2016
@@ -52,7 +52,7 @@ public class ConnectionLogSubjectTest ex
         when(_connection.getConnectionId()).thenReturn(CONNECTION_ID);
         when(_connection.getAuthorizedPrincipal()).thenReturn(principal);
         when(_connection.getRemoteAddressString()).thenReturn("/"+IP_STRING);
-        when(_connection.getVirtualHostName()).thenReturn(VHOST);
+        when(_connection.getAddressSpaceName()).thenReturn(VHOST);
         _subject = new ConnectionLogSubject(_connection);
     }
 

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/SecurityManagerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/SecurityManagerTest.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/SecurityManagerTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/SecurityManagerTest.java Mon May 23 15:25:45 2016
@@ -192,7 +192,7 @@ public class SecurityManagerTest extends
     public void testAuthoriseCreateConnection()
     {
         AMQPConnection<?> connection = mock(AMQPConnection.class);
-        when(connection.getVirtualHostName()).thenReturn(TEST_VIRTUAL_HOST);
+        when(connection.getAddressSpaceName()).thenReturn(TEST_VIRTUAL_HOST);
 
         ObjectProperties properties = new ObjectProperties();
         properties.put(Property.NAME, TEST_VIRTUAL_HOST);

Added: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java?rev=1745217&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java (added)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java Mon May 23 15:25:45 2016
@@ -0,0 +1,273 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.management.amqp;
+
+import java.security.Principal;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.qpid.exchange.ExchangeDefaults;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.MessageDestination;
+import org.apache.qpid.server.message.MessageInstance;
+import org.apache.qpid.server.message.MessageSource;
+import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.Connection;
+import org.apache.qpid.server.model.NamedAddressSpace;
+import org.apache.qpid.server.model.port.AmqpPort;
+import org.apache.qpid.server.plugin.SystemAddressSpaceCreator;
+import org.apache.qpid.server.protocol.LinkModel;
+import org.apache.qpid.server.protocol.LinkRegistry;
+import org.apache.qpid.server.security.SecurityManager;
+import org.apache.qpid.server.store.MemoryMessageStore;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.StorableMessageMetaData;
+import org.apache.qpid.server.transport.AMQPConnection;
+import org.apache.qpid.server.txn.DtxNotSupportedException;
+import org.apache.qpid.server.txn.DtxRegistry;
+import org.apache.qpid.server.txn.ServerTransaction;
+import org.apache.qpid.server.util.Action;
+import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
+import org.apache.qpid.server.virtualhost.VirtualHostPropertiesNode;
+
+public class ManagementAddressSpace implements NamedAddressSpace
+{
+
+    public static final String MANAGEMENT_ADDRESS_SPACE_NAME = "$management";
+    private static final String MANAGEMENT_NODE_NAME = "$management";
+
+    private final String _name;
+    private final SystemAddressSpaceCreator.AddressSpaceRegistry _addressSpaceRegistry;
+    private final ManagementNode _managementNode;
+    private final VirtualHostPropertiesNode _propertiesNode;
+    private final MessageStore _messageStore;
+    private final MessageDestination _defaultDestination = new DefaultDestination();
+    private final List<AMQPConnection<?>> _connections = new CopyOnWriteArrayList<>();
+    private final LinkRegistry _linkRegistry = new NonDurableLinkRegistry();
+    private final Broker<?> _broker;
+    private final Principal _principal;
+
+    public ManagementAddressSpace(final SystemAddressSpaceCreator.AddressSpaceRegistry addressSpaceRegistry)
+    {
+        this(MANAGEMENT_ADDRESS_SPACE_NAME, addressSpaceRegistry);
+    }
+
+    public ManagementAddressSpace(String name, final SystemAddressSpaceCreator.AddressSpaceRegistry addressSpaceRegistry)
+    {
+        _name = name;
+        _addressSpaceRegistry = addressSpaceRegistry;
+        _broker = addressSpaceRegistry.getBroker();
+
+        _managementNode = new ManagementNode(this, addressSpaceRegistry.getBroker(), null);
+        _propertiesNode = new VirtualHostPropertiesNode(this);
+        _messageStore = new MemoryMessageStore();
+        _principal = new ManagementAddressSpacePrincipal(this);
+    }
+
+
+    @Override
+    public MessageSource getAttainedMessageSource(final String name)
+    {
+        if(_managementNode.getName().equals(name))
+        {
+            return _managementNode;
+        }
+        else if(_propertiesNode.getName().equals(name))
+        {
+            return _propertiesNode;
+        }
+        return null;
+    }
+
+    @Override
+    public MessageDestination getAttainedMessageDestination(final String name)
+    {
+        if(_managementNode.getName().equals(name))
+        {
+            return _managementNode;
+        }
+        return null;
+    }
+
+    @Override
+    public void registerConnection(final AMQPConnection<?> connection)
+    {
+        _connections.add(connection);
+    }
+
+    @Override
+    public void deregisterConnection(final AMQPConnection<?> connection)
+    {
+        _connections.remove(connection);
+    }
+
+    @Override
+    public String getRedirectHost(final AmqpPort<?> port)
+    {
+        return null;
+    }
+
+    @Override
+    public Principal getPrincipal()
+    {
+        return _principal;
+    }
+
+    @Override
+    public boolean isActive()
+    {
+        return true;
+    }
+
+    @Override
+    public MessageDestination getDefaultDestination()
+    {
+        return _defaultDestination;
+    }
+
+    @Override
+    public LinkRegistry getLinkRegistry(final String remoteContainerId)
+    {
+        return _linkRegistry;
+    }
+
+    @Override
+    public boolean authoriseCreateConnection(final AMQPConnection<?> connection)
+    {
+        SecurityManager securityManager = _broker.getSecurityManager();
+        securityManager.authoriseCreateConnection(connection);
+        securityManager.accessManagement();
+        return true;
+    }
+
+    @Override
+    public DtxRegistry getDtxRegistry()
+    {
+        throw new DtxNotSupportedException("Distributed Transactions are not supported within this address space");
+    }
+
+    @Override
+    public MessageStore getMessageStore()
+    {
+        return _messageStore;
+    }
+
+    @Override
+    public <T extends MessageSource> T createMessageSource(final Class<T> clazz, final Map<String, Object> attributes)
+    {
+        return null;
+    }
+
+    @Override
+    public <T extends MessageDestination> T createMessageDestination(final Class<T> clazz,
+                                                                     final Map<String, Object> attributes)
+    {
+        return null;
+    }
+
+    @Override
+    public boolean hasMessageSources()
+    {
+        return true;
+    }
+
+    @Override
+    public Collection<? extends Connection<?>> getConnections()
+    {
+        return Collections.unmodifiableList(_connections);
+    }
+
+    @Override
+    public String getName()
+    {
+        return _name;
+    }
+
+    @Override
+    public List<String> getGlobalAddressDomains()
+    {
+        return Collections.emptyList();
+    }
+
+    private class DefaultDestination implements MessageDestination
+    {
+        @Override
+        public String getName()
+        {
+            return ExchangeDefaults.DEFAULT_EXCHANGE_NAME;
+        }
+
+        @Override
+        public <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
+                                                                                     final String routingAddress,
+                                                                                     final InstanceProperties instanceProperties,
+                                                                                     final ServerTransaction txn,
+                                                                                     final Action<? super MessageInstance> postEnqueueAction)
+        {
+            MessageDestination destination = getAttainedMessageDestination(routingAddress);
+            if(destination == null || destination == this)
+            {
+                return 0;
+            }
+            else
+            {
+                return destination.send(message, routingAddress, instanceProperties, txn, postEnqueueAction);
+            }
+        }
+    }
+
+    private class NonDurableLinkRegistry implements LinkRegistry
+    {
+        @Override
+        public LinkModel getDurableSendingLink(final String name)
+        {
+            return null;
+        }
+
+        @Override
+        public boolean registerSendingLink(final String name, final LinkModel link)
+        {
+            throw new ConnectionScopedRuntimeException("Durable links are not supported");
+        }
+
+        @Override
+        public boolean unregisterSendingLink(final String name)
+        {
+            return false;
+        }
+
+        @Override
+        public LinkModel getDurableReceivingLink(final String name)
+        {
+            return null;
+        }
+
+        @Override
+        public boolean registerReceivingLink(final String name, final LinkModel link)
+        {
+            throw new ConnectionScopedRuntimeException("Durable links are not supported");
+        }
+    }
+}

Propchange: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpaceCreator.java (from r1745130, qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpaceCreator.java?p2=qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpaceCreator.java&p1=qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java&r1=1745130&r2=1745217&rev=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java (original)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpaceCreator.java Mon May 23 15:25:45 2016
@@ -21,21 +21,22 @@
 package org.apache.qpid.server.management.amqp;
 
 import org.apache.qpid.server.plugin.PluggableService;
-import org.apache.qpid.server.plugin.SystemNodeCreator;
+import org.apache.qpid.server.plugin.SystemAddressSpaceCreator;
 
 @PluggableService
-public class ManagementNodeCreator implements SystemNodeCreator
+public class ManagementAddressSpaceCreator implements SystemAddressSpaceCreator
 {
+
     @Override
-    public void register(final SystemNodeRegistry registry)
+    public String getType()
     {
-        ManagementNode managementNode = new ManagementNode(registry,registry.getVirtualHost());
-        registry.registerSystemNode(managementNode);
+        return "AMQP-SYSTEM-MANAGEMENT";
     }
 
     @Override
-    public String getType()
+    public void register(final AddressSpaceRegistry registry)
     {
-        return "AMQP-VIRTUALHOST-MANAGEMENT";
+        ManagementAddressSpace addressSpace = new ManagementAddressSpace(registry);
+        registry.registerAddressSpace(addressSpace);
     }
 }

Copied: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpacePrincipal.java (from r1745130, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPrincipal.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpacePrincipal.java?p2=qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpacePrincipal.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPrincipal.java&r1=1745130&r2=1745217&rev=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPrincipal.java (original)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpacePrincipal.java Mon May 23 15:25:45 2016
@@ -18,21 +18,21 @@
  * under the License.
  *
  */
-package org.apache.qpid.server.virtualhost;
+package org.apache.qpid.server.management.amqp;
 
 import java.security.Principal;
 
-import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.NamedAddressSpace;
 
-public class VirtualHostPrincipal implements Principal
+class ManagementAddressSpacePrincipal implements Principal
 {
-    private final VirtualHost<?> _virtualHost;
+    private final NamedAddressSpace _addressSpace;
     private final String _name;
 
-    public VirtualHostPrincipal(VirtualHost<?> virtualHost)
+    public ManagementAddressSpacePrincipal(NamedAddressSpace addressSpace)
     {
-        _virtualHost = virtualHost;
-        _name = "virtualhost:" + virtualHost.getName() + "-" + virtualHost.getId();
+        _addressSpace = addressSpace;
+        _name = "addressspace:" + addressSpace.getName();
     }
 
     @Override
@@ -53,13 +53,13 @@ public class VirtualHostPrincipal implem
             return false;
         }
 
-        VirtualHostPrincipal that = (VirtualHostPrincipal) o;
-        return _virtualHost.equals(that._virtualHost);
+        ManagementAddressSpacePrincipal that = (ManagementAddressSpacePrincipal) o;
+        return _addressSpace.equals(that._addressSpace);
     }
 
     @Override
     public int hashCode()
     {
-        return _virtualHost.hashCode();
+        return _addressSpace.hashCode();
     }
 }

Modified: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java (original)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java Mon May 23 15:25:45 2016
@@ -52,8 +52,8 @@ import org.apache.qpid.server.message.in
 import org.apache.qpid.server.model.ConfigurationChangeListener;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.NamedAddressSpace;
 import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.plugin.MessageConverter;
 import org.apache.qpid.server.plugin.SystemNodeCreator;
 import org.apache.qpid.server.protocol.AMQSessionModel;
@@ -102,11 +102,11 @@ class ManagementNode implements MessageS
     public static final String RESULTS = "results";
 
 
-    private final VirtualHost<?> _virtualHost;
+    private final NamedAddressSpace _addressSpace;
 
     private final UUID _id;
 
-    private final SystemNodeCreator.SystemNodeRegistry _registry;
+    private final Action<ManagementNode> _onDelete;
     private final ConfiguredObject<?> _managedObject;
     private Map<String, ManagementNodeConsumer> _consumers = new ConcurrentHashMap<String, ManagementNodeConsumer>();
 
@@ -115,11 +115,13 @@ class ManagementNode implements MessageS
     private Map<ManagedEntityType,Map<String,ConfiguredObject>> _entities = Collections.synchronizedMap(new LinkedHashMap<ManagedEntityType,Map<String,ConfiguredObject>>());
 
 
-    public ManagementNode(final SystemNodeCreator.SystemNodeRegistry registry,
-                          final ConfiguredObject<?> configuredObject)
+
+    public ManagementNode(final NamedAddressSpace addressSpace,
+                          final ConfiguredObject<?> configuredObject,
+                          final Action<ManagementNode> onDelete)
     {
-        _virtualHost = registry.getVirtualHost();
-        _registry = registry;
+        _addressSpace = addressSpace;
+        _onDelete = onDelete;
         final String name = configuredObject.getId() + MANAGEMENT_NODE_NAME;
         _id = UUID.nameUUIDFromBytes(name.getBytes(Charset.defaultCharset()));
 
@@ -127,7 +129,6 @@ class ManagementNode implements MessageS
         _managedObject = configuredObject;
 
         configuredObject.addChangeListener(new ModelObjectListener());
-
     }
 
     private Class getManagementClass(Class objectClass)
@@ -265,7 +266,7 @@ class ManagementNode implements MessageS
         MessageConverter converter =
                 MessageConverterRegistry.getConverter(message.getClass(), InternalMessage.class);
 
-        final InternalMessage msg = (InternalMessage) converter.convert(message, _virtualHost);
+        final InternalMessage msg = (InternalMessage) converter.convert(message, _addressSpace);
 
         if(validateMessage(msg))
         {
@@ -364,10 +365,10 @@ class ManagementNode implements MessageS
         }
         else
         {
-            _virtualHost.getDefaultDestination().send(response,
-                                                      message.getMessageHeader().getReplyTo(), InstanceProperties.EMPTY,
-                                                      new AutoCommitTransaction(_virtualHost.getMessageStore()),
-                                                      null);
+            _addressSpace.getDefaultDestination().send(response,
+                                                       message.getMessageHeader().getReplyTo(), InstanceProperties.EMPTY,
+                                                       new AutoCommitTransaction(_addressSpace.getMessageStore()),
+                                                       null);
         }
         // TODO - route to a queue
 
@@ -475,7 +476,7 @@ class ManagementNode implements MessageS
             responseBody.put(attribute, fixValue(entity.getAttribute(attribute)));
         }
 
-        return InternalMessage.createMapMessage(_virtualHost.getMessageStore(),responseHeader, responseBody);
+        return InternalMessage.createMapMessage(_addressSpace.getMessageStore(), responseHeader, responseBody);
     }
 
 
@@ -501,7 +502,7 @@ class ManagementNode implements MessageS
             responseHeader.setHeader(STATUS_CODE_HEADER, STATUS_CODE_FORBIDDEN);
         }
 
-        return InternalMessage.createMapMessage(_virtualHost.getMessageStore(),responseHeader, Collections.emptyMap());
+        return InternalMessage.createMapMessage(_addressSpace.getMessageStore(), responseHeader, Collections.emptyMap());
     }
 
 
@@ -612,7 +613,7 @@ class ManagementNode implements MessageS
         }
         responseHeader.setHeader(STATUS_CODE_HEADER, statusCode);
         responseHeader.setHeader(STATUS_DESCRIPTION_HEADER, MessageFormat.format(stateDescription, params));
-        return InternalMessage.createBytesMessage(_virtualHost.getMessageStore(), responseHeader, new byte[0]);
+        return InternalMessage.createBytesMessage(_addressSpace.getMessageStore(), responseHeader, new byte[0]);
 
     }
 
@@ -646,7 +647,7 @@ class ManagementNode implements MessageS
         }
         else
         {
-            responseMessage = InternalMessage.createBytesMessage(_virtualHost.getMessageStore(), requestHeader, new byte[0]);
+            responseMessage = InternalMessage.createBytesMessage(_addressSpace.getMessageStore(), requestHeader, new byte[0]);
         }
         return responseMessage;
     }
@@ -689,7 +690,7 @@ class ManagementNode implements MessageS
                 responseMap.put(type.getName(), parentNames);
             }
         }
-        responseMessage = InternalMessage.createMapMessage(_virtualHost.getMessageStore(), responseHeader, responseMap);
+        responseMessage = InternalMessage.createMapMessage(_addressSpace.getMessageStore(), responseHeader, responseMap);
         return responseMessage;
     }
 
@@ -727,7 +728,7 @@ class ManagementNode implements MessageS
             responseMap.put(restriction, Arrays.asList(entityMapCopy.get(restriction).getAttributes()));
         }
 
-        responseMessage = InternalMessage.createMapMessage(_virtualHost.getMessageStore(), responseHeader, responseMap);
+        responseMessage = InternalMessage.createMapMessage(_addressSpace.getMessageStore(), responseHeader, responseMap);
         return responseMessage;
     }
 
@@ -766,7 +767,7 @@ class ManagementNode implements MessageS
             ManagedEntityType type = entityMapCopy.get(restriction);
             responseMap.put(type.getName(), Arrays.asList(type.getOperations()));
         }
-        responseMessage = InternalMessage.createMapMessage(_virtualHost.getMessageStore(), responseHeader, responseMap);
+        responseMessage = InternalMessage.createMapMessage(_addressSpace.getMessageStore(), responseHeader, responseMap);
         return responseMessage;
     }
 
@@ -887,7 +888,7 @@ class ManagementNode implements MessageS
         Map<String,List> responseMap = new HashMap<String, List>();
         responseMap.put(ATTRIBUTE_NAMES, attributes);
         responseMap.put(RESULTS, responseList);
-        responseMessage = InternalMessage.createMapMessage(_virtualHost.getMessageStore(),
+        responseMessage = InternalMessage.createMapMessage(_addressSpace.getMessageStore(),
                                                            responseHeader,
                                                            responseMap);
         return responseMessage;
@@ -1223,7 +1224,10 @@ class ManagementNode implements MessageS
         {
             if(newState == State.DELETED)
             {
-                _registry.removeSystemNode(ManagementNode.this);
+                if(_onDelete != null)
+                {
+                    _onDelete.performAction(ManagementNode.this);
+                }
             }
             else if(newState == State.ACTIVE && object instanceof org.apache.qpid.server.model.VirtualHost)
             {

Modified: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java?rev=1745217&r1=1745216&r2=1745217&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java (original)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java Mon May 23 15:25:45 2016
@@ -22,6 +22,7 @@ package org.apache.qpid.server.managemen
 
 import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.plugin.SystemNodeCreator;
+import org.apache.qpid.server.util.Action;
 
 @PluggableService
 public class ManagementNodeCreator implements SystemNodeCreator
@@ -29,7 +30,15 @@ public class ManagementNodeCreator imple
     @Override
     public void register(final SystemNodeRegistry registry)
     {
-        ManagementNode managementNode = new ManagementNode(registry,registry.getVirtualHost());
+        ManagementNode managementNode = new ManagementNode(registry.getVirtualHost(),
+                                                           registry.getVirtualHost(), new Action<ManagementNode>()
+                {
+                    @Override
+                    public void performAction(final ManagementNode node)
+                    {
+                        registry.removeSystemNode(node);
+                    }
+                });
         registry.registerSystemNode(managementNode);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org