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

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


The following commit(s) were added to refs/heads/master by this push:
     new 192492ec2c5 Refactor InstanceMetaDataFactory (#34303)
192492ec2c5 is described below

commit 192492ec2c54beea3e5665de31985a9b4fc4ddf1
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 10 23:57:16 2025 +0800

    Refactor InstanceMetaDataFactory (#34303)
    
    * Refactor ComputeNodeData
    
    * Refactor InstanceMetaDataFactory
---
 .../apache/shardingsphere/infra/instance/ComputeNodeData.java |  4 ++--
 .../infra/instance/metadata/InstanceMetaDataFactory.java      | 11 ++++++-----
 .../infra/instance/yaml/YamlComputeNodeData.java              |  4 ++--
 .../infra/instance/yaml/YamlComputeNodeDataSwapper.java       |  4 ++--
 .../infra/instance/metadata/InstanceMetaDataFactoryTest.java  |  5 +++--
 .../persist/service/unified/ComputeNodePersistService.java    | 11 ++++++-----
 .../dispatch/handler/global/ComputeNodeOnlineHandler.java     |  3 +--
 7 files changed, 22 insertions(+), 20 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
index 0f3d8c779a9..eb0f4d46a53 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
@@ -27,9 +27,9 @@ import lombok.RequiredArgsConstructor;
 @Getter
 public final class ComputeNodeData {
     
+    private final String databaseName;
+    
     private final String attribute;
     
     private final String version;
-    
-    private final String databaseName;
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java
index 4fe6a173fba..4eee8cc2d60 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.instance.metadata;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.instance.ComputeNodeData;
 import 
org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData;
 import 
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
 
@@ -33,12 +34,12 @@ public final class InstanceMetaDataFactory {
      *
      * @param instanceId instance ID
      * @param instanceType instance type 
-     * @param attributes attributes
-     * @param version version
-     * @param databaseName database name
+     * @param computeNodeData compute node data
      * @return created instance meta data
      */
-    public static InstanceMetaData create(final String instanceId, final 
InstanceType instanceType, final String attributes, final String version, final 
String databaseName) {
-        return InstanceType.JDBC == instanceType ? new 
JDBCInstanceMetaData(instanceId, attributes, version, databaseName) : new 
ProxyInstanceMetaData(instanceId, attributes, version);
+    public static InstanceMetaData create(final String instanceId, final 
InstanceType instanceType, final ComputeNodeData computeNodeData) {
+        return InstanceType.JDBC == instanceType
+                ? new JDBCInstanceMetaData(instanceId, 
computeNodeData.getAttribute(), computeNodeData.getVersion(), 
computeNodeData.getDatabaseName())
+                : new ProxyInstanceMetaData(instanceId, 
computeNodeData.getAttribute(), computeNodeData.getVersion());
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
index efc857e4918..5c09a9e6de2 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
@@ -28,9 +28,9 @@ import 
org.apache.shardingsphere.infra.util.yaml.YamlConfiguration;
 @Setter
 public final class YamlComputeNodeData implements YamlConfiguration {
     
+    private String databaseName;
+    
     private String attribute;
     
     private String version;
-    
-    private String databaseName;
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
index e451277a1c5..c0d2349c4b8 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
@@ -28,14 +28,14 @@ public final class YamlComputeNodeDataSwapper implements 
YamlConfigurationSwappe
     @Override
     public YamlComputeNodeData swapToYamlConfiguration(final ComputeNodeData 
data) {
         YamlComputeNodeData result = new YamlComputeNodeData();
+        result.setDatabaseName(data.getDatabaseName());
         result.setAttribute(data.getAttribute());
         result.setVersion(data.getVersion());
-        result.setDatabaseName(data.getDatabaseName());
         return result;
     }
     
     @Override
     public ComputeNodeData swapToObject(final YamlComputeNodeData yamlConfig) {
-        return new ComputeNodeData(yamlConfig.getAttribute(), 
yamlConfig.getVersion(), yamlConfig.getDatabaseName());
+        return new ComputeNodeData(yamlConfig.getDatabaseName(), 
yamlConfig.getAttribute(), yamlConfig.getVersion());
     }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java
index de5e15a5b6d..bfb2fc7fa7f 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.infra.instance.metadata;
 
+import org.apache.shardingsphere.infra.instance.ComputeNodeData;
 import 
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
 import org.junit.jupiter.api.Test;
 
@@ -28,7 +29,7 @@ class InstanceMetaDataFactoryTest {
     
     @Test
     void assertCreateJDBCInstanceMetaDataWithInstanceId() {
-        InstanceMetaData actual = InstanceMetaDataFactory.create("foo_id", 
InstanceType.JDBC, "127.0.0.1", "foo_version", "foo_db");
+        InstanceMetaData actual = InstanceMetaDataFactory.create("foo_id", 
InstanceType.JDBC, new ComputeNodeData("foo_db", "127.0.0.1", "foo_version"));
         assertThat(actual.getId(), is("foo_id"));
         assertNotNull(actual.getIp());
         assertThat(actual.getAttributes(), is("127.0.0.1"));
@@ -38,7 +39,7 @@ class InstanceMetaDataFactoryTest {
     
     @Test
     void assertCreateProxyInstanceMetaDataWithInstanceId() {
-        ProxyInstanceMetaData actual = (ProxyInstanceMetaData) 
InstanceMetaDataFactory.create("foo_id", InstanceType.PROXY, "127.0.0.1@3307", 
"foo_version", "foo_db");
+        ProxyInstanceMetaData actual = (ProxyInstanceMetaData) 
InstanceMetaDataFactory.create("foo_id", InstanceType.PROXY, new 
ComputeNodeData("foo_db", "127.0.0.1@3307", "foo_version"));
         assertThat(actual.getId(), is("foo_id"));
         assertThat(actual.getIp(), is("127.0.0.1"));
         assertThat(actual.getPort(), is(3307));
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
index 5c2b20548e3..bdc19463920 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
@@ -55,9 +55,10 @@ public final class ComputeNodePersistService {
      */
     public void registerOnline(final ComputeNodeInstance computeNodeInstance) {
         String instanceId = computeNodeInstance.getMetaData().getId();
-        repository.persistEphemeral(ComputeNodePath.getOnlinePath(instanceId, 
computeNodeInstance.getMetaData().getType()), YamlEngine.marshal(
-                new YamlComputeNodeDataSwapper().swapToYamlConfiguration(new 
ComputeNodeData(computeNodeInstance.getMetaData().getAttributes(),
-                        computeNodeInstance.getMetaData().getVersion(), 
computeNodeInstance.getMetaData().getDatabaseName()))));
+        ComputeNodeData computeNodeData = new ComputeNodeData(
+                computeNodeInstance.getMetaData().getDatabaseName(), 
computeNodeInstance.getMetaData().getAttributes(), 
computeNodeInstance.getMetaData().getVersion());
+        repository.persistEphemeral(ComputeNodePath.getOnlinePath(instanceId, 
computeNodeInstance.getMetaData().getType()),
+                YamlEngine.marshal(new 
YamlComputeNodeDataSwapper().swapToYamlConfiguration(computeNodeData)));
         repository.persistEphemeral(ComputeNodePath.getStatePath(instanceId), 
computeNodeInstance.getState().getCurrentState().name());
         persistInstanceLabels(instanceId, computeNodeInstance.getLabels());
     }
@@ -136,8 +137,8 @@ public final class ComputeNodePersistService {
             if (Strings.isNullOrEmpty(value)) {
                 continue;
             }
-            ComputeNodeData computeNodeData = new 
YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(value, 
YamlComputeNodeData.class));
-            
result.add(loadComputeNodeInstance(InstanceMetaDataFactory.create(each, 
instanceType, computeNodeData.getAttribute(), computeNodeData.getVersion(), 
computeNodeData.getDatabaseName())));
+            result.add(loadComputeNodeInstance(
+                    InstanceMetaDataFactory.create(each, instanceType, new 
YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(value, 
YamlComputeNodeData.class)))));
         }
         return result;
     }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java
index 569ef53dcd2..281d145c1d9 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java
@@ -58,8 +58,7 @@ public final class ComputeNodeOnlineHandler implements 
DataChangedEventHandler {
             return;
         }
         ComputeNodeData computeNodeData = new 
YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(),
 YamlComputeNodeData.class));
-        InstanceMetaData instanceMetaData = InstanceMetaDataFactory.create(
-                matcher.group(2), 
InstanceType.valueOf(matcher.group(1).toUpperCase()), 
computeNodeData.getAttribute(), computeNodeData.getVersion(), 
computeNodeData.getDatabaseName());
+        InstanceMetaData instanceMetaData = 
InstanceMetaDataFactory.create(matcher.group(2), 
InstanceType.valueOf(matcher.group(1).toUpperCase()), computeNodeData);
         if (Type.ADDED == event.getType()) {
             
contextManager.getComputeNodeInstanceContext().getClusterInstanceRegistry()
                     
.add(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadComputeNodeInstance(instanceMetaData));

Reply via email to