diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2014-04-24 22:24:26 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2014-04-24 22:24:26 +0000 |
| commit | e50105c859d536424397c3d9fdd3c5df6efc36f6 (patch) | |
| tree | a0edc4554697baddc35891e2dcf95a21991c8869 /qpid/java | |
| parent | 690303476c2ab39cf24eaff180f1e385c8528fc0 (diff) | |
| download | qpid-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')
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)) { |
