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