You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2016/09/28 15:25:39 UTC

svn commit: r1762682 - in /qpid/java/trunk: bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/org/apache/qpid/server/security/ broker-core/src/test/java/org...

Author: lquack
Date: Wed Sep 28 15:25:38 2016
New Revision: 1762682

URL: http://svn.apache.org/viewvc?rev=1762682&view=rev
Log:
QPID-7438: [Java Broker] Add changesConfiguredObjectState arguments to ManagedOperation annotations

Modified:
    qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBEnvironmentContainer.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStore.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStore.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStoreImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStore.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java
    qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AclFileAccessControlProvider.java
    qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedAccessControlProvider.java
    qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedVirtualHostAccessControlProvider.java
    qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLogger.java
    qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerMemoryLogger.java
    qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/VirtualHostFileLogger.java

Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBEnvironmentContainer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBEnvironmentContainer.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBEnvironmentContainer.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBEnvironmentContainer.java Wed Sep 28 15:25:38 2016
@@ -29,21 +29,27 @@ public interface BDBEnvironmentContainer
 {
     void setBDBCacheSize(long cacheSize);
 
-    @ManagedOperation(description = "Update BDB mutable configuration from settings in context variables")
+    @ManagedOperation(description = "Update BDB mutable configuration from settings in context variables",
+            changesConfiguredObjectState = false)
     void updateMutableConfig();
 
-    @ManagedOperation(description = "Instruct BDB to attempt to clean up its log files")
+    @ManagedOperation(description = "Instruct BDB to attempt to clean up its log files",
+            changesConfiguredObjectState = false)
     int cleanLog();
 
-    @ManagedOperation(description = "Instruct BDB to perform a checkpoint operation")
+    @ManagedOperation(description = "Instruct BDB to perform a checkpoint operation",
+            changesConfiguredObjectState = false)
     void checkpoint(@Param(name = "force", defaultValue = "false") boolean force);
 
-    @ManagedOperation(description = "Get the BDB environment statistics", nonModifying = true)
+    @ManagedOperation(description = "Get the BDB environment statistics", nonModifying = true,
+            changesConfiguredObjectState = false)
     Map<String,Map<String,Object>> environmentStatistics(@Param(name="reset", defaultValue = "false", description = "If true, reset the statistics") boolean reset);
 
-    @ManagedOperation(description = "Get the BDB transaction statistics", nonModifying = true)
+    @ManagedOperation(description = "Get the BDB transaction statistics", nonModifying = true,
+            changesConfiguredObjectState = false)
     Map<String, Object> transactionStatistics(@Param(name="reset", defaultValue = "false", description = "If true, reset the statistics")boolean reset);
 
-    @ManagedOperation(description = "Get the BDB database statistics", nonModifying = true)
+    @ManagedOperation(description = "Get the BDB database statistics", nonModifying = true,
+            changesConfiguredObjectState = false)
     Map<String, Object> databaseStatistics(@Param(name="database", description = "database table for which to retrieve statistics")String database, @Param(name="reset", defaultValue = "false", description = "If true, reset the statistics") boolean reset);
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java Wed Sep 28 15:25:38 2016
@@ -189,10 +189,15 @@ public interface Broker<X extends Broker
     @ManagedStatistic(statisticType = StatisticType.CUMULATIVE, units = StatisticUnit.MESSAGES, label = "Outbound")
     long getMessagesOut();
 
-    @ManagedOperation(nonModifying = true, description = "Initiates an orderly shutdown of the Broker.")
+    @ManagedOperation(nonModifying = true,
+            description = "Initiates an orderly shutdown of the Broker.",
+            changesConfiguredObjectState = false)
     void initiateShutdown();
 
-    @ManagedOperation(nonModifying = true, description = "Extract configuration", paramRequiringSecure = "includeSecureAttributes")
+    @ManagedOperation(nonModifying = true,
+            description = "Extract configuration",
+            paramRequiringSecure = "includeSecureAttributes",
+            changesConfiguredObjectState = false)
     Map<String,Object> extractConfig(@Param(name="includeSecureAttributes",
                                             description = "include attributes that may contain passwords or other"
                                                           + " confidential information",
@@ -240,29 +245,38 @@ public interface Broker<X extends Broker
                       description = "Number of objects pending finalization")
     int getNumberOfObjectsPendingFinalization();
 
-    @ManagedOperation(nonModifying = true, description = "Initiates garbage collection")
+    @ManagedOperation(nonModifying = true,
+            description = "Initiates garbage collection",
+            changesConfiguredObjectState = false)
     void performGC();
 
     @ManagedOperation(nonModifying = true,
-                      description = "Collects thread stack traces and dead locks. Dumps stack traces into logs if requested")
+                      description = "Collects thread stack traces and dead locks. Dumps stack traces into logs if requested",
+            changesConfiguredObjectState = false)
     Content getThreadStackTraces(@Param(name="appendToLog",
                                         defaultValue = "false",
                                         description = "If true, appends stack traces into logs")
                                  boolean appendToLog);
 
     @ManagedOperation(nonModifying = true,
-            description = "Collects thread stack traces for the threads with names containing matching characters for given regular expression")
+            description = "Collects thread stack traces for the threads with names containing matching characters for given regular expression",
+            changesConfiguredObjectState = false)
     Content findThreadStackTraces(@Param(name="threadNameFindExpression",
                                         description = "Regular expression to find threads with names containing matching characters")
                                  String threadNameFindExpression);
 
-    @ManagedOperation(nonModifying = true, description = "Returns the principal of the currently authenticated user")
+    @ManagedOperation(nonModifying = true,
+            description = "Returns the principal of the currently authenticated user",
+            changesConfiguredObjectState = false)
     Principal getUser();
 
-    @ManagedOperation(nonModifying = true, description = "Returns the groups to which the currently authenticated user belongs")
+    @ManagedOperation(nonModifying = true,
+            description = "Returns the groups to which the currently authenticated user belongs",
+            changesConfiguredObjectState = false)
     Set<Principal> getGroups();
 
-    @ManagedOperation(description = "Removes a user and all associated preferences from the brokers configuration")
+    @ManagedOperation(description = "Removes a user and all associated preferences from the brokers configuration",
+            changesConfiguredObjectState = true)
     void purgeUser(@Param(name="origin", description="The AuthenticationProvider the username is associated with")AuthenticationProvider<?> origin,
                    @Param(name="username", description="The unqualified username that should be purged from the broker")String username);
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java Wed Sep 28 15:25:38 2016
@@ -54,13 +54,11 @@ import org.apache.qpid.configuration.Com
 import org.apache.qpid.server.BrokerOptions;
 import org.apache.qpid.server.BrokerPrincipal;
 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.configuration.updater.TaskExecutorImpl;
 import org.apache.qpid.server.logging.EventLogger;
 import org.apache.qpid.server.logging.messages.BrokerMessages;
 import org.apache.qpid.server.logging.messages.VirtualHostMessages;
-import org.apache.qpid.server.model.preferences.GenericPrincipal;
 import org.apache.qpid.server.model.preferences.Preference;
 import org.apache.qpid.server.model.preferences.UserPreferences;
 import org.apache.qpid.server.model.preferences.UserPreferencesImpl;
@@ -1012,33 +1010,7 @@ public class BrokerImpl extends Abstract
     @Override
     public void purgeUser(final AuthenticationProvider<?> origin, final String username)
     {
-        doSync(doOnConfigThread(new Task<ListenableFuture<Void>, Exception>()
-        {
-            @Override
-            public ListenableFuture<Void> execute() throws Exception
-            {
-                doPurgeUser(origin, username);
-                return Futures.immediateFuture(null);
-            }
-
-            @Override
-            public String getObject()
-            {
-                return BrokerImpl.this.toString();
-            }
-
-            @Override
-            public String getAction()
-            {
-                return "purgeUser";
-            }
-
-            @Override
-            public String getArguments()
-            {
-                return String.format("%s@%s('%s')", username, origin.getType(), origin.getName());
-            }
-        }));
+        doPurgeUser(origin, username);
     }
 
     private void doPurgeUser(final AuthenticationProvider<?> origin, final String username)

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java Wed Sep 28 15:25:38 2016
@@ -33,5 +33,5 @@ public @interface ManagedOperation
     boolean nonModifying() default false;
     boolean secure() default false;
     String paramRequiringSecure() default "";
-    boolean changesConfiguredObjectState() default true;
+    boolean changesConfiguredObjectState();
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java Wed Sep 28 15:25:38 2016
@@ -281,30 +281,30 @@ public interface Queue<X extends Queue<X
     @ManagedStatistic(statisticType = StatisticType.POINT_IN_TIME, units = StatisticUnit.ABSOLUTE_TIME, label = "Oldest Message")
     long getOldestMessageAge();
 
-    @ManagedOperation
+    @ManagedOperation(description = "move messages from this queue to another", changesConfiguredObjectState = false)
     List<Long> moveMessages(@Param(name = "destination", description = "The queue to which the messages should be moved") Queue<?> destination,
                             @Param(name = "messageIds", description = "If provided, only messages in the queue whose (internal) message-id is supplied will be considered for moving") List<Long> messageIds,
                             @Param(name = "selector", description = "A (JMS) selector - if provided, only messages which match the selector will be considered for moving") String selector,
                             @Param(name = "limit", description = "Maximum number of messages to move", defaultValue = "-1") int limit);
 
 
-    @ManagedOperation
+    @ManagedOperation(description = "copies messages from this queue to another", changesConfiguredObjectState = false)
     List<Long> copyMessages(@Param(name = "destination", description = "The queue to which the messages should be copied") Queue<?> destination,
                             @Param(name = "messageIds", description = "If provided, only messages in the queue whose (internal) message-id is supplied will be considered for copying") List<Long> messageIds,
                             @Param(name = "selector", description = "A (JMS) selector - if provided, only messages which match the selector will be considered for copying")  String selector,
                             @Param(name = "limit", description = "Maximum number of messages to copy", defaultValue = "-1") int limit);
 
 
-    @ManagedOperation
+    @ManagedOperation(description = "removes messages from this queue", changesConfiguredObjectState = false)
     List<Long> deleteMessages(@Param(name = "messageIds", description = "If provided, only messages in the queue whose (internal) message-id is supplied will be considered for deletion") List<Long> messageIds,
                               @Param(name = "selector", description = "A (JMS) selector - if provided, only messages which match the selector will be considered for deletion") String selector,
                               @Param(name = "limit", description = "Maximum number of messages to delete", defaultValue = "-1") int limit);
 
 
-    @ManagedOperation
+    @ManagedOperation(description = "removes all messages from this queue", changesConfiguredObjectState = false)
     long clearQueue();
 
-    @ManagedOperation(nonModifying = true, secure = true)
+    @ManagedOperation(nonModifying = true, secure = true, changesConfiguredObjectState = false)
     Content getMessageContent(@Param(name = "messageId") long messageId,
                               @Param(name = "limit", defaultValue = "-1",
                                       description = "Number of bytes to return") long limit,
@@ -317,12 +317,18 @@ public interface Queue<X extends Queue<X
                                                     + "(should it be compressed) before applying any limit. If"
                                                     + "decompression fails the operation will fail.") boolean decompressBeforeLimiting);
 
-    @ManagedOperation(nonModifying = true, paramRequiringSecure = "includeHeaders")
+    @ManagedOperation(description = "get information about a range of messages",
+            nonModifying = true,
+            paramRequiringSecure = "includeHeaders",
+            changesConfiguredObjectState = false)
     List<MessageInfo> getMessageInfo(@Param(name = "first", defaultValue = "-1") int first,
                                      @Param(name = "last",  defaultValue = "-1") int last,
                                      @Param(name = "includeHeaders", defaultValue = "false") boolean includeHeaders);
 
-    @ManagedOperation(nonModifying = true, paramRequiringSecure = "includeHeaders")
+    @ManagedOperation(description = "get information about the message with the given Id",
+            nonModifying = true,
+            paramRequiringSecure = "includeHeaders",
+            changesConfiguredObjectState = false)
     MessageInfo getMessageInfoById(@Param(name = "messageId") long messageId,
                                    @Param(name = "includeHeaders", defaultValue = "true") boolean includeHeaders);
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Wed Sep 28 15:25:38 2016
@@ -202,28 +202,38 @@ public interface VirtualHost<X extends V
 
     Broker<?> getBroker();
 
+    // LQ TODO: I think this is not being processed correctly because it is not annotated on the base. At least is does not show up in the generated overrides
     @Override
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Collection<? extends Connection<?>> getConnections();
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Connection<?> getConnection(@Param(name="name") String name);
 
     @ManagedOperation(secure = true,
                       description = "Publishes a message to a specified address. "
                                     + "Returns the number of queues onto which it has been placed, "
-                                    + " or zero, if the address routes to no queues.")
+                                    + " or zero, if the address routes to no queues.",
+            changesConfiguredObjectState = false)
     int publishMessage(@Param(name = "message")ManageableMessage message);
 
-    @ManagedOperation(nonModifying = true, description = "Extract configuration", paramRequiringSecure = "includeSecureAttributes")
+    @ManagedOperation(nonModifying = true,
+            description = "Extract configuration",
+            paramRequiringSecure = "includeSecureAttributes",
+            changesConfiguredObjectState = false)
     Map<String,Object> exportConfig(@Param(name="includeSecureAttributes",
                                             description = "include attributes that may contain passwords or other "
                                                           + "confidential information",
                                             defaultValue = "false") boolean includeSecureAttributes);
-    @ManagedOperation(nonModifying = true, description = "Extract message store content", secure = true)
+    @ManagedOperation(nonModifying = true,
+            description = "Extract message store content",
+            secure = true,
+            changesConfiguredObjectState = true)
     Content exportMessageStore();
 
-    @ManagedOperation(description = "Import message store content", secure = true)
+    @ManagedOperation(description = "Import message store content",
+            secure = true,
+            changesConfiguredObjectState = true)
     void importMessageStore(@Param(name="source", description = "Extract file")String source);
 
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStore.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStore.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStore.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStore.java Wed Sep 28 15:25:38 2016
@@ -51,13 +51,19 @@ public interface AutoGeneratedSelfSigned
     @DerivedAttribute(persist = true, secure = true)
     String getEncodedPrivateKey();
 
-    @ManagedOperation
+    @ManagedOperation(description = "create a new private key and a new certificate",
+            changesConfiguredObjectState = true)
     void regenerateCertificate();
 
-    @ManagedOperation(nonModifying = true, description = "Extract a Java KeyStore containing the certificate for the autogenerated key.  The KeyStore can be used as a trust store by JMS client connecting to the broker")
+    @ManagedOperation(nonModifying = true,
+            description = "Extract a Java KeyStore containing the certificate for the autogenerated key."
+                          + "  The KeyStore can be used as a trust store by JMS client connecting to the broker",
+            changesConfiguredObjectState = false)
     Content getClientTrustStore(@Param(name="password", defaultValue = "", description = "The password to use to secure the keystore (by default the empty string is used).") String password);
 
-    @ManagedOperation(nonModifying = true, description = "Extract a PEM file containing the certificate for the autogenerated key.")
+    @ManagedOperation(nonModifying = true,
+            description = "Extract a PEM file containing the certificate for the autogenerated key.",
+            changesConfiguredObjectState = false)
     Content getCertificate();
 
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStore.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStore.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStore.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStore.java Wed Sep 28 15:25:38 2016
@@ -44,14 +44,16 @@ public interface ManagedPeerCertificateT
     @ManagedAttribute(oversize = true, defaultValue = "[]", description = "List of base64 encoded representations of the ASN.1 DER encoded certificates")
     List<Certificate> getStoredCertificates();
 
-    @ManagedOperation(description = "Add a given certificate to the Trust Store")
+    @ManagedOperation(description = "Add a given certificate to the Trust Store",
+            changesConfiguredObjectState = true)
     void addCertificate(@Param(name = "certificate", description = "PEM or base64 encoded DER certificate to be added to the Trust Store")
                         Certificate certificate);
 
     @DerivedAttribute(description = "List of details about the certificates like validity dates, SANs, issuer and subject names, etc.")
     List<CertificateDetails> getCertificateDetails();
 
-    @ManagedOperation(description = "Remove given certificates from the Trust Store.")
+    @ManagedOperation(description = "Remove given certificates from the Trust Store.",
+            changesConfiguredObjectState = true)
     void removeCertificates(@Param(name = "certificates", description = "List of certificate details to be removed. The details should take the form given by the certificateDetails attribute")
                             List<CertificateDetails> certificates);
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStoreImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStoreImpl.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStoreImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/ManagedPeerCertificateTrustStoreImpl.java Wed Sep 28 15:25:38 2016
@@ -33,10 +33,10 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Callable;
 
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
@@ -44,7 +44,6 @@ import javax.net.ssl.X509TrustManager;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
-import org.apache.qpid.server.configuration.updater.Task;
 import org.apache.qpid.server.logging.EventLogger;
 import org.apache.qpid.server.logging.messages.TrustStoreMessages;
 import org.slf4j.Logger;
@@ -267,56 +266,11 @@ public class ManagedPeerCertificateTrust
     @Override
     public void addCertificate(final Certificate cert)
     {
-        final Map<String, Object> updateMap = new HashMap<>();
-
-        doAfter(doOnConfigThread(new Task<ListenableFuture<Void>, RuntimeException>()
-                                    {
-                                        @Override
-                                        public ListenableFuture<Void> execute()
-                                        {
-                                            Set<Certificate> certs = new HashSet<>(_storedCertificates);
-                                            if(certs.add(cert))
-                                            {
-                                                updateMap.put("storedCertificates", new ArrayList<>(certs));
-                                            }
-                                            return Futures.immediateFuture(null);
-                                        }
-
-                                        @Override
-                                        public String getObject()
-                                        {
-                                            return ManagedPeerCertificateTrustStoreImpl.this.toString();
-                                        }
-
-                                        @Override
-                                        public String getAction()
-                                        {
-                                            return "add certificate";
-                                        }
-
-                                        @Override
-                                        public String getArguments()
-                                        {
-                                            return String.valueOf(cert);
-                                        }
-                                    }),
-                 new Callable<ListenableFuture<Void>>()
-                    {
-                        @Override
-                        public ListenableFuture<Void> call() throws Exception
-                        {
-                            if(updateMap.isEmpty())
-                            {
-                                return Futures.immediateFuture(null);
-                            }
-                            else
-                            {
-                                return setAttributesAsync(updateMap);
-                            }
-                        }
-
-                    });
-
+        final Set<Certificate> certificates = new LinkedHashSet<>(_storedCertificates);
+        if (certificates.add(cert))
+        {
+            setAttributesAsync(Collections.<String, Object>singletonMap("storedCertificates", certificates));
+        }
     }
 
     @Override
@@ -337,85 +291,38 @@ public class ManagedPeerCertificateTrust
     @Override
     public void removeCertificates(final List<CertificateDetails> certs)
     {
-        final Map<String,Set<BigInteger>> certsToRemove = new HashMap<>();
-        for(CertificateDetails cert : certs)
+        final Map<String, Set<BigInteger>> certsToRemove = new HashMap<>();
+        for (CertificateDetails cert : certs)
         {
-            if(!certsToRemove.containsKey(cert.getIssuerName()))
+            if (!certsToRemove.containsKey(cert.getIssuerName()))
             {
                 certsToRemove.put(cert.getIssuerName(), new HashSet<BigInteger>());
             }
             certsToRemove.get(cert.getIssuerName()).add(new BigInteger(cert.getSerialNumber()));
         }
 
-        final Map<String, Object> updateMap = new HashMap<>();
-
-        doAfter(doOnConfigThread(new Task<ListenableFuture<Void>, RuntimeException>()
-                {
-                    @Override
-                    public ListenableFuture<Void> execute()
-                    {
-
-                        Set<Certificate> certs = new HashSet<>(_storedCertificates);
-
-                        boolean updated = false;
-                        Iterator<Certificate> iter = certs.iterator();
-                        while(iter.hasNext())
-                        {
-                            Certificate cert = iter.next();
-                            if(cert instanceof X509Certificate)
-                            {
-                                X509Certificate x509Certificate = (X509Certificate) cert;
-                                String issuerName = x509Certificate.getIssuerX500Principal().getName();
-                                if(certsToRemove.containsKey(issuerName) && certsToRemove.get(issuerName).contains(x509Certificate.getSerialNumber()))
-                                {
-                                    iter.remove();
-                                    updated = true;
-                                }
-                            }
-                        }
-
-
-                        if(updated)
-                        {
-                            updateMap.put("storedCertificates", new ArrayList<>(certs));
-                        }
-                        return Futures.immediateFuture(null);
-                    }
-
-                    @Override
-                    public String getObject()
-                    {
-                        return ManagedPeerCertificateTrustStoreImpl.this.toString();
-                    }
-
-                    @Override
-                    public String getAction()
-                    {
-                        return "remove certificates";
-                    }
-
-                    @Override
-                    public String getArguments()
-                    {
-                        return String.valueOf(certs);
-                    }
-                }),
-                new Callable<ListenableFuture<Void>>()
+        boolean updated = false;
+        Set<Certificate> currentCerts = new LinkedHashSet<>(_storedCertificates);
+        Iterator<Certificate> iter = currentCerts.iterator();
+        while (iter.hasNext())
+        {
+            Certificate cert = iter.next();
+            if (cert instanceof X509Certificate)
+            {
+                X509Certificate x509Certificate = (X509Certificate) cert;
+                String issuerName = x509Certificate.getIssuerX500Principal().getName();
+                if(certsToRemove.containsKey(issuerName) && certsToRemove.get(issuerName).contains(x509Certificate.getSerialNumber()))
                 {
-                    @Override
-                    public ListenableFuture<Void> call() throws Exception
-                    {
-                        if(updateMap.isEmpty())
-                        {
-                            return Futures.immediateFuture(null);
-                        }
-                        else
-                        {
-                            return setAttributesAsync(updateMap);
-                        }
-                    }
+                    iter.remove();
+                    updated = true;
+                }
+            }
+        }
 
-                });
+        if (updated)
+        {
+            setAttributesAsync(Collections.<String, Object>singletonMap("storedCertificates", currentCerts));
+        }
     }
 
     public static class CertificateDetailsImpl implements CertificateDetails, ManagedAttributeValue

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStore.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStore.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStore.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStore.java Wed Sep 28 15:25:38 2016
@@ -58,6 +58,7 @@ public interface SiteSpecificTrustStore<
     @DerivedAttribute(description = "The end date of the validity of the certificate")
     Date getCertificateValidUntilDate();
 
-    @ManagedOperation(description = "Re-download the certificate from the URL")
+    @ManagedOperation(description = "Re-download the certificate from the URL",
+            changesConfiguredObjectState = false)
     void refreshCertificate();
 }

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestCar.java Wed Sep 28 15:25:38 2016
@@ -45,6 +45,6 @@ public interface TestCar<X extends TestC
 
     enum Door { DRIVER, PASSENGER }
 
-    @ManagedOperation
+    @ManagedOperation(changesConfiguredObjectState = false)
     Door openDoor(@Param(name = "door") Door door);
 }

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestKitCar.java Wed Sep 28 15:25:38 2016
@@ -28,7 +28,7 @@ import org.apache.qpid.server.model.Para
 @ManagedObject(category = false)
 public interface TestKitCar<X extends TestKitCar<X>> extends TestCar<X>
 {
-    @ManagedOperation
+    @ManagedOperation(changesConfiguredObjectState = false)
     Door openDoor(@Param(name = "door", defaultValue = "PASSENGER") Door door);
 
     @ManagedAttribute

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/TestStandardCar.java Wed Sep 28 15:25:38 2016
@@ -28,6 +28,6 @@ import org.apache.qpid.server.store.pref
 public interface TestStandardCar<X extends TestStandardCar<X>> extends TestCar<X>, UserPreferencesCreator
 {
 
-    @ManagedOperation
+    @ManagedOperation(changesConfiguredObjectState = false)
     Door openDoor(@Param(name = "door", defaultValue = "DRIVER") Door door);
 }

Modified: qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AclFileAccessControlProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AclFileAccessControlProvider.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AclFileAccessControlProvider.java (original)
+++ qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AclFileAccessControlProvider.java Wed Sep 28 15:25:38 2016
@@ -35,6 +35,7 @@ public interface AclFileAccessControlPro
     @ManagedAttribute( mandatory = true, description = "File location", oversize = true, oversizedAltText = OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT)
     String getPath();
 
-    @ManagedOperation( description = "Causes the ACL rules to be reloaded.  Changes are applied immediately.")
+    @ManagedOperation( description = "Causes the ACL rules to be reloaded.  Changes are applied immediately.",
+            changesConfiguredObjectState = true)
     void reload();
 }

Modified: qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedAccessControlProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedAccessControlProvider.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedAccessControlProvider.java (original)
+++ qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedAccessControlProvider.java Wed Sep 28 15:25:38 2016
@@ -44,9 +44,12 @@ public interface RuleBasedAccessControlP
     @ManagedAttribute( mandatory = true, defaultValue = "[ { \"identity\" : \"ALL\", \"objectType\" : \"ALL\", \"operation\" : \"ALL\", \"attributes\" : {}, \"outcome\" : \"ALLOW\"} ]", description = "the ordered list of ACL rules")
     List<AclRule> getRules();
 
-    @ManagedOperation(description = "Load access control rules from a file in the legacy access control rule format")
+    @ManagedOperation(description = "Load access control rules from a file in the legacy access control rule format",
+            changesConfiguredObjectState = true)
     void loadFromFile(@Param(name = "path")String path);
 
-    @ManagedOperation(nonModifying = true, description = "Extract the access control rules in the legacy access control rule format")
+    @ManagedOperation(nonModifying = true,
+            description = "Extract the access control rules in the legacy access control rule format",
+            changesConfiguredObjectState = false)
     Content extractRules();
 }

Modified: qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedVirtualHostAccessControlProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedVirtualHostAccessControlProvider.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedVirtualHostAccessControlProvider.java (original)
+++ qpid/java/trunk/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/RuleBasedVirtualHostAccessControlProvider.java Wed Sep 28 15:25:38 2016
@@ -44,9 +44,9 @@ public interface RuleBasedVirtualHostAcc
     @ManagedAttribute( mandatory = true, defaultValue = "[ ]")
     List<AclRule> getRules();
 
-    @ManagedOperation
+    @ManagedOperation(changesConfiguredObjectState = true)
     void loadFromFile(@Param(name = "path") String path);
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Content extractRules();
 }

Modified: qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLogger.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLogger.java (original)
+++ qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLogger.java Wed Sep 28 15:25:38 2016
@@ -68,12 +68,13 @@ public interface BrokerFileLogger<X exte
     @DerivedAttribute
     List<LogFileDetails> getLogFiles();
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Content getFile(@Param(name = "fileName") String fileName);
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Content getFiles(@Param(name = "fileName") Set<String> fileName);
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true,
+            changesConfiguredObjectState = false)
     Content getAllFiles();
 }

Modified: qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerMemoryLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerMemoryLogger.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerMemoryLogger.java (original)
+++ qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerMemoryLogger.java Wed Sep 28 15:25:38 2016
@@ -45,7 +45,7 @@ public interface BrokerMemoryLogger<X ex
     @ManagedAttribute( defaultValue = "4096" )
     int getMaxRecords();
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Collection<LogRecord> getLogEntries(@Param(name="lastLogId", defaultValue="0") long lastLogId);
 
 }

Modified: qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/VirtualHostFileLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/VirtualHostFileLogger.java?rev=1762682&r1=1762681&r2=1762682&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/VirtualHostFileLogger.java (original)
+++ qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/VirtualHostFileLogger.java Wed Sep 28 15:25:38 2016
@@ -64,12 +64,12 @@ public interface VirtualHostFileLogger<X
     @DerivedAttribute
     List<LogFileDetails> getLogFiles();
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Content getFile(@Param(name = "fileName") String fileName);
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Content getFiles(@Param(name = "fileName") Set<String> fileName);
 
-    @ManagedOperation(nonModifying = true)
+    @ManagedOperation(nonModifying = true, changesConfiguredObjectState = false)
     Content getAllFiles();
 }




---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org