summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-04-24 22:24:26 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-04-24 22:24:26 +0000
commite50105c859d536424397c3d9fdd3c5df6efc36f6 (patch)
treea0edc4554697baddc35891e2dcf95a21991c8869 /qpid/java
parent690303476c2ab39cf24eaff180f1e385c8528fc0 (diff)
downloadqpid-python-e50105c859d536424397c3d9fdd3c5df6efc36f6.tar.gz
QPID-5578 : Remove unusued contants and tidy up other code
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1589897 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java22
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java228
3 files changed, 115 insertions, 137 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
index 68e1f9d7f2..20020ea2a5 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
@@ -108,7 +108,7 @@ public abstract class AbstractPluginAdapter<X extends Plugin<X>> extends Abstrac
}
}
- protected Broker getBroker()
+ protected Broker<?> getBroker()
{
return _broker;
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
index 436122d2e1..0363fb6cdd 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
@@ -21,12 +21,10 @@
package org.apache.qpid.server.model.port;
-import java.lang.reflect.Type;
import java.security.AccessControlException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -50,29 +48,9 @@ import org.apache.qpid.server.model.VirtualHostAlias;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.util.MapValueConverter;
-import org.apache.qpid.server.util.ParameterizedTypeImpl;
abstract public class AbstractPort<X extends AbstractPort<X>> extends AbstractConfiguredObject<X> implements Port<X>
{
- @SuppressWarnings("serial")
- public static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{
- put(NAME, String.class);
- put(PROTOCOLS, new ParameterizedTypeImpl(Set.class, Protocol.class));
- put(TRANSPORTS, new ParameterizedTypeImpl(Set.class, Transport.class));
- put(TRUST_STORES, new ParameterizedTypeImpl(Set.class, String.class));
- put(KEY_STORE, String.class);
- put(PORT, Integer.class);
- put(TCP_NO_DELAY, Boolean.class);
- put(RECEIVE_BUFFER_SIZE, Integer.class);
- put(SEND_BUFFER_SIZE, Integer.class);
- put(NEED_CLIENT_AUTH, Boolean.class);
- put(WANT_CLIENT_AUTH, Boolean.class);
- put(BINDING_ADDRESS, String.class);
- put(STATE, State.class);
- put(AUTHENTICATION_PROVIDER, String.class);
- }});
-
- public static final Transport DEFAULT_TRANSPORT = Transport.TCP;
private final Broker<?> _broker;
private AtomicReference<State> _state;
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
index b9651c2d8f..5c5f53f676 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
@@ -20,14 +20,11 @@
*/
package org.apache.qpid.server.management.plugin;
-import java.lang.reflect.Type;
import java.net.SocketAddress;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.EnumSet;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -69,7 +66,7 @@ import org.apache.qpid.server.management.plugin.servlet.rest.StructureServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.UserPreferencesServlet;
import org.apache.qpid.server.model.*;
import org.apache.qpid.server.model.adapter.AbstractPluginAdapter;
-import org.apache.qpid.server.model.port.AbstractPortWithAuthProvider;
+import org.apache.qpid.server.model.port.HttpPort;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager;
@@ -90,18 +87,6 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
private static final String OPERATIONAL_LOGGING_NAME = "Web";
-
- @SuppressWarnings("serial")
- private static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{
- put(HTTP_BASIC_AUTHENTICATION_ENABLED, Boolean.class);
- put(HTTPS_BASIC_AUTHENTICATION_ENABLED, Boolean.class);
- put(HTTP_SASL_AUTHENTICATION_ENABLED, Boolean.class);
- put(HTTPS_SASL_AUTHENTICATION_ENABLED, Boolean.class);
- put(NAME, String.class);
- put(TIME_OUT, Integer.class);
- put(TYPE, String.class);
- }});
-
private static final String JSESSIONID_COOKIE_PREFIX = "JSESSIONID_";
private Server _server;
@@ -146,7 +131,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
{
getBroker().getEventLogger().message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
- Collection<Port> httpPorts = getHttpPorts(getBroker().getPorts());
+ Collection<Port<?>> httpPorts = getHttpPorts(getBroker().getPorts());
_server = createServer(httpPorts);
try
{
@@ -184,8 +169,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
return _sessionTimeout;
}
- @SuppressWarnings("unchecked")
- private Server createServer(Collection<Port> ports)
+ private Server createServer(Collection<Port<?>> ports)
{
if (_logger.isInfoEnabled())
{
@@ -194,114 +178,48 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
Server server = new Server();
int lastPort = -1;
- for (Port port : ports)
+ for (Port<?> port : ports)
{
- if (State.QUIESCED.equals(port.getState()))
+ if(port instanceof HttpPort)
{
- continue;
- }
- Connector connector = null;
+ if (State.QUIESCED.equals(port.getState()))
+ {
+ continue;
+ }
+
+ Connector connector = null;
- Collection<Transport> transports = port.getTransports();
- if (!transports.contains(Transport.SSL))
- {
- connector = new SelectChannelConnector();
- }
- else if (transports.contains(Transport.SSL))
- {
- KeyStore keyStore = port.getKeyStore();
- Collection<TrustStore> trustStores = port.getTrustStores();
- if (keyStore == null)
+ Collection<Transport> transports = port.getTransports();
+ if (!transports.contains(Transport.SSL))
{
- throw new IllegalConfigurationException("Key store is not configured. Cannot start management on HTTPS port without keystore");
+ connector = new SelectChannelConnector();
}
- SslContextFactory factory = new SslContextFactory();
- final boolean needClientAuth = port instanceof AbstractPortWithAuthProvider
- && ((AbstractPortWithAuthProvider)port).getNeedClientAuth();
- final boolean wantClientAuth = port instanceof AbstractPortWithAuthProvider
- && ((AbstractPortWithAuthProvider)port).getWantClientAuth();
- boolean needClientCert = needClientAuth || wantClientAuth;
- if (needClientCert && trustStores.isEmpty())
+ else if (transports.contains(Transport.SSL))
{
- throw new IllegalConfigurationException("Client certificate authentication is enabled on AMQP port '"
- + this.getName() + "' but no trust store defined");
+ connector = createSslConnector((HttpPort<?>) port);
}
-
- try
+ else
{
- SSLContext sslContext = SSLContext.getInstance("TLS");
- KeyManager[] keyManagers = keyStore.getKeyManagers();
-
- TrustManager[] trustManagers;
- if(trustStores == null || trustStores.isEmpty())
- {
- trustManagers = null;
- }
- else if(trustStores.size() == 1)
- {
- trustManagers = trustStores.iterator().next().getTrustManagers();
- }
- else
- {
- Collection<TrustManager> trustManagerList = new ArrayList<TrustManager>();
- final QpidMultipleTrustManager mulTrustManager = new QpidMultipleTrustManager();
-
- for(TrustStore ts : trustStores)
- {
- TrustManager[] managers = ts.getTrustManagers();
- if(managers != null)
- {
- for(TrustManager manager : managers)
- {
- if(manager instanceof X509TrustManager)
- {
- mulTrustManager.addTrustManager((X509TrustManager)manager);
- }
- else
- {
- trustManagerList.add(manager);
- }
- }
- }
- }
- if(!mulTrustManager.isEmpty())
- {
- trustManagerList.add(mulTrustManager);
- }
- trustManagers = trustManagerList.toArray(new TrustManager[trustManagerList.size()]);
- }
- sslContext.init(keyManagers, trustManagers, null);
-
- factory.setSslContext(sslContext);
- if(needClientAuth)
- {
- factory.setNeedClientAuth(true);
- }
- else if(wantClientAuth)
- {
- factory.setWantClientAuth(true);
- }
+ throw new IllegalArgumentException("Unexpected transport on port "
+ + port.getName()
+ + ":"
+ + transports);
}
- catch (GeneralSecurityException e)
+ lastPort = port.getPort();
+ String bindingAddress = port.getBindingAddress();
+ if (bindingAddress != null && !bindingAddress.trim().equals("") && !bindingAddress.trim().equals("*"))
{
- throw new ServerScopedRuntimeException("Cannot configure port " + port.getName() + " for transport " + Transport.SSL, e);
+ connector.setHost(bindingAddress.trim());
}
- connector = new SslSocketConnector(factory);
-
+ connector.setPort(port.getPort());
+ server.addConnector(connector);
}
else
{
- throw new IllegalArgumentException("Unexpected transport on port " + port.getName() + ":" + transports);
+ throw new IllegalArgumentException("Http management can only be added to an Http port");
}
- lastPort = port.getPort();
- String bindingAddress = port.getBindingAddress();
- if(bindingAddress != null && !bindingAddress.trim().equals("") && !bindingAddress.trim().equals("*"))
- {
- connector.setHost(bindingAddress.trim());
- }
- connector.setPort(port.getPort());
- server.addConnector(connector);
+
}
ServletContextHandler root = new ServletContextHandler(ServletContextHandler.SESSIONS);
@@ -379,6 +297,88 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
return server;
}
+ private Connector createSslConnector(final HttpPort<?> port)
+ {
+ final Connector connector;
+ KeyStore keyStore = port.getKeyStore();
+ Collection<TrustStore> trustStores = port.getTrustStores();
+ if (keyStore == null)
+ {
+ throw new IllegalConfigurationException("Key store is not configured. Cannot start management on HTTPS port without keystore");
+ }
+ SslContextFactory factory = new SslContextFactory();
+
+ boolean needClientCert = port.getNeedClientAuth() || port.getWantClientAuth();
+
+ if (needClientCert && trustStores.isEmpty())
+ {
+ throw new IllegalConfigurationException("Client certificate authentication is enabled on AMQP port '"
+ + this.getName() + "' but no trust store defined");
+ }
+
+ try
+ {
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ KeyManager[] keyManagers = keyStore.getKeyManagers();
+
+ TrustManager[] trustManagers;
+ if(trustStores == null || trustStores.isEmpty())
+ {
+ trustManagers = null;
+ }
+ else if(trustStores.size() == 1)
+ {
+ trustManagers = trustStores.iterator().next().getTrustManagers();
+ }
+ else
+ {
+ Collection<TrustManager> trustManagerList = new ArrayList<>();
+ final QpidMultipleTrustManager mulTrustManager = new QpidMultipleTrustManager();
+
+ for(TrustStore ts : trustStores)
+ {
+ TrustManager[] managers = ts.getTrustManagers();
+ if(managers != null)
+ {
+ for(TrustManager manager : managers)
+ {
+ if(manager instanceof X509TrustManager)
+ {
+ mulTrustManager.addTrustManager((X509TrustManager)manager);
+ }
+ else
+ {
+ trustManagerList.add(manager);
+ }
+ }
+ }
+ }
+ if(!mulTrustManager.isEmpty())
+ {
+ trustManagerList.add(mulTrustManager);
+ }
+ trustManagers = trustManagerList.toArray(new TrustManager[trustManagerList.size()]);
+ }
+ sslContext.init(keyManagers, trustManagers, null);
+
+ factory.setSslContext(sslContext);
+ if(port.getNeedClientAuth())
+ {
+ factory.setNeedClientAuth(true);
+ }
+ else if(port.getWantClientAuth())
+ {
+ factory.setWantClientAuth(true);
+ }
+ }
+ catch (GeneralSecurityException e)
+ {
+ throw new ServerScopedRuntimeException("Cannot configure port " + port.getName() + " for transport " + Transport.SSL, e);
+ }
+ connector = new SslSocketConnector(factory);
+ return connector;
+ }
+
private void addRestServlet(ServletContextHandler root, String name, Class<? extends ConfiguredObject>... hierarchy)
{
root.addServlet(new ServletHolder(name, new RestServlet(hierarchy)), "/rest/" + name + "/*");
@@ -417,10 +417,10 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
return connector instanceof SslSocketConnector ? "HTTPS" : "HTTP";
}
- private Collection<Port> getHttpPorts(Collection<Port> ports)
+ private Collection<Port<?>> getHttpPorts(Collection<Port<?>> ports)
{
- Collection<Port> httpPorts = new HashSet<Port>();
- for (Port port : ports)
+ Collection<Port<?>> httpPorts = new HashSet<>();
+ for (Port<?> port : ports)
{
if (port.getAvailableProtocols().contains(Protocol.HTTP))
{