summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/management-http
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-03-07 16:36:26 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-03-07 16:36:26 +0000
commit9e9d87a76f12567c2e0f65485bbf85b39fc6e437 (patch)
treee8caf31a36a4618fbaa33b765ca68f9c48942226 /qpid/java/broker-plugins/management-http
parent735d2fbd9b1cf73410363d23591d50fe34c61dc4 (diff)
downloadqpid-python-9e9d87a76f12567c2e0f65485bbf85b39fc6e437.tar.gz
QPID-5611 : [Java Broker] remove LogActors
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1575315 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/management-http')
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java16
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java57
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java9
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java15
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java6
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporter.java10
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java19
7 files changed, 48 insertions, 84 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 d11b1e029c..9a4adbc4c7 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
@@ -33,7 +33,7 @@ import javax.servlet.DispatcherType;
import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.logging.actors.CurrentActor;
+import org.apache.qpid.server.logging.SystemLog;
import org.apache.qpid.server.logging.messages.ManagementConsoleMessages;
import org.apache.qpid.server.management.plugin.filter.ForbiddingAuthorisationFilter;
import org.apache.qpid.server.management.plugin.filter.RedirectingAuthorisationFilter;
@@ -140,7 +140,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
private void start()
{
- CurrentActor.get().message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
+ SystemLog.message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
Collection<Port> httpPorts = getHttpPorts(getBroker().getPorts());
_server = createServer(httpPorts);
@@ -154,7 +154,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
throw new ServerScopedRuntimeException("Failed to start HTTP management on ports : " + httpPorts, e);
}
- CurrentActor.get().message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
+ SystemLog.message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
}
private void stop()
@@ -172,7 +172,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
}
}
- CurrentActor.get().message(ManagementConsoleMessages.STOPPED(OPERATIONAL_LOGGING_NAME));
+ SystemLog.message(ManagementConsoleMessages.STOPPED(OPERATIONAL_LOGGING_NAME));
}
public int getSessionTimeout()
@@ -381,13 +381,14 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
Connector[] connectors = server.getConnectors();
for (Connector connector : connectors)
{
- CurrentActor.get().message(ManagementConsoleMessages.LISTENING(stringifyConnectorScheme(connector), connector.getPort()));
+ SystemLog.message(ManagementConsoleMessages.LISTENING(stringifyConnectorScheme(connector),
+ connector.getPort()));
if (connector instanceof SslSocketConnector)
{
SslContextFactory sslContextFactory = ((SslSocketConnector)connector).getSslContextFactory();
if (sslContextFactory != null && sslContextFactory.getKeyStorePath() != null)
{
- CurrentActor.get().message(ManagementConsoleMessages.SSL_KEYSTORE(sslContextFactory.getKeyStorePath()));
+ SystemLog.message(ManagementConsoleMessages.SSL_KEYSTORE(sslContextFactory.getKeyStorePath()));
}
}
}
@@ -398,7 +399,8 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
Connector[] connectors = server.getConnectors();
for (Connector connector : connectors)
{
- CurrentActor.get().message(ManagementConsoleMessages.SHUTTING_DOWN(stringifyConnectorScheme(connector), connector.getPort()));
+ SystemLog.message(ManagementConsoleMessages.SHUTTING_DOWN(stringifyConnectorScheme(connector),
+ connector.getPort()));
}
}
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 5d39b3c0c1..023453e74f 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
@@ -22,11 +22,8 @@ package org.apache.qpid.server.management.plugin;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-import java.security.AccessControlException;
import java.security.Principal;
import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
import java.security.cert.X509Certificate;
import java.util.Collections;
@@ -37,9 +34,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.codec.binary.Base64;
-import org.apache.qpid.server.logging.LogActor;
-import org.apache.qpid.server.logging.actors.CurrentActor;
-import org.apache.qpid.server.logging.actors.HttpManagementActor;
import org.apache.qpid.server.management.plugin.servlet.ServletConnectionPrincipal;
import org.apache.qpid.server.management.plugin.session.LoginLogoutReporter;
import org.apache.qpid.server.model.AuthenticationProvider;
@@ -51,7 +45,6 @@ import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationS
import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
import org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerFactory;
-import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.transport.network.security.ssl.SSLUtil;
public class HttpManagementUtil
@@ -117,55 +110,33 @@ public class HttpManagementUtil
subject.getPrincipals().add(new ServletConnectionPrincipal(request));
subject.setReadOnly();
- LogActor actor = createHttpManagementActor(broker, request);
+ assertManagementAccess(broker.getSecurityManager(), subject);
- assertManagementAccess(broker.getSecurityManager(), subject, actor);
-
- saveAuthorisedSubject(session, subject, actor);
+ saveAuthorisedSubject(session, subject);
}
}
- public static void assertManagementAccess(final SecurityManager securityManager, Subject subject, LogActor actor)
+ public static void assertManagementAccess(final SecurityManager securityManager, Subject subject)
{
- CurrentActor.set(actor);
- try
+ Subject.doAs(subject, new PrivilegedAction<Void>()
{
- Subject.doAs(subject, new PrivilegedAction<Void>()
+ @Override
+ public Void run()
{
- @Override
- public Void run()
- {
- securityManager.accessManagement();
- return null;
- }
- });
- }
- finally
- {
- CurrentActor.remove();
- }
- }
-
- public static HttpManagementActor getOrCreateAndCacheLogActor(HttpServletRequest request, Broker broker)
- {
- HttpSession session = request.getSession();
- HttpManagementActor actor = (HttpManagementActor) session.getAttribute(ATTR_LOG_ACTOR);
- if (actor == null)
- {
- actor = createHttpManagementActor(broker, request);
- session.setAttribute(ATTR_LOG_ACTOR, actor);
- }
- return actor;
+ securityManager.accessManagement();
+ return null;
+ }
+ });
}
- public static void saveAuthorisedSubject(HttpSession session, Subject subject, LogActor logActor)
+ public static void saveAuthorisedSubject(HttpSession session, Subject subject)
{
session.setAttribute(ATTR_SUBJECT, subject);
// Cause the user logon to be logged.
- session.setAttribute(ATTR_LOGIN_LOGOUT_REPORTER, new LoginLogoutReporter(logActor, subject));
+ session.setAttribute(ATTR_LOGIN_LOGOUT_REPORTER, new LoginLogoutReporter(subject));
}
public static Subject tryToAuthenticate(HttpServletRequest request, HttpManagementConfiguration managementConfig)
@@ -245,9 +216,5 @@ public class HttpManagementUtil
return null;
}
- private static HttpManagementActor createHttpManagementActor(Broker broker, HttpServletRequest request)
- {
- return new HttpManagementActor(broker.getRootMessageLogger(), request.getRemoteAddr(), request.getRemotePort());
- }
}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java
index 0925e2b088..18a026ec93 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java
@@ -20,13 +20,14 @@
*/
package org.apache.qpid.server.management.plugin.servlet;
+import org.apache.qpid.server.security.auth.ManagementConnectionPrincipal;
import org.apache.qpid.server.security.auth.SocketConnectionPrincipal;
import javax.servlet.ServletRequest;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-public class ServletConnectionPrincipal implements SocketConnectionPrincipal
+public class ServletConnectionPrincipal implements ManagementConnectionPrincipal
{
private final InetSocketAddress _address;
@@ -74,4 +75,10 @@ public class ServletConnectionPrincipal implements SocketConnectionPrincipal
{
return _address.hashCode();
}
+
+ @Override
+ public String getType()
+ {
+ return "HTTP";
+ }
}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
index 1133b6e091..a9e80db3bf 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
@@ -33,13 +33,9 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.logging.LogActor;
-import org.apache.qpid.server.logging.actors.CurrentActor;
-import org.apache.qpid.server.logging.actors.HttpManagementActor;
import org.apache.qpid.server.management.plugin.HttpManagementConfiguration;
import org.apache.qpid.server.management.plugin.HttpManagementUtil;
import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
@@ -88,7 +84,6 @@ public abstract class AbstractServlet extends HttpServlet
/**
* Performs the GET action as the logged-in {@link Subject}.
- * The {@link LogActor} is set before this method is called.
* Subclasses commonly override this method
*/
protected void doGetWithSubjectAndActor(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException
@@ -117,7 +112,6 @@ public abstract class AbstractServlet extends HttpServlet
/**
* Performs the POST action as the logged-in {@link Subject}.
- * The {@link LogActor} is set before this method is called.
* Subclasses commonly override this method
*/
protected void doPostWithSubjectAndActor(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
@@ -145,7 +139,6 @@ public abstract class AbstractServlet extends HttpServlet
/**
* Performs the PUT action as the logged-in {@link Subject}.
- * The {@link LogActor} is set before this method is called.
* Subclasses commonly override this method
*/
protected void doPutWithSubjectAndActor(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
@@ -174,7 +167,6 @@ public abstract class AbstractServlet extends HttpServlet
/**
* Performs the PUT action as the logged-in {@link Subject}.
- * The {@link LogActor} is set before this method is called.
* Subclasses commonly override this method
*/
protected void doDeleteWithSubjectAndActor(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
@@ -198,8 +190,6 @@ public abstract class AbstractServlet extends HttpServlet
return;
}
- HttpManagementActor logActor = HttpManagementUtil.getOrCreateAndCacheLogActor(request, _broker);
- CurrentActor.set(logActor);
try
{
Subject.doAs(subject, privilegedExceptionAction);
@@ -223,11 +213,6 @@ public abstract class AbstractServlet extends HttpServlet
}
throw new ConnectionScopedRuntimeException(e.getCause());
}
- finally
- {
- CurrentActor.remove();
- }
-
}
protected Subject getAuthorisedSubject(HttpServletRequest request)
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 b59e9bc04d..2ca67fadc9 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
@@ -27,7 +27,6 @@ import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.management.plugin.HttpManagementConfiguration;
import org.apache.qpid.server.management.plugin.HttpManagementUtil;
import org.apache.qpid.server.model.Broker;
@@ -247,10 +246,9 @@ public class SaslServlet extends AbstractServlet
subject.setReadOnly();
Broker broker = getBroker();
- LogActor actor = HttpManagementUtil.getOrCreateAndCacheLogActor(request, broker);
try
{
- HttpManagementUtil.assertManagementAccess(broker.getSecurityManager(), subject, actor);
+ HttpManagementUtil.assertManagementAccess(broker.getSecurityManager(), subject);
}
catch(SecurityException e)
{
@@ -258,7 +256,7 @@ public class SaslServlet extends AbstractServlet
return;
}
- HttpManagementUtil.saveAuthorisedSubject(request.getSession(), subject, actor);
+ HttpManagementUtil.saveAuthorisedSubject(request.getSession(), subject);
session.removeAttribute(ATTR_ID);
session.removeAttribute(ATTR_SASL_SERVER);
session.removeAttribute(ATTR_EXPIRY);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporter.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporter.java
index 238f1b4719..5155654e82 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporter.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporter.java
@@ -28,7 +28,7 @@ import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.logging.LogActor;
+import org.apache.qpid.server.logging.SystemLog;
import org.apache.qpid.server.logging.messages.ManagementConsoleMessages;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
@@ -40,14 +40,12 @@ import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
public class LoginLogoutReporter implements HttpSessionBindingListener
{
private static final Logger LOGGER = Logger.getLogger(LoginLogoutReporter.class);
- private final LogActor _logActor;
private final Subject _subject;
private final Principal _principal;
- public LoginLogoutReporter(LogActor logActor, Subject subject)
+ public LoginLogoutReporter(Subject subject)
{
super();
- _logActor = logActor;
_subject = subject;
_principal = AuthenticatedPrincipal.getAuthenticatedPrincipalFromSubject(_subject);
}
@@ -76,7 +74,7 @@ public class LoginLogoutReporter implements HttpSessionBindingListener
@Override
public Void run()
{
- _logActor.message(ManagementConsoleMessages.OPEN(_principal.getName()));
+ SystemLog.message(ManagementConsoleMessages.OPEN(_principal.getName()));
return null;
}
});
@@ -94,7 +92,7 @@ public class LoginLogoutReporter implements HttpSessionBindingListener
@Override
public Void run()
{
- _logActor.message(ManagementConsoleMessages.CLOSE(_principal.getName()));
+ SystemLog.message(ManagementConsoleMessages.CLOSE(_principal.getName()));
return null;
}
});
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java
index 1d43c44587..16ae5220ab 100644
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java
+++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java
@@ -19,16 +19,20 @@
*/
package org.apache.qpid.server.management.plugin.session;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Matchers.argThat;
+import static org.mockito.Mockito.when;
import javax.security.auth.Subject;
-import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.LogMessage;
+import org.apache.qpid.server.logging.RootMessageLogger;
+import org.apache.qpid.server.logging.SystemLog;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
import org.mockito.ArgumentMatcher;
-import org.mockito.Mockito;
import junit.framework.TestCase;
@@ -36,7 +40,7 @@ public class LoginLogoutReporterTest extends TestCase
{
private LoginLogoutReporter _loginLogoutReport;
private Subject _subject = new Subject();
- private LogActor _logActor = Mockito.mock(LogActor.class);
+ private RootMessageLogger _logger = mock(RootMessageLogger.class);
@Override
protected void setUp() throws Exception
@@ -44,19 +48,22 @@ public class LoginLogoutReporterTest extends TestCase
super.setUp();
_subject.getPrincipals().add(new AuthenticatedPrincipal("mockusername"));
- _loginLogoutReport = new LoginLogoutReporter(_logActor, _subject);
+ when(_logger.isEnabled()).thenReturn(true);
+ when(_logger.isMessageEnabled(anyString())).thenReturn(true);
+ SystemLog.setRootMessageLogger(_logger);
+ _loginLogoutReport = new LoginLogoutReporter(_subject);
}
public void testLoginLogged()
{
_loginLogoutReport.valueBound(null);
- verify(_logActor).message(isLogMessageWithMessage("MNG-1007 : Open : User mockusername"));
+ verify(_logger).message(isLogMessageWithMessage("MNG-1007 : Open : User mockusername"));
}
public void testLogoutLogged()
{
_loginLogoutReport.valueUnbound(null);
- verify(_logActor).message(isLogMessageWithMessage("MNG-1008 : Close : User mockusername"));
+ verify(_logger).message(isLogMessageWithMessage("MNG-1008 : Close : User mockusername"));
}
private LogMessage isLogMessageWithMessage(final String expectedMessage)