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