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

mikexue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/eventmesh.git


The following commit(s) were added to refs/heads/master by this push:
     new d3745519b [ISSUE #3897]Admin, RocketMQAdmin, StandaloneAdmin and 
AbstractRmqAdmin can be more clearer. (#3898)
d3745519b is described below

commit d3745519bf5165d5617b8c9bfd9ec5c8addc34fe
Author: pandaapo <[email protected]>
AuthorDate: Tue Jun 6 15:06:39 2023 +0800

    [ISSUE #3897]Admin, RocketMQAdmin, StandaloneAdmin and AbstractRmqAdmin can 
be more clearer. (#3898)
    
    * Modify Admin's hierarchy.
    
    * Fix CI error.
---
 .../apache/eventmesh/api/admin/AbstractAdmin.java} | 44 ++++-------
 .../storage/rocketmq/admin/AbstractRmqAdmin.java   | 65 ----------------
 .../storage/rocketmq/admin/RocketMQAdmin.java      | 89 +++++++++++-----------
 .../rocketmq/admin/RocketMQAdminAdaptor.java       |  4 +-
 .../storage/standalone/admin/StandaloneAdmin.java  | 33 +-------
 5 files changed, 61 insertions(+), 174 deletions(-)

diff --git 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdminAdaptor.java
 
b/eventmesh-storage-plugin/eventmesh-storage-api/src/main/java/org/apache/eventmesh/api/admin/AbstractAdmin.java
similarity index 56%
copy from 
eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdminAdaptor.java
copy to 
eventmesh-storage-plugin/eventmesh-storage-api/src/main/java/org/apache/eventmesh/api/admin/AbstractAdmin.java
index 27e66d564..5668dbb17 100644
--- 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdminAdaptor.java
+++ 
b/eventmesh-storage-plugin/eventmesh-storage-api/src/main/java/org/apache/eventmesh/api/admin/AbstractAdmin.java
@@ -15,71 +15,53 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.storage.rocketmq.admin;
-
-import org.apache.eventmesh.api.admin.Admin;
-import org.apache.eventmesh.api.admin.TopicProperties;
+package org.apache.eventmesh.api.admin;
 
 import java.util.List;
 import java.util.Properties;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import io.cloudevents.CloudEvent;
 
-public class RocketMQAdminAdaptor implements Admin {
+public abstract class AbstractAdmin implements Admin {
 
-    private final RocketMQAdmin admin;
+    private final AtomicBoolean started;
 
-    public RocketMQAdminAdaptor() {
-        admin = new RocketMQAdmin();
+    public AbstractAdmin(AtomicBoolean started) {
+        this.started = started;
     }
 
     @Override
     public boolean isStarted() {
-        return admin.isStarted();
+        return started.get();
     }
 
     @Override
     public boolean isClosed() {
-        return admin.isClosed();
+        return !started.get();
     }
 
     @Override
     public void start() {
-        admin.start();
+        started.set(true);
     }
 
     @Override
     public void shutdown() {
-        admin.shutdown();
+        started.set(false);
     }
 
     @Override
     public void init(Properties properties) throws Exception {
-        admin.init(properties);
-    }
-
-    @Override
-    public List<TopicProperties> getTopic() throws Exception {
-        return admin.getTopic();
-    }
 
-    @Override
-    public void createTopic(String topicName) throws Exception {
-        admin.createTopic(topicName);
-    }
-
-    @Override
-    public void deleteTopic(String topicName) throws Exception {
-        admin.deleteTopic(topicName);
     }
 
     @Override
-    public List<CloudEvent> getEvent(String topicName, int offset, int length) 
{
-        return admin.getEvent(topicName, offset, length);
+    public List<CloudEvent> getEvent(String topicName, int offset, int length) 
throws Exception {
+        return null;
     }
 
     @Override
-    public void publish(CloudEvent cloudEvent) {
-        admin.publish(cloudEvent);
+    public void publish(CloudEvent cloudEvent) throws Exception {
     }
 }
diff --git 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/AbstractRmqAdmin.java
 
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/AbstractRmqAdmin.java
deleted file mode 100644
index 71d5525cc..000000000
--- 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/AbstractRmqAdmin.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.eventmesh.storage.rocketmq.admin;
-
-import org.apache.eventmesh.common.config.ConfigService;
-import org.apache.eventmesh.storage.rocketmq.config.ClientConfiguration;
-
-import org.apache.rocketmq.acl.common.AclClientRPCHook;
-import org.apache.rocketmq.acl.common.SessionCredentials;
-import org.apache.rocketmq.remoting.RPCHook;
-import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
-
-import java.util.UUID;
-
-public abstract class AbstractRmqAdmin {
-    private DefaultMQAdminExt adminExt;
-
-
-    protected String nameServerAddr;
-
-    protected String clusterName;
-
-    protected DefaultMQAdminExt getAdminExt() throws Exception {
-        ConfigService configService = ConfigService.getInstance();
-
-        ClientConfiguration clientConfiguration = 
configService.buildConfigInstance(ClientConfiguration.class);
-
-        nameServerAddr = clientConfiguration.getNamesrvAddr();
-        clusterName = clientConfiguration.getClusterName();
-        String accessKey = clientConfiguration.getAccessKey();
-        String secretKey = clientConfiguration.getSecretKey();
-        if (adminExt == null) {
-
-            RPCHook rpcHook = new AclClientRPCHook(new 
SessionCredentials(accessKey, secretKey));
-            adminExt = new DefaultMQAdminExt(rpcHook);
-            String groupId = UUID.randomUUID().toString();
-            adminExt.setAdminExtGroup("admin_ext_group-" + groupId);
-            adminExt.setNamesrvAddr(nameServerAddr);
-            adminExt.start();
-        }
-
-        return adminExt;
-    }
-
-    protected void shutdownExt() {
-        adminExt.shutdown();
-        adminExt = null;
-    }
-
-}
diff --git 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdmin.java
 
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdmin.java
index 3c818be52..af9ff7c37 100644
--- 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdmin.java
+++ 
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdmin.java
@@ -17,71 +17,66 @@
 
 package org.apache.eventmesh.storage.rocketmq.admin;
 
-import org.apache.eventmesh.api.admin.Admin;
+import org.apache.eventmesh.api.admin.AbstractAdmin;
 import org.apache.eventmesh.api.admin.TopicProperties;
+import org.apache.eventmesh.common.config.ConfigService;
+import org.apache.eventmesh.storage.rocketmq.config.ClientConfiguration;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.rocketmq.acl.common.AclClientRPCHook;
+import org.apache.rocketmq.acl.common.SessionCredentials;
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.admin.TopicOffset;
 import org.apache.rocketmq.common.admin.TopicStatsTable;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.remoting.RPCHook;
+import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
 import org.apache.rocketmq.tools.command.CommandUtil;
 
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Properties;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import io.cloudevents.CloudEvent;
 
-public class RocketMQAdmin extends AbstractRmqAdmin implements Admin {
+public class RocketMQAdmin extends AbstractAdmin {
 
-    private final AtomicBoolean isStarted;
+    private final RPCHook rpcHook;
+
+    protected String nameServerAddr;
+
+    protected String clusterName;
 
     private int numOfQueue = 4;
     private int queuePermission = 6;
 
     public RocketMQAdmin() {
-        isStarted = new AtomicBoolean(false);
-    }
+        super(new AtomicBoolean(false));
 
-    @Override
-    public boolean isStarted() {
-        return isStarted.get();
-    }
-
-    @Override
-    public boolean isClosed() {
-        return !isStarted.get();
-    }
-
-    @Override
-    public void start() {
-        isStarted.compareAndSet(false, true);
-    }
-
-    @Override
-    public void shutdown() {
-        isStarted.compareAndSet(true, false);
-    }
-
-    @Override
-    public void init(Properties properties) {
+        ConfigService configService = ConfigService.getInstance();
+        ClientConfiguration clientConfiguration = 
configService.buildConfigInstance(ClientConfiguration.class);
 
+        nameServerAddr = clientConfiguration.getNamesrvAddr();
+        clusterName = clientConfiguration.getClusterName();
+        String accessKey = clientConfiguration.getAccessKey();
+        String secretKey = clientConfiguration.getSecretKey();
+        rpcHook = new AclClientRPCHook(new SessionCredentials(accessKey, 
secretKey));
     }
 
     @Override
     public List<TopicProperties> getTopic() throws Exception {
+        DefaultMQAdminExt adminExt = createMQAdminExt();
         try {
             List<TopicProperties> result = new ArrayList<>();
 
-            Set<String> topicList = 
getAdminExt().fetchAllTopicList().getTopicList();
+            adminExt.start();
+            Set<String> topicList = 
adminExt.fetchAllTopicList().getTopicList();
             for (String topic : topicList) {
                 long messageCount = 0;
-                TopicStatsTable topicStats = 
getAdminExt().examineTopicStats(topic);
+                TopicStatsTable topicStats = adminExt.examineTopicStats(topic);
                 HashMap<MessageQueue, TopicOffset> offsetTable = 
topicStats.getOffsetTable();
                 for (TopicOffset topicOffset : offsetTable.values()) {
                     messageCount += topicOffset.getMaxOffset() - 
topicOffset.getMinOffset();
@@ -94,7 +89,7 @@ public class RocketMQAdmin extends AbstractRmqAdmin 
implements Admin {
             result.sort(Comparator.comparing(t -> t.name));
             return result;
         } finally {
-            shutdownExt();
+            adminExt.shutdown();
         }
     }
 
@@ -103,18 +98,20 @@ public class RocketMQAdmin extends AbstractRmqAdmin 
implements Admin {
         if (StringUtils.isBlank(topicName)) {
             throw new Exception("Topic name can not be blank");
         }
+        DefaultMQAdminExt adminExt = createMQAdminExt();
         try {
-            Set<String> brokerAddress = 
CommandUtil.fetchMasterAddrByClusterName(getAdminExt(), clusterName);
+            adminExt.start();
+            Set<String> brokerAddress = 
CommandUtil.fetchMasterAddrByClusterName(adminExt, clusterName);
             for (String masterAddress : brokerAddress) {
                 TopicConfig topicConfig = new TopicConfig();
                 topicConfig.setTopicName(topicName);
                 topicConfig.setReadQueueNums(numOfQueue);
                 topicConfig.setWriteQueueNums(numOfQueue);
                 topicConfig.setPerm(queuePermission);
-                getAdminExt().createAndUpdateTopicConfig(masterAddress, 
topicConfig);
+                adminExt.createAndUpdateTopicConfig(masterAddress, 
topicConfig);
             }
         } finally {
-            shutdownExt();
+            adminExt.shutdown();
         }
     }
 
@@ -123,22 +120,22 @@ public class RocketMQAdmin extends AbstractRmqAdmin 
implements Admin {
         if (StringUtils.isBlank(topicName)) {
             throw new Exception("Topic name can not be blank.");
         }
+        DefaultMQAdminExt adminExt = createMQAdminExt();
         try {
-            Set<String> brokerAddress = 
CommandUtil.fetchMasterAddrByClusterName(getAdminExt(), clusterName);
-            getAdminExt().deleteTopicInBroker(brokerAddress, topicName);
+            adminExt.start();
+            Set<String> brokerAddress = 
CommandUtil.fetchMasterAddrByClusterName(adminExt, clusterName);
+            adminExt.deleteTopicInBroker(brokerAddress, topicName);
         } finally {
-            shutdownExt();
+            adminExt.shutdown();
         }
     }
 
-    @Override
-    public List<CloudEvent> getEvent(String topicName, int offset, int length) 
{
-        return null;
+    private DefaultMQAdminExt createMQAdminExt() {
+        DefaultMQAdminExt adminExt = new DefaultMQAdminExt(rpcHook);
+        String groupId = UUID.randomUUID().toString();
+        adminExt.setAdminExtGroup("admin_ext_group-" + groupId);
+        adminExt.setNamesrvAddr(nameServerAddr);
+        return adminExt;
     }
 
-    @Override
-    public void publish(CloudEvent cloudEvent) {
-    }
-
-
 }
diff --git 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdminAdaptor.java
 
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdminAdaptor.java
index 27e66d564..5899cb803 100644
--- 
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdminAdaptor.java
+++ 
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/admin/RocketMQAdminAdaptor.java
@@ -74,12 +74,12 @@ public class RocketMQAdminAdaptor implements Admin {
     }
 
     @Override
-    public List<CloudEvent> getEvent(String topicName, int offset, int length) 
{
+    public List<CloudEvent> getEvent(String topicName, int offset, int length) 
throws Exception {
         return admin.getEvent(topicName, offset, length);
     }
 
     @Override
-    public void publish(CloudEvent cloudEvent) {
+    public void publish(CloudEvent cloudEvent) throws Exception {
         admin.publish(cloudEvent);
     }
 }
diff --git 
a/eventmesh-storage-plugin/eventmesh-storage-standalone/src/main/java/org/apache/eventmesh/storage/standalone/admin/StandaloneAdmin.java
 
b/eventmesh-storage-plugin/eventmesh-storage-standalone/src/main/java/org/apache/eventmesh/storage/standalone/admin/StandaloneAdmin.java
index fcaf3a972..ef59f950b 100644
--- 
a/eventmesh-storage-plugin/eventmesh-storage-standalone/src/main/java/org/apache/eventmesh/storage/standalone/admin/StandaloneAdmin.java
+++ 
b/eventmesh-storage-plugin/eventmesh-storage-standalone/src/main/java/org/apache/eventmesh/storage/standalone/admin/StandaloneAdmin.java
@@ -17,7 +17,7 @@
 
 package org.apache.eventmesh.storage.standalone.admin;
 
-import org.apache.eventmesh.api.admin.Admin;
+import org.apache.eventmesh.api.admin.AbstractAdmin;
 import org.apache.eventmesh.api.admin.TopicProperties;
 import org.apache.eventmesh.storage.standalone.broker.MessageQueue;
 import org.apache.eventmesh.storage.standalone.broker.StandaloneBroker;
@@ -26,45 +26,18 @@ import 
org.apache.eventmesh.storage.standalone.broker.model.TopicMetadata;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import io.cloudevents.CloudEvent;
 
-public class StandaloneAdmin implements Admin {
+public class StandaloneAdmin extends AbstractAdmin {
 
-    private final AtomicBoolean isStarted;
     private final StandaloneBroker standaloneBroker;
 
     public StandaloneAdmin() {
+        super(new AtomicBoolean(false));
         this.standaloneBroker = StandaloneBroker.getInstance();
-        this.isStarted = new AtomicBoolean(false);
-    }
-
-    @Override
-    public boolean isStarted() {
-        return isStarted.get();
-    }
-
-    @Override
-    public boolean isClosed() {
-        return !isStarted.get();
-    }
-
-    @Override
-    public void start() {
-        isStarted.compareAndSet(false, true);
-    }
-
-    @Override
-    public void shutdown() {
-        isStarted.compareAndSet(true, false);
-    }
-
-    @Override
-    public void init(Properties properties) throws Exception {
-
     }
 
     @Override


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

Reply via email to