Author: rgodfrey
Date: Mon Nov 21 09:26:03 2016
New Revision: 1770632

URL: http://svn.apache.org/viewvc?rev=1770632&view=rev
Log:
QPID-7533 : Initial query implementation, add base implementation of 
logOperation to save each base class having to re-implement

Modified:
    
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupMemberImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostNodeImpl.java
    
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractLogger.java
    
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractNameAndLevelLogInclusionRule.java
    
qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/management/amqp/AmqpManagementTest.java

Modified: 
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeImpl.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeImpl.java
 (original)
+++ 
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeImpl.java
 Mon Nov 21 09:26:03 2016
@@ -230,12 +230,6 @@ public class BDBHARemoteReplicationNodeI
         }
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        getEventLogger().message(new OperationLogMessage(this, operation));
-    }
-
     void setRole(NodeRole role)
     {
         _lastKnownRole = role;

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
 Mon Nov 21 09:26:03 2016
@@ -75,6 +75,9 @@ import org.slf4j.LoggerFactory;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.configuration.updater.Task;
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.logging.EventLogger;
+import org.apache.qpid.server.logging.EventLoggerProvider;
+import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.preferences.UserPreferences;
 import org.apache.qpid.server.security.AccessControl;
 import org.apache.qpid.server.security.Result;
@@ -3320,7 +3323,44 @@ public abstract class AbstractConfigured
         _userPreferences = userPreferences;
     }
 
-    protected abstract void logOperation(String operation);
+    protected EventLogger getEventLogger()
+    {
+        for(ConfiguredObject<?> parent : _parents.values())
+        {
+            if(parent instanceof EventLoggerProvider)
+            {
+                return ((EventLoggerProvider)parent).getEventLogger();
+            }
+            else if(parent instanceof AbstractConfiguredObject)
+            {
+                final EventLogger eventLogger = ((AbstractConfiguredObject<?>) 
parent).getEventLogger();
+                if(eventLogger != null)
+                {
+                    return eventLogger;
+                }
+            }
+        }
+        return null;
+    }
+
+    protected void logOperation(String operation)
+    {
+        EventLogger eventLogger = getEventLogger();
+        if(eventLogger != null)
+        {
+            eventLogger.message(new OperationLogMessage(this, operation));
+        }
+        else
+        {
+            LOGGER.info(getCategoryClass().getSimpleName()
+                        + "("
+                        + getName()
+                        + ") : Operation "
+                        + operation
+                        + " invoked by user "
+                        + AuthenticatedPrincipal.getCurrentUser().getName());
+        }
+    }
 
     
//=========================================================================================
 

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
 Mon Nov 21 09:26:03 2016
@@ -21,12 +21,16 @@
 package org.apache.qpid.server.model;
 
 import org.apache.qpid.server.logging.EventLogger;
+import org.apache.qpid.server.logging.EventLoggerProvider;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.preferences.PreferenceStoreAttributes;
 import org.apache.qpid.server.store.preferences.PreferencesRoot;
 
 @ManagedObject (creatable = false)
-public interface SystemConfig<X extends SystemConfig<X>> extends 
ConfiguredObject<X>, ModelRoot, PreferencesRoot
+public interface SystemConfig<X extends SystemConfig<X>> extends 
ConfiguredObject<X>,
+                                                                 ModelRoot,
+                                                                 
PreferencesRoot,
+                                                                 
EventLoggerProvider
 {
 
     String MANAGEMENT_MODE = "managementMode";

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
 Mon Nov 21 09:26:03 2016
@@ -24,7 +24,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
@@ -62,10 +61,4 @@ public abstract class AbstractPluginAdap
         return _broker;
     }
 
-
-    @Override
-    protected void logOperation(final String operation)
-    {
-        _broker.getEventLogger().message(new OperationLogMessage(this, 
operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
 Mon Nov 21 09:26:03 2016
@@ -37,7 +37,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Container;
@@ -224,12 +223,6 @@ public class FileBasedGroupProviderImpl
                         + childClass);
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        getAncestor(Container.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-    }
-
     private Set<Principal> getGroupPrincipals()
     {
 
@@ -390,12 +383,6 @@ public class FileBasedGroupProviderImpl
                             + childClass);
         }
 
-        @Override
-        protected void logOperation(final String operation)
-        {
-            getAncestor(Container.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-        }
-
         @StateTransition( currentState = State.ACTIVE, desiredState = 
State.DELETED )
         private ListenableFuture<Void> doDelete()
         {
@@ -431,12 +418,6 @@ public class FileBasedGroupProviderImpl
                 return Collections.emptySet();
             }
 
-            @Override
-            protected void logOperation(final String operation)
-            {
-                getAncestor(Container.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-            }
-
             @StateTransition(currentState = State.UNINITIALIZED, desiredState 
= State.ACTIVE)
             private ListenableFuture<Void> activate()
             {

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
 Mon Nov 21 09:26:03 2016
@@ -46,7 +46,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Container;
@@ -464,12 +463,6 @@ public abstract class PrincipalDatabaseA
             return super.changeAttribute(name, desired);
         }
 
-        @Override
-        protected void logOperation(final String operation)
-        {
-            _broker.getEventLogger().message(new OperationLogMessage(this, 
operation));
-        }
-
         @StateTransition(currentState = {State.UNINITIALIZED,State.ERRORED}, 
desiredState = State.ACTIVE)
         private ListenableFuture<Void> activate()
         {

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupImpl.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupImpl.java
 Mon Nov 21 09:26:03 2016
@@ -25,10 +25,8 @@ import java.util.Map;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.Container;
 import org.apache.qpid.server.model.Group;
 import org.apache.qpid.server.model.GroupMember;
 import org.apache.qpid.server.model.GroupProvider;
@@ -80,10 +78,4 @@ public class GroupImpl extends AbstractC
         return Futures.immediateFuture(null);
     }
 
-
-    @Override
-    protected void logOperation(final String operation)
-    {
-        getAncestor(Container.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupMemberImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupMemberImpl.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupMemberImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupMemberImpl.java
 Mon Nov 21 09:26:03 2016
@@ -25,9 +25,7 @@ import java.util.Map;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
-import org.apache.qpid.server.model.Container;
 import org.apache.qpid.server.model.Group;
 import org.apache.qpid.server.model.GroupMember;
 import org.apache.qpid.server.model.ManagedObject;
@@ -61,9 +59,4 @@ public class GroupMemberImpl extends Abs
         return Futures.immediateFuture(null);
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        getAncestor(Container.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java
 Mon Nov 21 09:26:03 2016
@@ -29,7 +29,6 @@ import java.util.Set;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Container;
@@ -107,9 +106,4 @@ public class GroupProviderImpl extends A
         return Futures.immediateFuture(null);
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        _container.getEventLogger().message(new OperationLogMessage(this, 
operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java
 Mon Nov 21 09:26:03 2016
@@ -48,7 +48,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Container;
@@ -309,9 +308,4 @@ public class CloudFoundryDashboardManage
         return _tlsCipherSuiteBlackList;
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        _container.getEventLogger().message(new OperationLogMessage(this, 
operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/AbstractVirtualHostAlias.java
 Mon Nov 21 09:26:03 2016
@@ -25,9 +25,7 @@ import java.util.Map;
 
 import com.google.common.util.concurrent.ListenableFuture;
 
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
-import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.State;
@@ -73,9 +71,4 @@ abstract class AbstractVirtualHostAlias<
         });
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        getPort().getParent(Broker.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
 Mon Nov 21 09:26:03 2016
@@ -49,7 +49,6 @@ import org.apache.qpid.exchange.Exchange
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.logging.EventLogger;
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
 import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
@@ -645,10 +644,4 @@ public abstract class AbstractVirtualHos
         return Collections.unmodifiableCollection(supportedTypes);
     }
 
-
-    @Override
-    protected void logOperation(final String operation)
-    {
-        _broker.getEventLogger().message(new OperationLogMessage(this, 
operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostNodeImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostNodeImpl.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostNodeImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostNodeImpl.java
 Mon Nov 21 09:26:03 2016
@@ -34,7 +34,6 @@ import com.google.common.util.concurrent
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
@@ -279,13 +278,6 @@ public class RedirectingVirtualHostNodeI
         }
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        _broker.getEventLogger().message(new 
OperationLogMessage(this,operation));
-    }
-
-
     @SuppressWarnings({ "rawtypes", "unchecked" })
     @Override
     protected <C extends ConfiguredObject> ListenableFuture<C> 
addChildAsync(Class<C> childClass, Map<String, Object> attributes,

Modified: 
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractLogger.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractLogger.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractLogger.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractLogger.java
 Mon Nov 21 09:26:03 2016
@@ -36,13 +36,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.logging.LogInclusionRule;
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfigurationChangeListener;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.BrokerLogInclusionRule;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObjectTypeRegistry;
-import org.apache.qpid.server.model.Container;
 import org.apache.qpid.server.model.ManagedObject;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.StateTransition;
@@ -215,9 +213,4 @@ public abstract class AbstractLogger<X e
         return Collections.unmodifiableCollection(supportedTypes);
     }
 
-    @Override
-    protected void logOperation(final String operation)
-    {
-        getAncestor(Container.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractNameAndLevelLogInclusionRule.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractNameAndLevelLogInclusionRule.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractNameAndLevelLogInclusionRule.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractNameAndLevelLogInclusionRule.java
 Mon Nov 21 09:26:03 2016
@@ -29,10 +29,8 @@ import com.google.common.util.concurrent
 import com.google.common.util.concurrent.ListenableFuture;
 
 import org.apache.qpid.server.logging.LogLevel;
-import org.apache.qpid.server.logging.OperationLogMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.Container;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.StateTransition;
@@ -108,10 +106,4 @@ public abstract class AbstractNameAndLev
         return Futures.immediateFuture(null);
     }
 
-
-    @Override
-    protected void logOperation(final String operation)
-    {
-        getAncestor(Container.class).getEventLogger().message(new 
OperationLogMessage(this, operation));
-    }
 }

Modified: 
qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
 Mon Nov 21 09:26:03 2016
@@ -33,6 +33,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -121,6 +122,28 @@ class ManagementNode implements MessageS
     public static final int STATUS_CODE_CONFLICT = 409;
     public static final int STATUS_CODE_INTERNAL_ERROR = 500;
     public static final int STATUS_CODE_NOT_IMPLEMENTED= 501;
+    private static final Comparator<? super ConfiguredObject<?>> 
OBJECT_COMPARATOR =
+            new Comparator<ConfiguredObject<?>>()
+            {
+                @Override
+                public int compare(final ConfiguredObject<?> o1, final 
ConfiguredObject<?> o2)
+                {
+                    if(o1 == o2)
+                    {
+                        return 0;
+                    }
+                    int result = 
o1.getCategoryClass().getSimpleName().compareTo(o2.getCategoryClass().getSimpleName());
+                    if(result == 0)
+                    {
+                        result = o1.getName().compareTo(o2.getName());
+                    }
+                    if(result == 0)
+                    {
+                        result = o1.getId().compareTo(o2.getId());
+                    }
+                    return result;
+                }
+            };
 
 
     private final NamedAddressSpace _addressSpace;
@@ -1017,7 +1040,186 @@ class ManagementNode implements MessageS
         {
             attributeNames = generateAttributeNames(entityType);
         }
-        return null;
+
+        List<ConfiguredObject<?>> objects = getObjects(entityType);
+        Collections.sort(objects, OBJECT_COMPARATOR);
+        if(headerMap.containsKey(OFFSET_HEADER))
+        {
+            int offset;
+            if(headerMap.get(OFFSET_HEADER) instanceof Number)
+            {
+                offset = ((Number) headerMap.get(OFFSET_HEADER)).intValue();
+            }
+            else
+            {
+                offset = 
Integer.parseInt(headerMap.get(OFFSET_HEADER).toString());
+            }
+            if(offset >= 0)
+            {
+                if(offset < objects.size())
+                {
+                    objects = objects.subList(offset, objects.size());
+                }
+                else
+                {
+                    objects = Collections.emptyList();
+                }
+            }
+            else if(objects.size() + offset > 0)
+            {
+                objects = objects.subList(objects.size()+offset, 
objects.size());
+            }
+        }
+
+        if(headerMap.containsKey(COUNT_HEADER))
+        {
+            int count;
+            if(headerMap.get(COUNT_HEADER) instanceof Number)
+            {
+                count = ((Number) headerMap.get(COUNT_HEADER)).intValue();
+            }
+            else
+            {
+                count = 
Integer.parseInt(headerMap.get(OFFSET_HEADER).toString());
+            }
+            if(count >= 0)
+            {
+                if(count < objects.size())
+                {
+                    objects = objects.subList(0, count);
+                }
+                else
+                {
+                    objects = Collections.emptyList();
+                }
+            }
+            else if(objects.size() + count > 0)
+            {
+                objects = objects.subList(0, objects.size()+count);
+            }
+        }
+        List<List<Object>> resultList = new ArrayList<>(objects.size());
+
+        for(ConfiguredObject<?> object : objects)
+        {
+            List<Object> attributes = new ArrayList<>(attributeNames.size());
+            Map<?,?> convertedObject = 
_managementOutputConverter.convertToOutput(object, true);
+            for(String attributeName : attributeNames)
+            {
+                attributes.add(convertedObject.get(attributeName));
+            }
+            resultList.add(attributes);
+        }
+        Map<Object, Object> result = new LinkedHashMap<>();
+        result.put(ATTRIBUTE_NAMES, attributeNames);
+        result.put(RESULTS, resultList);
+        return result;
+    }
+
+    private Collection<ConfiguredObject<?>> 
getChildrenOfType(ConfiguredObject<?> object, Class<? extends ConfiguredObject> 
type)
+    {
+        Set<ConfiguredObject<?>> children = new HashSet<>();
+        Class<? extends ConfiguredObject> categoryClass = 
ConfiguredObjectTypeRegistry.getCategory(type);
+        for(Class<? extends ConfiguredObject> childClass : 
_model.getChildTypes(object.getCategoryClass()))
+        {
+            if(childClass == categoryClass)
+            {
+                for (ConfiguredObject<?> child : 
object.getChildren(childClass))
+                {
+                    if(categoryClass == type || child.getTypeClass() == type)
+                    {
+                        children.add(child);
+                    }
+                }
+            }
+            else
+            {
+                
if(_model.getAncestorCategories(categoryClass).contains(childClass))
+                {
+                    for(ConfiguredObject<?> child : 
object.getChildren(childClass))
+                    {
+                        children.addAll(getChildrenOfType(child, type));
+                    }
+                }
+            }
+        }
+        return children;
+    }
+
+    private List<ConfiguredObject<?>> getObjects(final String entityType)
+    {
+        Set<ConfiguredObject<?>> foundObjects;
+
+        if(entityType == null)
+        {
+            foundObjects = findAllChildren();
+
+        }
+        else
+        {
+            final Class<? extends ConfiguredObject> type = 
_managedTypes.get(entityType);
+            if(type != null)
+            {
+                foundObjects = new HashSet<>();
+                Collection<Class<? extends ConfiguredObject>> 
ancestorCategories =
+                        
_model.getAncestorCategories(ConfiguredObjectTypeRegistry.getCategory(type));
+                
if(ancestorCategories.contains(_managedObject.getCategoryClass()))
+                {
+                    foundObjects.addAll(getChildrenOfType(_managedObject, 
type));
+                }
+
+                for(Map.Entry<Class<? extends ConfiguredObject>, 
ConfiguredObjectOperation<?>> entry : _associatedChildrenOperations.entrySet())
+                {
+                    if(ancestorCategories.contains(entry.getKey()))
+                    {
+                        ConfiguredObjectOperation op = entry.getValue();
+                        for(ConfiguredObject<?> parent : 
(Collection<ConfiguredObject<?>>) op.perform(_managedObject, 
Collections.<String,Object>emptyMap()))
+                        {
+                            foundObjects.addAll(getChildrenOfType(parent, 
type));
+                        }
+                    }
+                }
+            }
+            else
+            {
+                throw new IllegalArgumentException("Unknown entity type: 
'"+entityType+"'");
+            }
+        }
+        // TODO - get the objects
+
+        return new ArrayList<>(foundObjects);
+    }
+
+    private Set<ConfiguredObject<?>> findAllChildren()
+    {
+        final Set<ConfiguredObject<?>> foundObjects;
+        foundObjects = new HashSet<>();
+        Set<ConfiguredObject<?>> parents = new HashSet<>();
+        Set<ConfiguredObject<?>> children;
+
+        parents.add(_managedObject);
+        for(ConfiguredObjectOperation op : 
_associatedChildrenOperations.values())
+        {
+            parents.addAll(
+                    (Collection<ConfiguredObject<?>>) 
op.perform(_managedObject, Collections.<String,Object>emptyMap()));
+        }
+        foundObjects.addAll(parents);
+        do
+        {
+            children = new HashSet<>();
+            for(ConfiguredObject<?> parent : parents)
+            {
+                for(Class<? extends ConfiguredObject> childClass : 
_model.getChildTypes(parent.getCategoryClass()))
+                {
+                    children.addAll((Collection<? extends 
ConfiguredObject<?>>) parent.getChildren(childClass));
+                }
+            }
+            parents = children;
+
+
+        }
+        while(foundObjects.addAll(parents));
+        return foundObjects;
     }
 
     private List<String> generateAttributeNames(String entityType)

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/management/amqp/AmqpManagementTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/management/amqp/AmqpManagementTest.java?rev=1770632&r1=1770631&r2=1770632&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/management/amqp/AmqpManagementTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/management/amqp/AmqpManagementTest.java
 Mon Nov 21 09:26:03 2016
@@ -22,6 +22,7 @@ package org.apache.qpid.systest.manageme
 
 import static 
org.apache.qpid.server.model.Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 
@@ -103,6 +104,33 @@ public class AmqpManagementTest extends
                       ((MapMessage) 
responseMessage).getObject("org.apache.qpid.Port"));
     }
 
+    // test get types on $management
+    public void testQueryBrokerManagement() throws Exception
+    {
+        setupBrokerManagementConnection();
+
+        MapMessage message = _session.createMapMessage();
+
+        message.setStringProperty("identity", "self");
+        message.setStringProperty("type", "org.amqp.management");
+        message.setStringProperty("operation", "QUERY");
+        message.setObject("attributeNames", new ArrayList<>());
+        message.setJMSReplyTo(_replyAddress);
+
+        _producer.send(message);
+
+        Message responseMessage = _consumer.receive(getReceiveTimeout());
+        assertNotNull("A response message was not sent", responseMessage);
+        assertEquals("The correlation id does not match the sent message's 
messageId", message.getJMSMessageID(), responseMessage.getJMSCorrelationID());
+        assertTrue("The response message does not have a status code",
+                   
Collections.list(responseMessage.getPropertyNames()).contains("statusCode"));
+        assertEquals("The response code did not indicate success", 200, 
responseMessage.getIntProperty("statusCode"));
+        assertTrue("The response was not a MapMessage", responseMessage 
instanceof MapMessage);
+
+
+    }
+
+
     // test get types on a virtual host
     public void testGetTypesOnVhostManagement() throws Exception
     {
@@ -636,4 +664,6 @@ public class AmqpManagementTest extends
         assertEquals("The response code did not indicate success", 200, 
responseMessage.getIntProperty("statusCode"));
     }
 
+
+
 }




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to