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 2014/03/07 17:36:28 UTC
svn commit: r1575315 [4/4] - in /qpid/trunk/qpid/java:
bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/jmx/
bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/
broker-core/src/main/java/org/apache/qpid/server/ broker-core...
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/session/LoginLogoutReporterTest.java Fri Mar 7 16:36:26 2014
@@ -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 ext
{
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 ext
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)
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java Fri Mar 7 16:36:26 2014
@@ -20,10 +20,9 @@
*/
package org.apache.qpid.server.jmx;
-import javax.net.ssl.KeyManager;
import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.BrokerProperties;
-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.model.Broker;
import org.apache.qpid.server.model.KeyStore;
@@ -32,7 +31,6 @@ import org.apache.qpid.server.model.Tran
import org.apache.qpid.server.security.auth.jmx.JMXPasswordAuthenticator;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
-import org.apache.qpid.ssl.SSLContextFactory;
import javax.management.JMException;
import javax.management.MBeanServer;
@@ -99,12 +97,12 @@ public class JMXManagedObjectRegistry im
@Override
public void start() throws IOException
{
- CurrentActor.get().message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
+ SystemLog.message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
//check if system properties are set to use the JVM's out-of-the-box JMXAgent
if (areOutOfTheBoxJMXOptionsSet())
{
- CurrentActor.get().message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
+ SystemLog.message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
}
else
{
@@ -138,7 +136,7 @@ public class JMXManagedObjectRegistry im
throw new ServerScopedRuntimeException("Unable to create SSLContext for key store", e);
}
- CurrentActor.get().message(ManagementConsoleMessages.SSL_KEYSTORE(keyStore.getName()));
+ SystemLog.message(ManagementConsoleMessages.SSL_KEYSTORE(keyStore.getName()));
//create the SSL RMI socket factories
csf = new SslRMIClientSocketFactory();
@@ -250,8 +248,8 @@ public class JMXManagedObjectRegistry im
_cs.start();
String connectorServer = (connectorSslEnabled ? "SSL " : "") + "JMX RMIConnectorServer";
- CurrentActor.get().message(ManagementConsoleMessages.LISTENING(connectorServer, jmxPortConnectorServer));
- CurrentActor.get().message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
+ SystemLog.message(ManagementConsoleMessages.LISTENING(connectorServer, jmxPortConnectorServer));
+ SystemLog.message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
}
private Registry createRmiRegistry(int jmxPortRegistryServer, boolean useCustomRmiRegistry)
@@ -269,7 +267,7 @@ public class JMXManagedObjectRegistry im
rmiRegistry = LocateRegistry.createRegistry(jmxPortRegistryServer, null, null);
}
- CurrentActor.get().message(ManagementConsoleMessages.LISTENING("RMI Registry", jmxPortRegistryServer));
+ SystemLog.message(ManagementConsoleMessages.LISTENING("RMI Registry", jmxPortRegistryServer));
return rmiRegistry;
}
@@ -294,7 +292,7 @@ public class JMXManagedObjectRegistry im
unregisterAllMbeans();
- CurrentActor.get().message(ManagementConsoleMessages.STOPPED(OPERATIONAL_LOGGING_NAME));
+ SystemLog.message(ManagementConsoleMessages.STOPPED(OPERATIONAL_LOGGING_NAME));
}
private void closeConnectorAndRegistryServers()
@@ -338,7 +336,7 @@ public class JMXManagedObjectRegistry im
if (_rmiRegistry != null)
{
// Stopping the RMI registry
- CurrentActor.get().message(ManagementConsoleMessages.SHUTTING_DOWN("RMI Registry", _registryPort.getPort()));
+ SystemLog.message(ManagementConsoleMessages.SHUTTING_DOWN("RMI Registry", _registryPort.getPort()));
try
{
boolean success = UnicastRemoteObject.unexportObject(_rmiRegistry, false);
@@ -365,7 +363,8 @@ public class JMXManagedObjectRegistry im
// Stopping the JMX ConnectorServer
try
{
- CurrentActor.get().message(ManagementConsoleMessages.SHUTTING_DOWN("JMX RMIConnectorServer", _cs.getAddress().getPort()));
+ SystemLog.message(ManagementConsoleMessages.SHUTTING_DOWN("JMX RMIConnectorServer",
+ _cs.getAddress().getPort()));
_cs.stop();
}
catch (IOException e)
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java Fri Mar 7 16:36:26 2014
@@ -23,8 +23,6 @@ package org.apache.qpid.server.jmx;
import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.BrokerProperties;
-import org.apache.qpid.server.logging.actors.CurrentActor;
-import org.apache.qpid.server.logging.actors.ManagementActor;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.security.SecurityManager;
@@ -39,17 +37,13 @@ import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.RuntimeErrorException;
import javax.management.remote.MBeanServerForwarder;
-import javax.management.remote.rmi.RMIServer;
import javax.security.auth.Subject;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
-import java.rmi.server.RemoteServer;
-import java.rmi.server.ServerNotActiveException;
import java.security.AccessControlContext;
import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Arrays;
@@ -64,7 +58,6 @@ public class MBeanInvocationHandlerImpl
private final static String DELEGATE = "JMImplementation:type=MBeanServerDelegate";
private MBeanServer _mbs;
- private final ManagementActor _logActor;
private final boolean _managementRightsInferAllAccess;
private final Broker _broker;
@@ -73,7 +66,6 @@ public class MBeanInvocationHandlerImpl
{
_managementRightsInferAllAccess = Boolean.valueOf(System.getProperty(BrokerProperties.PROPERTY_MANAGEMENT_RIGHTS_INFER_ALL_ACCESS, "true"));
_broker = broker;
- _logActor = new ManagementActor(broker.getRootMessageLogger());
}
public static MBeanServerForwarder newProxyInstance(Broker broker)
@@ -117,9 +109,9 @@ public class MBeanInvocationHandlerImpl
return false;
}
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
+ public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable
{
- String methodName = method.getName();
+ final String methodName = method.getName();
if (methodName.equals("getMBeanServer"))
{
@@ -167,16 +159,7 @@ public class MBeanInvocationHandlerImpl
throw new SecurityException("Access denied: no authenticated principal", e);
}
- // Save the subject
- CurrentActor.set(_logActor);
- try
- {
- return authoriseAndInvoke(method, args);
- }
- finally
- {
- CurrentActor.remove();
- }
+ return authoriseAndInvoke(method, args);
}
catch (InvocationTargetException e)
{
@@ -207,7 +190,7 @@ public class MBeanInvocationHandlerImpl
}
}
- private Object authoriseAndInvoke(final Method method, final Object[] args) throws Throwable
+ private Object authoriseAndInvoke(final Method method, final Object[] args) throws Exception
{
String methodName;
// Get the component, type and impact, which may be null
@@ -239,8 +222,11 @@ public class MBeanInvocationHandlerImpl
{
try
{
+ Subject subject = Subject.getSubject(AccessController.getContext());
+ subject = new Subject(false, subject.getPrincipals(), subject.getPublicCredentials(), subject.getPrivateCredentials());
+ subject.getPrincipals().addAll(SecurityManager.SYSTEM.getPrincipals());
- return Subject.doAs(SecurityManager.SYSTEM, new PrivilegedExceptionAction<Object>()
+ return Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
{
@Override
public Object run() throws IllegalAccessException, InvocationTargetException
@@ -251,7 +237,7 @@ public class MBeanInvocationHandlerImpl
}
catch (PrivilegedActionException e)
{
- throw e.getCause();
+ throw (Exception) e.getCause();
}
}
else
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java Fri Mar 7 16:36:26 2014
@@ -27,12 +27,19 @@ import javax.management.Notification;
import javax.management.NotificationFilter;
import javax.management.NotificationListener;
import javax.management.remote.JMXConnectionNotification;
+import javax.security.auth.Subject;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.RootMessageLogger;
-import org.apache.qpid.server.logging.actors.ManagementActor;
+import org.apache.qpid.server.logging.SystemLog;
import org.apache.qpid.server.logging.messages.ManagementConsoleMessages;
+import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
+import org.apache.qpid.server.security.auth.jmx.JMXConnectionPrincipal;
+
+import java.rmi.server.RemoteServer;
+import java.rmi.server.ServerNotActiveException;
+import java.security.PrivilegedAction;
+import java.util.Collections;
public class ManagementLogonLogoffReporter implements NotificationListener, NotificationFilter
{
@@ -65,19 +72,41 @@ public class ManagementLogonLogoffReport
final String[] splitConnectionId = connectionId.split(" ");
user = splitConnectionId[1];
}
+ Subject originalSubject = new Subject(false, Collections.singleton(new AuthenticatedPrincipal(user)), Collections.emptySet(), Collections.emptySet());
+ Subject subject;
- // use a separate instance of actor as subject is not set on connect/disconnect
- // we need to pass principal name explicitly into log actor
- LogActor logActor = new ManagementActor(_rootMessageLogger, user);
- if (JMXConnectionNotification.OPENED.equals(type))
+ try
{
- logActor.message(ManagementConsoleMessages.OPEN(user));
+ String clientHost = RemoteServer.getClientHost();
+ subject = new Subject(false,
+ originalSubject.getPrincipals(),
+ originalSubject.getPublicCredentials(),
+ originalSubject.getPrivateCredentials());
+ subject.getPrincipals().add(new JMXConnectionPrincipal(clientHost));
+ subject.setReadOnly();
}
- else if (JMXConnectionNotification.CLOSED.equals(type) ||
- JMXConnectionNotification.FAILED.equals(type))
+ catch(ServerNotActiveException e)
{
- logActor.message(ManagementConsoleMessages.CLOSE(user));
+ subject = originalSubject;
}
+ final String username = user;
+ Subject.doAs(subject, new PrivilegedAction<Object>()
+ {
+ @Override
+ public Object run()
+ {
+ if (JMXConnectionNotification.OPENED.equals(type))
+ {
+ SystemLog.message(ManagementConsoleMessages.OPEN(username));
+ }
+ else if (JMXConnectionNotification.CLOSED.equals(type) ||
+ JMXConnectionNotification.FAILED.equals(type))
+ {
+ SystemLog.message(ManagementConsoleMessages.CLOSE(username));
+ }
+ return null;
+ }
+ });
}
@Override
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java Fri Mar 7 16:36:26 2014
@@ -23,6 +23,7 @@ import static javax.management.remote.JM
import static javax.management.remote.JMXConnectionNotification.CLOSED;
import static javax.management.remote.JMXConnectionNotification.FAILED;
+import static org.mockito.Matchers.argThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;
@@ -31,10 +32,14 @@ import static org.mockito.Matchers.anySt
import javax.management.remote.JMXConnectionNotification;
-import org.apache.qpid.server.logging.LogActor;
+import org.apache.qpid.server.logging.LogMessage;
import org.apache.qpid.server.logging.RootMessageLogger;
import junit.framework.TestCase;
+import org.apache.qpid.server.logging.SystemLog;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.mockito.ArgumentMatcher;
public class ManagementLogonLogoffReporterTest extends TestCase
{
@@ -52,8 +57,8 @@ public class ManagementLogonLogoffReport
_usernameAccessor = mock(UsernameAccessor.class);
_rootMessageLogger = mock(RootMessageLogger.class);
// Enable messaging so we can valid the generated strings
- when(_rootMessageLogger.isMessageEnabled(any(LogActor.class), anyString())).thenReturn(true);
-
+ when(_rootMessageLogger.isMessageEnabled(anyString())).thenReturn(true);
+ SystemLog.setRootMessageLogger(_rootMessageLogger);
_reporter = new ManagementLogonLogoffReporter(_rootMessageLogger, _usernameAccessor);
}
@@ -64,7 +69,21 @@ public class ManagementLogonLogoffReport
_reporter.handleNotification(openNotification, null);
- verify(_rootMessageLogger).rawMessage("[main] MNG-1007 : Open : User jmxuser", "qpid.message.managementconsole.open");
+ verify(_rootMessageLogger).message(messageMatch("MNG-1007 : Open : User jmxuser",
+ "qpid.message.managementconsole.open"));
+ }
+
+ private LogMessage messageMatch(final String message, final String hierarchy)
+ {
+ return argThat(new ArgumentMatcher<LogMessage>()
+ {
+ @Override
+ public boolean matches(final Object argument)
+ {
+ LogMessage actual = (LogMessage) argument;
+ return actual.getLogHierarchy().equals(hierarchy) && actual.toString().equals(message);
+ }
+ });
}
public void testClosedNotification()
@@ -74,7 +93,7 @@ public class ManagementLogonLogoffReport
_reporter.handleNotification(closeNotification, null);
- verify(_rootMessageLogger).rawMessage("[main] MNG-1008 : Close : User jmxuser", "qpid.message.managementconsole.close");
+ verify(_rootMessageLogger).message(messageMatch("MNG-1008 : Close : User jmxuser", "qpid.message.managementconsole.close"));
}
public void tesNotifiedForLogOnTypeEvents()
Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/protocol/ServerProtocolEngine.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/protocol/ServerProtocolEngine.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/protocol/ServerProtocolEngine.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/protocol/ServerProtocolEngine.java Fri Mar 7 16:36:26 2014
@@ -20,10 +20,14 @@
*/
package org.apache.qpid.protocol;
+import javax.security.auth.Subject;
+
public interface ServerProtocolEngine extends ProtocolEngine
{
/**
* Gets the connection ID associated with this ProtocolEngine
*/
long getConnectionId();
+
+ Subject getSubject();
}
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java Fri Mar 7 16:36:26 2014
@@ -81,7 +81,9 @@ public class ChannelLoggingTest extends
String log = getLogMessage(results, 0);
// MESSAGE [con:0(guest@anonymous(3273383)/test)/ch:1] CHN-1001 : Create
validateMessageID("CHN-1001", log);
- assertEquals("Incorrect Channel in actor:"+fromActor(log), isBroker010()? 0 : 1, getChannelID(fromActor(log)));
+ final String fromActor = fromActor(log);
+ final int channelID = getChannelID(fromActor);
+ assertEquals("Incorrect Channel in actor:"+fromActor(log), isBroker010()? 0 : 1, channelID);
if (!isBroker010())
{
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java Fri Mar 7 16:36:26 2014
@@ -69,7 +69,7 @@ public class VirtualHostLoggingTest exte
{
List<String> vhosts = Arrays.asList("test");
- assertEquals("Each vhost did not create a store.", vhosts.size(), results.size());
+ assertEquals("Each vhost did not create a store.", 2*vhosts.size(), results.size());
for (int index = 0; index < results.size(); index++)
{
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java?rev=1575315&r1=1575314&r2=1575315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java Fri Mar 7 16:36:26 2014
@@ -20,11 +20,15 @@
*/
package org.apache.qpid.test.utils;
+import java.security.PrivilegedAction;
import java.util.Set;
import org.apache.log4j.Logger;
import org.apache.qpid.server.Broker;
+import org.apache.qpid.server.security.auth.TaskPrincipal;
+
+import javax.security.auth.Subject;
public class InternalBrokerHolder implements BrokerHolder
{
@@ -57,8 +61,21 @@ public class InternalBrokerHolder implem
{
LOGGER.info("Shutting down Broker instance");
- _broker.shutdown();
+ Subject subject = org.apache.qpid.server.security.SecurityManager.SYSTEM;
+ subject = new Subject(false, subject.getPrincipals(), subject.getPublicCredentials(), subject.getPrivateCredentials());
+ subject.getPrincipals().add(new TaskPrincipal("Shutdown"));
+
+ Subject.doAs(subject, new PrivilegedAction<Object>()
+ {
+ @Override
+ public Object run()
+ {
+ _broker.shutdown();
+ return null;
+ }
+
+ });
waitUntilPortsAreFree();
LOGGER.info("Broker instance shutdown");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org