This is an automated email from the ASF dual-hosted git repository.

jbertram pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new 5737f96  ARTEMIS-2749 - Broadcast Group Control Improvements
     new 9f9c8f6  This closes #3121
5737f96 is described below

commit 5737f965d260b69ae61c8193404a4499da466e60
Author: Andy Taylor <[email protected]>
AuthorDate: Thu May 7 14:19:51 2020 +0100

    ARTEMIS-2749 - Broadcast Group Control Improvements
    
    added some default behaviour for when overridden
    
    https://issues.apache.org/jira/browse/ARTEMIS-2749
---
 .../impl/BaseBroadcastGroupControlImpl.java        |  6 ++
 .../JGroupsPropertiesBroadcastGroupControl.java    | 29 +++++++++
 ...JGroupsPropertiesBroadcastGroupControlImpl.java | 71 ++++++++++++++++++++++
 .../management/impl/ManagementServiceImpl.java     | 14 ++++-
 4 files changed, 118 insertions(+), 2 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BaseBroadcastGroupControlImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BaseBroadcastGroupControlImpl.java
index bdda6ac..f7e3b5a 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BaseBroadcastGroupControlImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BaseBroadcastGroupControlImpl.java
@@ -42,6 +42,12 @@ public class BaseBroadcastGroupControlImpl extends 
AbstractControl implements Ba
 
    // Constructors --------------------------------------------------
 
+   public BaseBroadcastGroupControlImpl(final BroadcastGroup broadcastGroup,
+                                        final StorageManager storageManager,
+                                        final BroadcastGroupConfiguration 
configuration) throws Exception {
+      this(BaseBroadcastGroupControl.class, broadcastGroup, storageManager, 
configuration);
+   }
+
    public BaseBroadcastGroupControlImpl(final Class broadcastGroupControlClass,
                                         final BroadcastGroup broadcastGroup,
                                         final StorageManager storageManager,
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsPropertiesBroadcastGroupControl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsPropertiesBroadcastGroupControl.java
new file mode 100644
index 0000000..c1eee3b
--- /dev/null
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsPropertiesBroadcastGroupControl.java
@@ -0,0 +1,29 @@
+/*
+ * 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.activemq.artemis.core.management.impl;
+
+import org.apache.activemq.artemis.api.core.management.Attribute;
+import 
org.apache.activemq.artemis.api.core.management.JGroupsChannelBroadcastGroupControl;
+
+public interface JGroupsPropertiesBroadcastGroupControl extends 
JGroupsChannelBroadcastGroupControl {
+
+   /**
+    * Returns the JGroups properties
+    */
+   @Attribute(desc = "Returns the JGroups properties")
+   String getProperties();
+}
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsPropertiesBroadcastGroupControlImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsPropertiesBroadcastGroupControlImpl.java
new file mode 100644
index 0000000..40d6ea2
--- /dev/null
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsPropertiesBroadcastGroupControlImpl.java
@@ -0,0 +1,71 @@
+/*
+ * 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.activemq.artemis.core.management.impl;
+
+import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import 
org.apache.activemq.artemis.api.core.JGroupsPropertiesBroadcastEndpointFactory;
+import 
org.apache.activemq.artemis.api.core.management.JGroupsChannelBroadcastGroupControl;
+import org.apache.activemq.artemis.core.persistence.StorageManager;
+import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
+import org.apache.activemq.artemis.logs.AuditLogger;
+
+public class JGroupsPropertiesBroadcastGroupControlImpl extends 
BaseBroadcastGroupControlImpl implements JGroupsPropertiesBroadcastGroupControl 
{
+
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   private JGroupsPropertiesBroadcastEndpointFactory endpointFactory;
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   public JGroupsPropertiesBroadcastGroupControlImpl(final BroadcastGroup 
broadcastGroup,
+                                                     final StorageManager 
storageManager,
+                                                     final 
BroadcastGroupConfiguration configuration,
+                                                     final 
JGroupsPropertiesBroadcastEndpointFactory endpointFactory) throws Exception {
+      super(JGroupsChannelBroadcastGroupControl.class, broadcastGroup, 
storageManager, configuration);
+      this.endpointFactory = endpointFactory;
+   }
+
+   // BroadcastGroupControlMBean implementation ---------------------
+
+   @Override
+   public String getChannelName() throws Exception {
+      if (AuditLogger.isEnabled()) {
+         AuditLogger.getChannelName(this.endpointFactory.getChannelName());
+      }
+      return endpointFactory.getChannelName();
+   }
+
+   @Override
+   public String getProperties() {
+      return endpointFactory.getProperties();
+   }
+
+   // Public --------------------------------------------------------
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+
+}
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
index 6b0d261..63467e4 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
@@ -39,6 +39,7 @@ import 
org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
 import org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.ICoreMessage;
 import 
org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory;
+import 
org.apache.activemq.artemis.api.core.JGroupsPropertiesBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.JsonUtil;
 import org.apache.activemq.artemis.api.core.Message;
 import org.apache.activemq.artemis.api.core.RoutingType;
@@ -60,12 +61,14 @@ import 
org.apache.activemq.artemis.core.config.DivertConfiguration;
 import org.apache.activemq.artemis.core.management.impl.AcceptorControlImpl;
 import 
org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl;
 import org.apache.activemq.artemis.core.management.impl.AddressControlImpl;
+import 
org.apache.activemq.artemis.core.management.impl.BaseBroadcastGroupControlImpl;
 import org.apache.activemq.artemis.core.management.impl.BridgeControlImpl;
 import 
org.apache.activemq.artemis.core.management.impl.BroadcastGroupControlImpl;
 import 
org.apache.activemq.artemis.core.management.impl.ClusterConnectionControlImpl;
 import org.apache.activemq.artemis.core.management.impl.DivertControlImpl;
 import 
org.apache.activemq.artemis.core.management.impl.JGroupsChannelBroadcastGroupControlImpl;
 import 
org.apache.activemq.artemis.core.management.impl.JGroupsFileBroadcastGroupControlImpl;
+import 
org.apache.activemq.artemis.core.management.impl.JGroupsPropertiesBroadcastGroupControlImpl;
 import org.apache.activemq.artemis.core.management.impl.QueueControlImpl;
 import org.apache.activemq.artemis.core.message.impl.CoreMessage;
 import org.apache.activemq.artemis.core.messagecounter.MessageCounter;
@@ -353,9 +356,16 @@ public class ManagementServiceImpl implements 
ManagementService {
          control = new JGroupsFileBroadcastGroupControlImpl(broadcastGroup, 
storageManager, configuration, (JGroupsFileBroadcastEndpointFactory) 
endpointFactory);
       } else if (endpointFactory instanceof ChannelBroadcastEndpointFactory) {
          control = new JGroupsChannelBroadcastGroupControlImpl(broadcastGroup, 
storageManager, configuration, (ChannelBroadcastEndpointFactory) 
endpointFactory);
+      } else if (endpointFactory instanceof 
JGroupsPropertiesBroadcastEndpointFactory) {
+         control = new 
JGroupsPropertiesBroadcastGroupControlImpl(broadcastGroup, storageManager, 
configuration, (JGroupsPropertiesBroadcastEndpointFactory) endpointFactory);
+      } else {
+         control = new BaseBroadcastGroupControlImpl(broadcastGroup, 
storageManager, configuration);
+      }
+      //shouldnt ever be null
+      if (control != null) {
+         registerInJMX(objectName, control);
+         registerInRegistry(ResourceNames.BROADCAST_GROUP + 
configuration.getName(), control);
       }
-      registerInJMX(objectName, control);
-      registerInRegistry(ResourceNames.BROADCAST_GROUP + 
configuration.getName(), control);
    }
 
    @Override

Reply via email to