You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2015/04/10 14:45:28 UTC
svn commit: r1672632 - in
/qpid/trunk/qpid/java/broker-plugins/management-http/src:
main/java/org/apache/qpid/server/management/plugin/
main/java/org/apache/qpid/server/management/plugin/servlet/rest/
test/java/org/apache/qpid/server/management/plugin/
Author: rgodfrey
Date: Fri Apr 10 12:45:28 2015
New Revision: 1672632
URL: http://svn.apache.org/r1672632
Log:
QPID-6488 : Set the Port object as an attribute on every HttpRequest
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1672632&r1=1672631&r2=1672632&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java Fri Apr 10 12:45:28 2015
@@ -22,8 +22,6 @@ package org.apache.qpid.server.managemen
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.HttpServletReq
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
@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 Abst
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 Abst
}
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 Abst
}
@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
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java?rev=1672632&r1=1672631&r2=1672632&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java Fri Apr 10 12:45:28 2015
@@ -22,6 +22,8 @@ package org.apache.qpid.server.managemen
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 HttpManagementConfigura
- AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress);
+ AuthenticationProvider getAuthenticationProvider(HttpServletRequest request);
}
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java?rev=1672632&r1=1672631&r2=1672632&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java Fri Apr 10 12:45:28 2015
@@ -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();
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java?rev=1672632&r1=1672631&r2=1672632&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java Fri Apr 10 12:45:28 2015
@@ -128,8 +128,7 @@ public class LoggedOnUserPreferencesServ
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");
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java?rev=1672632&r1=1672631&r2=1672632&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java Fri Apr 10 12:45:28 2015
@@ -301,8 +301,7 @@ public class SaslServlet extends Abstrac
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());
}
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java?rev=1672632&r1=1672631&r2=1672632&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java Fri Apr 10 12:45:28 2015
@@ -113,16 +113,5 @@ public class HttpManagementTest extends
_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);
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org