You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2016/03/17 13:49:25 UTC

svn commit: r1735413 - in /qpid/java/trunk/broker-core/src: main/java/org/apache/qpid/server/model/port/ main/java/org/apache/qpid/server/virtualhostalias/ test/java/org/apache/qpid/server/virtualhostalias/

Author: lquack
Date: Thu Mar 17 12:49:25 2016
New Revision: 1735413

URL: http://svn.apache.org/viewvc?rev=1735413&view=rev
Log:
QPID-7110: [Java Broker] allow creation and deletion of VirtualHostAliases on the AmqpPort

Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhostalias/VirtualHostAliasTest.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java?rev=1735413&r1=1735412&r2=1735413&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java Thu Mar 17 12:49:25 2016
@@ -53,7 +53,7 @@ import org.apache.qpid.server.model.Tran
 import org.apache.qpid.server.model.TrustStore;
 import org.apache.qpid.server.util.ParameterizedTypes;
 
-abstract public class AbstractPort<X extends AbstractPort<X>> extends AbstractConfiguredObject<X> implements Port<X>
+public abstract class AbstractPort<X extends AbstractPort<X>> extends AbstractConfiguredObject<X> implements Port<X>
 {
     private static final Logger LOGGER = LoggerFactory.getLogger(AbstractPort.class);
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java?rev=1735413&r1=1735412&r2=1735413&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPort.java Thu Mar 17 12:49:25 2016
@@ -21,7 +21,6 @@
 package org.apache.qpid.server.model.port;
 
 import java.net.SocketAddress;
-import java.util.Map;
 import java.util.Set;
 
 import org.apache.qpid.server.model.AuthenticationProvider;
@@ -35,7 +34,6 @@ import org.apache.qpid.server.model.Stat
 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.model.VirtualHostAlias;
 
 import javax.net.ssl.SSLContext;
 
@@ -146,7 +144,5 @@ public interface AmqpPort<X extends Amqp
 
     int decrementConnectionCount();
 
-    VirtualHostAlias createVirtualHostAlias(Map<String, Object> attributes);
-
     int getNetworkBufferSize();
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java?rev=1735413&r1=1735412&r2=1735413&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java Thu Mar 17 12:49:25 2016
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.StringWriter;
 import java.net.SocketAddress;
 import java.security.GeneralSecurityException;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -39,6 +40,7 @@ import javax.net.ssl.KeyManager;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
+import javax.security.auth.Subject;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -69,6 +71,7 @@ import org.apache.qpid.server.model.Virt
 import org.apache.qpid.server.plugin.ProtocolEngineCreator;
 import org.apache.qpid.server.plugin.QpidServiceLoader;
 import org.apache.qpid.server.plugin.TransportProviderFactory;
+import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.transport.AcceptingTransport;
 import org.apache.qpid.server.transport.TransportProvider;
 import org.apache.qpid.server.util.PortUtil;
@@ -180,25 +183,45 @@ public class AmqpPortImpl extends Abstra
     {
         super.onCreate();
 
-        Map<String, Object> attributes = new HashMap<>();
-        attributes.put(VirtualHostAlias.NAME, "nameAlias");
-        attributes.put(VirtualHostAlias.TYPE, VirtualHostNameAlias.TYPE_NAME);
-        attributes.put(VirtualHostAlias.DURABLE, true);
-        createVirtualHostAlias(attributes);
-
-        attributes = new HashMap<>();
-        attributes.put(VirtualHostAlias.NAME, "defaultAlias");
-        attributes.put(VirtualHostAlias.TYPE, DefaultVirtualHostAlias.TYPE_NAME);
-        attributes.put(VirtualHostAlias.DURABLE, true);
-        createVirtualHostAlias(attributes);
-
-
-        attributes = new HashMap<>();
-        attributes.put(VirtualHostAlias.NAME, "hostnameAlias");
-        attributes.put(VirtualHostAlias.TYPE, HostNameAlias.TYPE_NAME);
-        attributes.put(VirtualHostAlias.DURABLE, true);
-        createVirtualHostAlias(attributes);
+        final Map<String, Object> nameAliasAttributes = new HashMap<>();
+        nameAliasAttributes.put(VirtualHostAlias.NAME, "nameAlias");
+        nameAliasAttributes.put(VirtualHostAlias.TYPE, VirtualHostNameAlias.TYPE_NAME);
+        nameAliasAttributes.put(VirtualHostAlias.DURABLE, true);
+
+        final Map<String, Object> defaultAliasAttributes = new HashMap<>();
+        defaultAliasAttributes.put(VirtualHostAlias.NAME, "defaultAlias");
+        defaultAliasAttributes.put(VirtualHostAlias.TYPE, DefaultVirtualHostAlias.TYPE_NAME);
+        defaultAliasAttributes.put(VirtualHostAlias.DURABLE, true);
+
+        final Map<String, Object> hostnameAliasAttributes = new HashMap<>();
+        hostnameAliasAttributes.put(VirtualHostAlias.NAME, "hostnameAlias");
+        hostnameAliasAttributes.put(VirtualHostAlias.TYPE, HostNameAlias.TYPE_NAME);
+        hostnameAliasAttributes.put(VirtualHostAlias.DURABLE, true);
+
+        Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(),
+                     new PrivilegedAction<Object>()
+                     {
+                         @Override
+                         public Object run()
+                         {
+                             createChild(VirtualHostAlias.class, nameAliasAttributes);
+                             createChild(VirtualHostAlias.class, defaultAliasAttributes);
+                             createChild(VirtualHostAlias.class, hostnameAliasAttributes);
+                             return null;
+                         }
+                     });
+    }
 
+    @Override
+    public <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(final Class<C> childClass,
+                                                                          final Map<String, Object> attributes,
+                                                                          final ConfiguredObject... otherParents)
+    {
+        if (VirtualHostAlias.class.isAssignableFrom(childClass))
+        {
+            return getObjectFactory().createAsync(childClass, attributes, this);
+        }
+        return super.addChildAsync(childClass, attributes, otherParents);
     }
 
     @Override
@@ -299,25 +322,11 @@ public class AmqpPortImpl extends Abstra
     }
 
     @Override
-    public VirtualHostAlias createVirtualHostAlias(Map<String, Object> attributes)
-    {
-        VirtualHostAlias child = addVirtualHostAlias(attributes);
-        childAdded(child);
-        return child;
-    }
-
-    @Override
     public int getNetworkBufferSize()
     {
         return _broker.getNetworkBufferSize();
     }
 
-    private VirtualHostAlias addVirtualHostAlias(Map<String,Object> attributes)
-    {
-        return getObjectFactory().create(VirtualHostAlias.class, attributes, this);
-    }
-
-
     @Override
     public void validateOnCreate()
     {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java?rev=1735413&r1=1735412&r2=1735413&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java Thu Mar 17 12:49:25 2016
@@ -30,7 +30,7 @@ import org.apache.qpid.server.model.Prot
 import org.apache.qpid.server.model.Transport;
 import org.apache.qpid.server.model.TrustStore;
 
-@ManagedObject( category = false, type = "HTTP")
+@ManagedObject( category = false, type = "HTTP", validChildTypes = "org.apache.qpid.server.model.port.HttpPortImpl#getSupportedChildTypes()")
 public interface HttpPort<X extends HttpPort<X>> extends ClientAuthCapablePort<X>
 {
     String DEFAULT_HTTP_NEED_CLIENT_AUTH = "false";

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java?rev=1735413&r1=1735412&r2=1735413&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java Thu Mar 17 12:49:25 2016
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.server.model.port;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 
@@ -29,6 +31,7 @@ import org.apache.qpid.server.model.Conf
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.VirtualHostAlias;
 import org.apache.qpid.server.util.PortUtil;
 
 public class HttpPortImpl extends AbstractClientAuthCapablePortWithAuthProvider<HttpPortImpl> implements HttpPort<HttpPortImpl>
@@ -145,4 +148,9 @@ public class HttpPortImpl extends Abstra
             throw new IllegalConfigurationException(String.format("Thread pool minimum %d cannot be greater than thread pool maximum %d.", httpPort.getThreadPoolMinimum() , httpPort.getThreadPoolMaximum()));
         }
     }
+
+    public static Map<String, Collection<String>> getSupportedChildTypes()
+    {
+        return Collections.singletonMap(VirtualHostAlias.class.getSimpleName(), (Collection<String>) Collections.<String>emptyList());
+    }
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java?rev=1735413&r1=1735412&r2=1735413&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java Thu Mar 17 12:49:25 2016
@@ -23,10 +23,14 @@ package org.apache.qpid.server.virtualho
 
 import java.util.Map;
 
+import com.google.common.util.concurrent.ListenableFuture;
+
+import org.apache.qpid.server.logging.messages.PortMessages;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
 import org.apache.qpid.server.model.VirtualHostAlias;
 
 abstract class AbstractVirtualHostAlias<X extends AbstractVirtualHostAlias<X>>
@@ -39,6 +43,7 @@ abstract class AbstractVirtualHostAlias<
     protected AbstractVirtualHostAlias(Map<String, Object> attributes, Port port)
     {
         super(parentsMap(port), attributes);
+        setState(State.ACTIVE);
     }
 
     @Override
@@ -53,10 +58,17 @@ abstract class AbstractVirtualHostAlias<
         return _priority;
     }
 
-    @Override
-    public State getState()
+    @StateTransition(currentState = {State.ACTIVE, State.ERRORED}, desiredState = State.DELETED )
+    private ListenableFuture<Void> doDelete()
     {
-        return State.ACTIVE;
+        return doAfterAlways(closeAsync(), new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                deleted();
+                setState(State.DELETED);
+            }
+        });
     }
-
 }

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhostalias/VirtualHostAliasTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhostalias/VirtualHostAliasTest.java?rev=1735413&r1=1735412&r2=1735413&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhostalias/VirtualHostAliasTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhostalias/VirtualHostAliasTest.java Thu Mar 17 12:49:25 2016
@@ -137,7 +137,7 @@ public class VirtualHostAliasTest extend
         attributes.put(VirtualHostAlias.TYPE, PatternMatchingAlias.TYPE_NAME);
         attributes.put(PatternMatchingAlias.PATTERN, "orange|pink.*");
         attributes.put(PatternMatchingAlias.VIRTUAL_HOST_NODE, _vhosts.get("purple").getParent(VirtualHostNode.class));
-        _port.createVirtualHostAlias(attributes);
+        _port.createChild(VirtualHostAlias.class, attributes);
 
         VirtualHost<?> vhost = _port.getVirtualHost("orange");
 
@@ -184,7 +184,7 @@ public class VirtualHostAliasTest extend
         attributes.put(VirtualHostAlias.PRIORITY, 10);
         attributes.put(PatternMatchingAlias.PATTERN, "bl.*");
         attributes.put(PatternMatchingAlias.VIRTUAL_HOST_NODE, _vhosts.get("purple").getParent(VirtualHostNode.class));
-        _port.createVirtualHostAlias(attributes);
+        _port.createChild(VirtualHostAlias.class, attributes);
 
         vhost = _port.getVirtualHost("blue");
 
@@ -203,7 +203,7 @@ public class VirtualHostAliasTest extend
         attributes.put(VirtualHostAlias.PRIORITY, 5);
         attributes.put(PatternMatchingAlias.PATTERN, ".*u.*");
         attributes.put(PatternMatchingAlias.VIRTUAL_HOST_NODE, _vhosts.get("red").getParent(VirtualHostNode.class));
-        _port.createVirtualHostAlias(attributes);
+        _port.createChild(VirtualHostAlias.class, attributes);
 
 
 



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