From 036f2e3b1fb29c12a9d8a44cd5524714bba93383 Mon Sep 17 00:00:00 2001 From: Liang Zhang Date: Wed, 25 Sep 2024 00:03:44 +0800 Subject: [PATCH] Refactor DataSourceNodePersistService (#32989) --- .../config/database/DataSourceNodePersistService.java | 11 +++++------ .../database/DataSourceNodePersistServiceTest.java | 11 ++++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java index 15b81a1b8f4c0..442f6c0f4aa33 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java @@ -31,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; /** * Data source node persist service. @@ -67,13 +68,11 @@ public Map load(final String databaseName) { * @return data source pool configurations */ @SuppressWarnings("unchecked") - public Map load(final String databaseName, final String name) { - Map result = new LinkedHashMap<>(1, 1F); + public Optional load(final String databaseName, final String name) { String dataSourceValue = repository.query(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName, name, getDataSourceActiveVersion(databaseName, name))); - if (!Strings.isNullOrEmpty(dataSourceValue)) { - result.put(name, new YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue, Map.class))); - } - return result; + return Strings.isNullOrEmpty(dataSourceValue) + ? Optional.empty() + : Optional.of(new YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue, Map.class))); } /** diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistServiceTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistServiceTest.java index bfe0d5dbfaf0c..32e8bac811961 100644 --- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistServiceTest.java +++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistServiceTest.java @@ -29,9 +29,11 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; +import java.util.Optional; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; @@ -65,17 +67,16 @@ void assertLoad() { void assertLoadWithVersions() { when(repository.query("/metadata/foo_db/data_sources/nodes/foo_ds/active_version")).thenReturn("10"); when(repository.query("/metadata/foo_db/data_sources/nodes/foo_ds/versions/10")).thenReturn("{dataSourceClassName: org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource}"); - Map actual = dataSourceNodePersistService.load("foo_db", "foo_ds"); - assertThat(actual.size(), is(1)); - assertThat(actual.get("foo_ds").getPoolClassName(), is("org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource")); + Optional actual = dataSourceNodePersistService.load("foo_db", "foo_ds"); + assertTrue(actual.isPresent()); + assertThat(actual.get().getPoolClassName(), is("org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource")); } @Test void assertLoadWithoutVersions() { when(repository.query("/metadata/foo_db/data_sources/nodes/foo_ds/active_version")).thenReturn(""); when(repository.query("/metadata/foo_db/data_sources/nodes/foo_ds/versions/")).thenReturn(""); - Map actual = dataSourceNodePersistService.load("foo_db", "foo_ds"); - assertTrue(actual.isEmpty()); + assertFalse(dataSourceNodePersistService.load("foo_db", "foo_ds").isPresent()); } @Test