summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2015-04-10 12:45:28 +0000
committerRobert Godfrey <rgodfrey@apache.org>2015-04-10 12:45:28 +0000
commit1d6c8836f2990ed8077805655bd3c1b7d3b7d4c0 (patch)
tree2abdbecc31067a419cfb4680fb62278769f6aff6 /qpid/java
parent26a85b7021e679299a7ba187f0194364d2db16bc (diff)
downloadqpid-python-1d6c8836f2990ed8077805655bd3c1b7d3b7d4c0.tar.gz
QPID-6488 : Set the Port object as an attribute on every HttpRequest
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1672632 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java50
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java4
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java3
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java3
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java3
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java11
6 files changed, 39 insertions, 35 deletions
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 f9293a33b0..fbe9f068b9 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
@@ -22,8 +22,6 @@ package org.apache.qpid.server.management.plugin;
import java.io.IOException;
import java.io.Writer;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -45,7 +43,9 @@ import javax.servlet.http.HttpServletRequest;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.handler.ErrorHandler;
@@ -93,6 +93,7 @@ import org.apache.qpid.transport.network.security.ssl.SSLUtil;
@ManagedObject( category = false, type = "MANAGEMENT-HTTP" )
public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implements HttpManagementConfiguration<HttpManagement>, PortManager
{
+ private static final String PORT_SERVLET_ATTRIBUTE = "org.apache.qpid.server.model.Port";
private final Logger _logger = LoggerFactory.getLogger(HttpManagement.class);
// 10 minutes by default
@@ -224,7 +225,16 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
Collection<Transport> transports = port.getTransports();
if (!transports.contains(Transport.SSL))
{
- connector = new SelectChannelConnector();
+ final Port thePort = port;
+ connector = new SelectChannelConnector()
+ {
+ @Override
+ public void customize(final EndPoint endpoint, final Request request) throws IOException
+ {
+ super.customize(endpoint, request);
+ request.setAttribute(PORT_SERVLET_ATTRIBUTE, thePort);
+ }
+ };
}
else if (transports.contains(Transport.SSL))
{
@@ -452,7 +462,23 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
}
connector = port.getTransports().contains(Transport.TCP)
? new TcpAndSslSelectChannelConnector(factory)
- : new SslSelectChannelConnector(factory);
+ {
+ @Override
+ public void customize(final EndPoint endpoint, final Request request) throws IOException
+ {
+ super.customize(endpoint, request);
+ request.setAttribute(PORT_SERVLET_ATTRIBUTE, port);
+ }
+ }
+ : new SslSelectChannelConnector(factory)
+ {
+ @Override
+ public void customize(final EndPoint endpoint, final Request request) throws IOException
+ {
+ super.customize(endpoint, request);
+ request.setAttribute(PORT_SERVLET_ATTRIBUTE, port);
+ }
+ };
return connector;
}
@@ -555,20 +581,10 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
}
@Override
- public AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress)
+ public AuthenticationProvider getAuthenticationProvider(HttpServletRequest request)
{
- InetSocketAddress inetSocketAddress = (InetSocketAddress)localAddress;
- AuthenticationProvider provider = null;
- Collection<Port<?>> ports = getBroker().getPorts();
- for (Port<?> p : ports)
- {
- if (p instanceof HttpPort && inetSocketAddress.getPort() == p.getPort())
- {
- provider = ((HttpPort<?>) p).getAuthenticationProvider();
- break;
- }
- }
- return provider;
+ HttpPort<?> port = (HttpPort<?>)request.getAttribute(PORT_SERVLET_ATTRIBUTE);
+ return port == null ? null : port.getAuthenticationProvider();
}
@Override
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
index 018b23daaf..d3d9770912 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
@@ -22,6 +22,8 @@ package org.apache.qpid.server.management.plugin;
import java.net.SocketAddress;
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.ManagedAttribute;
import org.apache.qpid.server.model.ManagedContextDefault;
@@ -76,5 +78,5 @@ public interface HttpManagementConfiguration<X extends HttpManagementConfigurati
- AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress);
+ AuthenticationProvider getAuthenticationProvider(HttpServletRequest request);
}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
index 847ada3407..90906538d2 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
@@ -156,8 +156,7 @@ public class HttpManagementUtil
public static Subject tryToAuthenticate(HttpServletRequest request, HttpManagementConfiguration managementConfig)
{
Subject subject = null;
- SocketAddress localAddress = getSocketAddress(request);
- final AuthenticationProvider authenticationProvider = managementConfig.getAuthenticationProvider(localAddress);
+ final AuthenticationProvider authenticationProvider = managementConfig.getAuthenticationProvider(request);
SubjectCreator subjectCreator = authenticationProvider.getSubjectCreator(request.isSecure());
String remoteUser = request.getRemoteUser();
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java
index 25d109ba29..6984a32e09 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java
@@ -128,8 +128,7 @@ public class LoggedOnUserPreferencesServlet extends AbstractServlet
private PreferencesProvider getPreferencesProvider(HttpServletRequest request)
{
- SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request);
- AuthenticationProvider authenticationProvider = getManagementConfiguration().getAuthenticationProvider(localAddress);
+ AuthenticationProvider authenticationProvider = getManagementConfiguration().getAuthenticationProvider(request);
if (authenticationProvider == null)
{
throw new IllegalStateException("Authentication provider is not found");
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
index 6524a24757..5bff0e22e5 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
@@ -301,8 +301,7 @@ public class SaslServlet extends AbstractServlet
private SubjectCreator getSubjectCreator(HttpServletRequest request)
{
- SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request);
- return HttpManagementUtil.getManagementConfiguration(getServletContext()).getAuthenticationProvider(localAddress).getSubjectCreator(
+ return HttpManagementUtil.getManagementConfiguration(getServletContext()).getAuthenticationProvider(request).getSubjectCreator(
request.isSecure());
}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
index d1b923048b..4031f13655 100644
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
+++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
@@ -113,16 +113,5 @@ public class HttpManagementTest extends QpidTestCase
_management.isHttpBasicAuthenticationEnabled());
}
- public void testGetAuthenticationProvider()
- {
- SocketAddress localAddress = InetSocketAddress.createUnresolved("localhost", 8080);
- AuthenticationProvider brokerAuthenticationProvider = mock(AuthenticationProvider.class);
- HttpPort port = mock(HttpPort.class);
- when(port.getPort()).thenReturn(8080);
- when(port.getAuthenticationProvider()).thenReturn(brokerAuthenticationProvider);
- when(_broker.getPorts()).thenReturn(Collections.singletonList(port));
- AuthenticationProvider authenticationProvider = _management.getAuthenticationProvider(localAddress);
- assertEquals("Unexpected subject creator", brokerAuthenticationProvider, authenticationProvider);
- }
}