diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2014-03-08 14:36:06 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2014-03-08 14:36:06 +0000 |
commit | 19b2671cbd4af77ac52c222605c09b06cab7ced6 (patch) | |
tree | 6f650ec2b1ad6bbdd5c64d0a4415b52fa136a41e | |
parent | 9d32428fce0ff0631319e2eae21081a2f8f19e9b (diff) | |
download | qpid-python-19b2671cbd4af77ac52c222605c09b06cab7ced6.tar.gz |
QPID-5611 : Fix other logging to always use the most current event logger held at the broker
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1575547 13f79535-47bb-0310-9956-ffa450edef68
28 files changed, 124 insertions, 60 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/TransactionTimeoutHelper.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/TransactionTimeoutHelper.java index dd47a28296..2bf9fae19d 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/TransactionTimeoutHelper.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/TransactionTimeoutHelper.java @@ -19,6 +19,7 @@ package org.apache.qpid.server; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.LogMessage; import org.apache.qpid.server.logging.LogSubject; import org.apache.qpid.server.logging.messages.ChannelMessages; @@ -32,15 +33,15 @@ public class TransactionTimeoutHelper private final LogSubject _logSubject; private final CloseAction _closeAction; - private final EventLogger _eventLogger; + private final EventLoggerProvider _eventLoggerProvider; public TransactionTimeoutHelper(final LogSubject logSubject, final CloseAction closeAction, - final EventLogger eventLogger) + final EventLoggerProvider eventLoggerProvider) { _logSubject = logSubject; _closeAction = closeAction; - _eventLogger = eventLogger; + _eventLoggerProvider = eventLoggerProvider; } public void checkIdleOrOpenTimes(ServerTransaction transaction, long openWarn, long openClose, long idleWarn, long idleClose) @@ -76,7 +77,7 @@ public class TransactionTimeoutHelper { if (isTimedOut(timeSoFar, warnTimeout)) { - _eventLogger.message(_logSubject, warnMessage); + getEventLogger().message(_logSubject, warnMessage); } if(isTimedOut(timeSoFar, closeTimeout)) @@ -100,4 +101,9 @@ public class TransactionTimeoutHelper void doTimeoutAction(String reason); } + public EventLogger getEventLogger() + { + return _eventLoggerProvider.getEventLogger(); + } + } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/EventLoggerProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/EventLoggerProvider.java new file mode 100644 index 0000000000..c628f0dcfa --- /dev/null +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/EventLoggerProvider.java @@ -0,0 +1,26 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.server.logging; + +public interface EventLoggerProvider +{ + public EventLogger getEventLogger(); +} diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java index ab07b3eec6..bb3e635326 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java @@ -24,6 +24,7 @@ import java.net.SocketAddress; import java.util.Collection; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.logging.MessageLogger; import org.apache.qpid.server.configuration.updater.TaskExecutor; @@ -32,7 +33,7 @@ import org.apache.qpid.server.security.SubjectCreator; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; @ManagedObject -public interface Broker<X extends Broker<X>> extends ConfiguredObject<X> +public interface Broker<X extends Broker<X>> extends ConfiguredObject<X>, EventLoggerProvider { String BUILD_VERSION = "buildVersion"; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderFactory.java index 53909fb09d..e98cc2800c 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderFactory.java @@ -73,7 +73,7 @@ public class AccessControlProviderFactory { for (AccessControlFactory factory : _factories) { - AccessControl accessControl = factory.createInstance(attributes, broker.getEventLogger()); + AccessControl accessControl = factory.createInstance(attributes, broker); if (accessControl != null) { return new AccessControlProviderAdapter(id, broker,accessControl, attributes, factory.getAttributeNames()); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/AccessControlFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/AccessControlFactory.java index afea8204a5..3d7c479ba2 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/AccessControlFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/AccessControlFactory.java @@ -22,6 +22,7 @@ import java.util.Collection; import java.util.Map; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.model.AccessControlProvider; import org.apache.qpid.server.security.AccessControl; @@ -29,7 +30,7 @@ public interface AccessControlFactory extends Pluggable { public static final String ATTRIBUTE_TYPE = AccessControlProvider.TYPE; - AccessControl createInstance(Map<String, Object> attributes, final EventLogger eventLogger); + AccessControl createInstance(Map<String, Object> attributes, final EventLoggerProvider eventLogger); /** * Returns the access control provider type diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java index c45b7bb2be..ac0521b34e 100755 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java @@ -144,7 +144,7 @@ public class SecurityManager implements ConfigurationChangeListener for (AccessControlFactory provider : (new QpidServiceLoader<AccessControlFactory>()).instancesOf(AccessControlFactory.class)) { - AccessControl accessControl = provider.createInstance(attributes, _broker.getEventLogger()); + AccessControl accessControl = provider.createInstance(attributes, _broker); accessControl.open(); if(accessControl != null) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java index 52bf2fb216..a06056de8f 100755 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java @@ -32,6 +32,7 @@ import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.connection.IConnectionRegistry; import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.message.MessageDestination; import org.apache.qpid.server.message.MessageSource; import org.apache.qpid.server.plugin.ExchangeType; @@ -43,7 +44,8 @@ import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.txn.DtxRegistry; -public interface VirtualHost extends DurableConfigurationStore.Source, Closeable, StatisticsGatherer +public interface VirtualHost extends DurableConfigurationStore.Source, Closeable, StatisticsGatherer, + EventLoggerProvider { IConnectionRegistry getConnectionRegistry(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/TransactionTimeoutHelperTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/TransactionTimeoutHelperTest.java index 74bd8c2d94..744c609845 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/TransactionTimeoutHelperTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/TransactionTimeoutHelperTest.java @@ -32,6 +32,7 @@ import static org.mockito.Mockito.when; import org.apache.qpid.server.TransactionTimeoutHelper.CloseAction; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.LogMessage; import org.apache.qpid.server.logging.LogSubject; import org.apache.qpid.server.logging.MessageLogger; @@ -155,8 +156,9 @@ public class TransactionTimeoutHelperTest extends QpidTestCase when(_rootLogger.isEnabled()).thenReturn(true); when(_rootLogger.isMessageEnabled(anyString())).thenReturn(true); EventLogger eventLogger = new EventLogger(_rootLogger); - - _transactionTimeoutHelper = new TransactionTimeoutHelper(_logSubject, _closeAction, eventLogger); + EventLoggerProvider eventLoggerProvider = mock(EventLoggerProvider.class); + when(eventLoggerProvider.getEventLogger()).thenReturn(eventLogger); + _transactionTimeoutHelper = new TransactionTimeoutHelper(_logSubject, _closeAction, eventLoggerProvider); _now = System.currentTimeMillis(); } diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/AbstractConfiguration.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/AbstractConfiguration.java index 09ffb71519..e15361acfe 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/AbstractConfiguration.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/AbstractConfiguration.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.security.access.config; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import java.io.File; @@ -28,9 +29,9 @@ public abstract class AbstractConfiguration implements ConfigurationFile { private File _file; private RuleSet _config; - private final EventLogger _eventLogger; + private final EventLoggerProvider _eventLogger; - public AbstractConfiguration(File file, final EventLogger eventLogger) + public AbstractConfiguration(File file, final EventLoggerProvider eventLogger) { _file = file; _eventLogger = eventLogger; diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/PlainConfiguration.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/PlainConfiguration.java index df5b66da84..8a5dae8244 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/PlainConfiguration.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/PlainConfiguration.java @@ -36,6 +36,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.security.access.ObjectType; import org.apache.qpid.server.security.access.Operation; import org.apache.qpid.server.security.access.Permission; @@ -68,7 +69,7 @@ public class PlainConfiguration extends AbstractConfiguration private StreamTokenizer _st; - public PlainConfiguration(File file, final EventLogger eventLogger) + public PlainConfiguration(File file, final EventLoggerProvider eventLogger) { super(file, eventLogger); } diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/RuleSet.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/RuleSet.java index 6e9bc590f4..7bf5626197 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/RuleSet.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/RuleSet.java @@ -39,6 +39,7 @@ import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.messages.AccessControlMessages; import org.apache.qpid.server.security.Result; import org.apache.qpid.server.security.access.ObjectProperties; @@ -52,7 +53,7 @@ import org.apache.qpid.server.security.access.Permission; * The access control rule definitions are loaded from an external configuration file, passed in as the * target to the {@link load(ConfigurationFile)} method. The file specified */ -public class RuleSet +public class RuleSet implements EventLoggerProvider { private static final Logger _logger = Logger.getLogger(RuleSet.class); @@ -70,9 +71,9 @@ public class RuleSet private final Map<Subject, Map<Operation, Map<ObjectType, List<Rule>>>> _cache = new WeakHashMap<Subject, Map<Operation, Map<ObjectType, List<Rule>>>>(); private final Map<String, Boolean> _config = new HashMap<String, Boolean>(); - private final EventLogger _eventLogger; + private final EventLoggerProvider _eventLogger; - public RuleSet(EventLogger eventLogger) + public RuleSet(EventLoggerProvider eventLogger) { _eventLogger = eventLogger; // set some default configuration properties @@ -323,14 +324,14 @@ public class RuleSet switch (permission) { case ALLOW_LOG: - _eventLogger.message(AccessControlMessages.ALLOWED( + getEventLogger().message(AccessControlMessages.ALLOWED( action.getOperation().toString(), action.getObjectType().toString(), action.getProperties().toString())); case ALLOW: return Result.ALLOWED; case DENY_LOG: - _eventLogger.message(AccessControlMessages.DENIED( + getEventLogger().message(AccessControlMessages.DENIED( action.getOperation().toString(), action.getObjectType().toString(), action.getProperties().toString())); @@ -442,6 +443,6 @@ public class RuleSet public EventLogger getEventLogger() { - return _eventLogger; + return _eventLogger.getEventLogger(); } } diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java index b56cd7c077..f6d8b04880 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java @@ -35,6 +35,7 @@ import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.connection.ConnectionPrincipal; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.security.Result; import org.apache.qpid.server.security.AccessControl; import org.apache.qpid.server.security.access.ObjectProperties; @@ -50,9 +51,9 @@ public class DefaultAccessControl implements AccessControl private RuleSet _ruleSet; private File _aclFile; - private final EventLogger _eventLogger; + private final EventLoggerProvider _eventLogger; - public DefaultAccessControl(String fileName, final EventLogger eventLogger) + public DefaultAccessControl(String fileName, final EventLoggerProvider eventLogger) { _eventLogger = eventLogger; if (_logger.isDebugEnabled()) @@ -66,7 +67,7 @@ public class DefaultAccessControl implements AccessControl DefaultAccessControl(RuleSet rs) throws ConfigurationException { _ruleSet = rs; - _eventLogger = rs.getEventLogger(); + _eventLogger = rs; } public void open() diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactory.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactory.java index af3b456083..0d4734df88 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactory.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactory.java @@ -31,6 +31,7 @@ import java.util.Map; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.plugin.AccessControlFactory; import org.apache.qpid.server.security.AccessControl; import org.apache.qpid.server.util.ResourceBundleLoader; @@ -44,7 +45,7 @@ public class DefaultAccessControlFactory implements AccessControlFactory PATH )); - public AccessControl createInstance(Map<String, Object> attributes, final EventLogger eventLogger) + public AccessControl createInstance(Map<String, Object> attributes, final EventLoggerProvider eventLogger) { if(attributes == null || !ACL_FILE_PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE))) { diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/config/PlainConfigurationTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/config/PlainConfigurationTest.java index e457d191c9..1440904c74 100644 --- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/config/PlainConfigurationTest.java +++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/config/PlainConfigurationTest.java @@ -28,6 +28,7 @@ import junit.framework.TestCase; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.security.access.ObjectProperties; import org.apache.qpid.server.security.access.ObjectProperties.Property; import org.apache.qpid.server.security.access.ObjectType; @@ -57,7 +58,7 @@ public class PlainConfigurationTest extends TestCase aclWriter.close(); // Load ruleset - PlainConfiguration configFile = new PlainConfiguration(acl, new EventLogger()); + PlainConfiguration configFile = new PlainConfiguration(acl, mock(EventLoggerProvider.class)); configFile.load(); return configFile; } @@ -67,7 +68,7 @@ public class PlainConfigurationTest extends TestCase try { // Load ruleset - ConfigurationFile configFile = new PlainConfiguration(new File("doesnotexist"), new EventLogger()); + ConfigurationFile configFile = new PlainConfiguration(new File("doesnotexist"), mock(EventLoggerProvider.class)); configFile.load(); fail("fail"); diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactoryTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactoryTest.java index 5ed5b91cb8..c4c36df6d9 100644 --- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactoryTest.java +++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlFactoryTest.java @@ -27,6 +27,7 @@ import java.util.regex.Pattern; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.model.GroupProvider; import org.apache.qpid.server.security.AccessControl; import org.apache.qpid.server.security.access.FileAccessControlProviderConstants; @@ -41,7 +42,7 @@ public class DefaultAccessControlFactoryTest extends QpidTestCase { DefaultAccessControlFactory factory = new DefaultAccessControlFactory(); Map<String, Object> attributes = new HashMap<String, Object>(); - AccessControl acl = factory.createInstance(attributes, new EventLogger()); + AccessControl acl = factory.createInstance(attributes, mock(EventLoggerProvider.class)); assertNull("ACL was created without a configuration file", acl); } @@ -52,7 +53,7 @@ public class DefaultAccessControlFactoryTest extends QpidTestCase Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put(GroupProvider.TYPE, FileAccessControlProviderConstants.ACL_FILE_PROVIDER_TYPE); attributes.put(FileAccessControlProviderConstants.PATH, aclFile.getAbsolutePath()); - AccessControl acl = factory.createInstance(attributes, new EventLogger()); + AccessControl acl = factory.createInstance(attributes, mock(EventLoggerProvider.class)); acl.open(); assertNotNull("ACL was not created from acl file: " + aclFile.getAbsolutePath(), acl); @@ -68,7 +69,7 @@ public class DefaultAccessControlFactoryTest extends QpidTestCase attributes.put(FileAccessControlProviderConstants.PATH, aclFile.getAbsolutePath()); try { - AccessControl control = factory.createInstance(attributes, new EventLogger()); + AccessControl control = factory.createInstance(attributes, mock(EventLoggerProvider.class)); control.open(); fail("It should not be possible to create and initialise ACL with non existing file"); } diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlTest.java index e35f4301ed..74ea7639ff 100644 --- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlTest.java +++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControlTest.java @@ -34,6 +34,7 @@ import junit.framework.TestCase; import org.apache.commons.configuration.ConfigurationException; import org.apache.qpid.server.connection.ConnectionPrincipal; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.UnitTestMessageLogger; import org.apache.qpid.server.protocol.AMQConnectionModel; import org.apache.qpid.server.security.Result; @@ -79,7 +80,9 @@ public class DefaultAccessControlTest extends TestCase private RuleSet createGroupRuleSet() { - final RuleSet rs = new RuleSet(_eventLogger); + final EventLoggerProvider provider = mock(EventLoggerProvider.class); + when(provider.getEventLogger()).thenReturn(_eventLogger); + final RuleSet rs = new RuleSet(provider); // Rule expressed with username rs.grant(0, "user1", Permission.ALLOW, Operation.ACCESS, ObjectType.VIRTUALHOST, ObjectProperties.EMPTY); @@ -176,7 +179,7 @@ public class DefaultAccessControlTest extends TestCase */ public void testAuthoriseAccessMethodWhenAllAccessOperationsAllowedOnAllComponents() throws ConfigurationException { - final RuleSet rs = new RuleSet(_eventLogger); + final RuleSet rs = new RuleSet(mock(EventLoggerProvider.class)); // grant user4 access right on any method in any component rs.grant(1, "user4", Permission.ALLOW, Operation.ACCESS, ObjectType.METHOD, new ObjectProperties(ObjectProperties.STAR)); @@ -202,7 +205,7 @@ public class DefaultAccessControlTest extends TestCase */ public void testAuthoriseAccessMethodWhenAllAccessOperationsAllowedOnSpecifiedComponent() throws ConfigurationException { - final RuleSet rs = new RuleSet(_eventLogger); + final RuleSet rs = new RuleSet(mock(EventLoggerProvider.class)); // grant user5 access right on any methods in "Test" component ObjectProperties ruleProperties = new ObjectProperties(ObjectProperties.STAR); @@ -302,7 +305,7 @@ public class DefaultAccessControlTest extends TestCase */ public void testAuthoriseAccessMethodWhenSpecifiedAccessOperationsAllowedOnSpecifiedComponent() throws ConfigurationException { - final RuleSet rs = new RuleSet(_eventLogger); + final RuleSet rs = new RuleSet(mock(EventLoggerProvider.class)); // grant user6 access right on "getAttribute" method in "Test" component ObjectProperties ruleProperties = new ObjectProperties("getAttribute"); @@ -339,7 +342,7 @@ public class DefaultAccessControlTest extends TestCase */ public void testAuthoriseAccessUpdateMethodWhenAllRightsGrantedOnSpecifiedMethodForAllComponents() throws ConfigurationException { - final RuleSet rs = new RuleSet(_eventLogger); + final RuleSet rs = new RuleSet(mock(EventLoggerProvider.class)); // grant user8 all rights on method queryNames in all component rs.grant(1, "user8", Permission.ALLOW, Operation.ALL, ObjectType.METHOD, new ObjectProperties("queryNames")); @@ -378,7 +381,7 @@ public class DefaultAccessControlTest extends TestCase */ public void testAuthoriseAccessUpdateMethodWhenAllRightsGrantedOnAllMethodsInAllComponents() throws ConfigurationException { - final RuleSet rs = new RuleSet(_eventLogger); + final RuleSet rs = new RuleSet(mock(EventLoggerProvider.class)); // grant user9 all rights on any method in all component rs.grant(1, "user9", Permission.ALLOW, Operation.ALL, ObjectType.METHOD, new ObjectProperties()); @@ -416,7 +419,7 @@ public class DefaultAccessControlTest extends TestCase */ public void testAuthoriseAccessMethodWhenMatchingAccessOperationsAllowedOnSpecifiedComponent() throws ConfigurationException { - final RuleSet rs = new RuleSet(_eventLogger); + final RuleSet rs = new RuleSet(mock(EventLoggerProvider.class)); // grant user9 all rights on "getAttribute*" methods in Test component ObjectProperties ruleProperties = new ObjectProperties(); diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java index 47f7f440fa..caf9b2fb61 100644 --- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java +++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java @@ -26,6 +26,7 @@ import java.security.Principal; import javax.security.auth.Subject; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.security.Result; import org.apache.qpid.server.security.access.ObjectProperties; import org.apache.qpid.server.security.access.ObjectType; @@ -65,7 +66,7 @@ public class RuleSetTest extends QpidTestCase { super.setUp(); - _ruleSet = new RuleSet(new EventLogger()); + _ruleSet = new RuleSet(mock(EventLoggerProvider.class)); } @Override diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java index d2d1fcdf78..a3a80415ac 100644 --- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java +++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java @@ -61,7 +61,8 @@ import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.USER_FORM public class ServerConnection extends Connection implements AMQConnectionModel<ServerConnection, ServerSession>, LogSubject, AuthorizationHolder { - private final EventLogger _eventLogger; + + private final Broker _broker; private Runnable _onOpenTask; private AtomicBoolean _logClosed = new AtomicBoolean(false); @@ -85,7 +86,7 @@ public class ServerConnection extends Connection implements AMQConnectionModel<S { _connectionId = connectionId; _authorizedSubject.getPrincipals().add(new ConnectionPrincipal(this)); - _eventLogger = broker.getEventLogger(); + _broker = broker; } public Object getReference() @@ -101,7 +102,7 @@ public class ServerConnection extends Connection implements AMQConnectionModel<S EventLogger getEventLogger() { - return _virtualHost == null ? _eventLogger : _virtualHost.getEventLogger(); + return _virtualHost == null ? _broker.getEventLogger() : _virtualHost.getEventLogger(); } @Override diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java index 5a17a652ef..c2eacfe6e8 100644 --- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java +++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java @@ -156,7 +156,7 @@ public class ServerSession extends Session { getConnectionModel().closeSession(ServerSession.this, AMQConstant.RESOURCE_ERROR, reason); } - }, getVirtualHost().getEventLogger()); + }, getVirtualHost()); } protected void setState(final State state) diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java index da91be2118..780e7ad199 100644 --- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java +++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java @@ -208,7 +208,7 @@ public class AMQChannel<T extends AMQProtocolSession<T>> throw new ConnectionScopedRuntimeException(e); } } - }, getVirtualHost().getEventLogger()); + }, getVirtualHost()); Subject.doAs(_subject, new PrivilegedAction<Object>() { diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java index 4aececbcd1..2ebcde199b 100644 --- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java +++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java @@ -92,7 +92,6 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi private static final int CHANNEL_CACHE_SIZE = 0xff; private static final int REUSABLE_BYTE_BUFFER_CAPACITY = 65 * 1024; private final Port _port; - private EventLogger _eventLogger; private AMQShortString _contextKey; @@ -178,7 +177,6 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi _broker = broker; _port = port; _transport = transport; - _eventLogger = broker.getEventLogger(); _maxNoOfChannels = (Integer)broker.getAttribute(Broker.CONNECTION_SESSION_COUNT_LIMIT); _receivedLock = new ReentrantLock(); _stateManager = new AMQStateManager(broker, this); @@ -1576,7 +1574,7 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi } else { - return _eventLogger; + return _broker.getEventLogger(); } } } 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 563e49d43f..0ed97ac3a0 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 @@ -137,7 +137,7 @@ public class HttpManagementUtil // Cause the user logon to be logged. session.setAttribute(ATTR_LOGIN_LOGOUT_REPORTER, - new LoginLogoutReporter(subject, getBroker(session.getServletContext()).getEventLogger())); + new LoginLogoutReporter(subject, getBroker(session.getServletContext()))); } public static Subject tryToAuthenticate(HttpServletRequest request, HttpManagementConfiguration managementConfig) 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 b980b83510..4e55463d45 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 @@ -29,6 +29,7 @@ import javax.servlet.http.HttpSessionBindingListener; import org.apache.log4j.Logger; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.messages.ManagementConsoleMessages; import org.apache.qpid.server.security.auth.AuthenticatedPrincipal; @@ -42,14 +43,14 @@ public class LoginLogoutReporter implements HttpSessionBindingListener private static final Logger LOGGER = Logger.getLogger(LoginLogoutReporter.class); private final Subject _subject; private final Principal _principal; - private final EventLogger _eventLogger; + private final EventLoggerProvider _eventLoggerProvider; - public LoginLogoutReporter(Subject subject, EventLogger eventLogger) + public LoginLogoutReporter(Subject subject, EventLoggerProvider eventLoggerProvider) { super(); _subject = subject; _principal = AuthenticatedPrincipal.getAuthenticatedPrincipalFromSubject(_subject); - _eventLogger = eventLogger; + _eventLoggerProvider = eventLoggerProvider; } @Override @@ -76,7 +77,7 @@ public class LoginLogoutReporter implements HttpSessionBindingListener @Override public Void run() { - _eventLogger.message(ManagementConsoleMessages.OPEN(_principal.getName())); + getEventLogger().message(ManagementConsoleMessages.OPEN(_principal.getName())); return null; } }); @@ -94,10 +95,14 @@ public class LoginLogoutReporter implements HttpSessionBindingListener @Override public Void run() { - _eventLogger.message(ManagementConsoleMessages.CLOSE(_principal.getName())); + getEventLogger().message(ManagementConsoleMessages.CLOSE(_principal.getName())); return null; } }); } + public EventLogger getEventLogger() + { + return _eventLoggerProvider.getEventLogger(); + } } 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 58bd42ef5f..45fa3fabd0 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 @@ -29,6 +29,7 @@ import static org.mockito.Mockito.when; import javax.security.auth.Subject; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.LogMessage; import org.apache.qpid.server.logging.MessageLogger; import org.apache.qpid.server.security.auth.AuthenticatedPrincipal; @@ -51,7 +52,9 @@ public class LoginLogoutReporterTest extends TestCase when(_logger.isEnabled()).thenReturn(true); when(_logger.isMessageEnabled(anyString())).thenReturn(true); EventLogger eventLogger = new EventLogger(_logger); - _loginLogoutReport = new LoginLogoutReporter(_subject, eventLogger); + EventLoggerProvider provider = mock(EventLoggerProvider.class); + when(provider.getEventLogger()).thenReturn(eventLogger); + _loginLogoutReport = new LoginLogoutReporter(_subject, provider); } public void testLoginLogged() diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java index 284909ce56..f359cec694 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java @@ -244,7 +244,7 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry _cs.setMBeanServerForwarder(mbsf); // Install a ManagementLogonLogoffReporter so we can report as users logon/logoff - ManagementLogonLogoffReporter jmxManagementUserLogonLogoffReporter = new ManagementLogonLogoffReporter(_broker.getEventLogger(), usernameCachingRmiServer); + ManagementLogonLogoffReporter jmxManagementUserLogonLogoffReporter = new ManagementLogonLogoffReporter(_broker, usernameCachingRmiServer); _cs.addNotificationListener(jmxManagementUserLogonLogoffReporter, jmxManagementUserLogonLogoffReporter, null); // Install the usernameCachingRmiServer as a listener so it may cleanup as clients disconnect diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java index c1792f0227..215b9c77c4 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporter.java @@ -31,6 +31,7 @@ import javax.security.auth.Subject; import org.apache.log4j.Logger; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; 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; @@ -42,12 +43,12 @@ import java.security.PrivilegedAction; public class ManagementLogonLogoffReporter implements NotificationListener, NotificationFilter { private static final Logger LOGGER = Logger.getLogger(ManagementLogonLogoffReporter.class); - private final EventLogger _eventLogger; + private final EventLoggerProvider _eventLoggerProvider; private final UsernameAccessor _usernameAccessor; - public ManagementLogonLogoffReporter(EventLogger eventLogger, UsernameAccessor usernameAccessor) + public ManagementLogonLogoffReporter(EventLoggerProvider eventLoggerProvider, UsernameAccessor usernameAccessor) { - _eventLogger = eventLogger; + _eventLoggerProvider = eventLoggerProvider; _usernameAccessor = usernameAccessor; } @@ -109,12 +110,12 @@ public class ManagementLogonLogoffReporter implements NotificationListener, Not { if (JMXConnectionNotification.OPENED.equals(type)) { - _eventLogger.message(ManagementConsoleMessages.OPEN(username)); + getEventLogger().message(ManagementConsoleMessages.OPEN(username)); } else if (JMXConnectionNotification.CLOSED.equals(type) || JMXConnectionNotification.FAILED.equals(type)) { - _eventLogger.message(ManagementConsoleMessages.CLOSE(username)); + getEventLogger().message(ManagementConsoleMessages.CLOSE(username)); } return null; } @@ -133,4 +134,8 @@ public class ManagementLogonLogoffReporter implements NotificationListener, Not return CLOSED.equals(type) || FAILED.equals(type) || OPENED.equals(type); } + public EventLogger getEventLogger() + { + return _eventLoggerProvider.getEventLogger(); + } } diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java index be5fe1eeca..67bee1e268 100644 --- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java +++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogonLogoffReporterTest.java @@ -34,6 +34,7 @@ import javax.management.remote.JMXConnectionNotification; import javax.security.auth.Subject; import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.logging.LogMessage; import org.apache.qpid.server.logging.MessageLogger; @@ -61,7 +62,9 @@ public class ManagementLogonLogoffReporterTest extends TestCase // Enable messaging so we can valid the generated strings when(_messageLogger.isMessageEnabled(anyString())).thenReturn(true); EventLogger eventLogger = new EventLogger(_messageLogger); - _reporter = new ManagementLogonLogoffReporter(eventLogger, _usernameAccessor); + EventLoggerProvider provider = mock(EventLoggerProvider.class); + when(provider.getEventLogger()).thenReturn(eventLogger); + _reporter = new ManagementLogonLogoffReporter(provider, _usernameAccessor); } public void testOpenedNotification() diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java index 824a84eda8..25dd5fd2f8 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java @@ -69,7 +69,7 @@ public class VirtualHostLoggingTest extends AbstractTestLogging { List<String> vhosts = Arrays.asList("test"); - assertEquals("Each vhost did not create a store.", 2*vhosts.size(), results.size()); + assertEquals("Each vhost did not create a store.", vhosts.size(), results.size()); for (int index = 0; index < results.size(); index++) { |