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 69f8cdde515 Remove RuleItemChangedBuilder (#34864) 69f8cdde515 is described below commit 69f8cdde515b4a728d6a52b064b2e3bcd141d46c Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Tue Mar 4 18:49:51 2025 +0800 Remove RuleItemChangedBuilder (#34864) * Remove RuleItemChangedBuilder * Remove RuleItemChangedBuilder * Remove RuleItemChangedBuilder * Remove RuleItemChangedBuilder --- .../changed/RuleItemChangedBuildExecutor.java | 22 +++++++---- .../metadata/changed/RuleItemChangedBuilder.java | 43 ---------------------- .../rule/RuleConfigurationChangedHandler.java | 15 +++----- .../rule/RuleConfigurationChangedHandlerTest.java | 6 +-- .../StandaloneMetaDataManagerPersistService.java | 10 ++--- ...tandaloneMetaDataManagerPersistServiceTest.java | 18 ++++----- 6 files changed, 38 insertions(+), 76 deletions(-) diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuildExecutor.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuildExecutor.java index 92e27e17513..4bf20611d69 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuildExecutor.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuildExecutor.java @@ -22,6 +22,7 @@ import org.apache.shardingsphere.mode.node.path.type.metadata.rule.DatabaseRuleI import org.apache.shardingsphere.mode.node.path.type.metadata.rule.DatabaseRuleNodePath; import org.apache.shardingsphere.mode.node.path.type.version.VersionNodePathParser; import org.apache.shardingsphere.mode.node.rule.node.DatabaseRuleNode; +import org.apache.shardingsphere.mode.node.rule.node.DatabaseRuleNodeGenerator; import java.util.Optional; @@ -33,23 +34,30 @@ public final class RuleItemChangedBuildExecutor { /** * Build rule item. * - * @param databaseRuleNode rule node path * @param databaseName database name * @param path path - * @param containsChildPath contains child path * @return built database rule node path */ - public Optional<DatabaseRuleNodePath> build(final DatabaseRuleNode databaseRuleNode, final String databaseName, final String path, final boolean containsChildPath) { + public Optional<DatabaseRuleNodePath> build(final String databaseName, final String path) { + Optional<String> ruleType = NodePathSearcher.find(path, DatabaseRuleNodePath.createRuleTypeSearchCriteria()); + if (!ruleType.isPresent()) { + return Optional.empty(); + } + DatabaseRuleNode databaseRuleNode = DatabaseRuleNodeGenerator.generate(ruleType.get()); for (String each : databaseRuleNode.getNamedItems()) { - Optional<String> itemName = NodePathSearcher.find(path, DatabaseRuleNodePath.createRuleItemNameSearchCriteria(databaseName, databaseRuleNode.getRuleType(), each, containsChildPath)); - if (itemName.isPresent()) { - return Optional.of(new DatabaseRuleNodePath(databaseName, databaseRuleNode.getRuleType(), new DatabaseRuleItem(each, itemName.get()))); + Optional<String> itemName = NodePathSearcher.find(path, DatabaseRuleNodePath.createRuleItemNameSearchCriteria(databaseName, databaseRuleNode.getRuleType(), each, true)); + if (!itemName.isPresent()) { + continue; + } + DatabaseRuleNodePath databaseRuleNodePath = new DatabaseRuleNodePath(databaseName, databaseRuleNode.getRuleType(), new DatabaseRuleItem(each, itemName.get())); + if (new VersionNodePathParser(databaseRuleNodePath).isActiveVersionPath(path)) { + return Optional.of(databaseRuleNodePath); } } for (String each : databaseRuleNode.getUniqueItems()) { DatabaseRuleNodePath databaseRuleNodePath = new DatabaseRuleNodePath(databaseName, databaseRuleNode.getRuleType(), new DatabaseRuleItem(each)); if (new VersionNodePathParser(databaseRuleNodePath).isActiveVersionPath(path)) { - return Optional.of(new DatabaseRuleNodePath(databaseName, databaseRuleNode.getRuleType(), new DatabaseRuleItem(each))); + return Optional.of(databaseRuleNodePath); } } return Optional.empty(); diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuilder.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuilder.java deleted file mode 100644 index ea6cb0df140..00000000000 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuilder.java +++ /dev/null @@ -1,43 +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.shardingsphere.mode.metadata.changed; - -import org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher; -import org.apache.shardingsphere.mode.node.path.type.metadata.rule.DatabaseRuleNodePath; -import org.apache.shardingsphere.mode.node.rule.node.DatabaseRuleNodeGenerator; - -import java.util.Optional; - -/** - * Rule item changed builder. - */ -public final class RuleItemChangedBuilder { - - /** - * Build rule item changed. - * - * @param databaseName database name - * @param path path - * @param containsChildPath contains child path - * @return built database rule node path - */ - public Optional<DatabaseRuleNodePath> build(final String databaseName, final String path, final boolean containsChildPath) { - Optional<String> ruleType = NodePathSearcher.find(path, DatabaseRuleNodePath.createRuleTypeSearchCriteria()); - return ruleType.isPresent() ? new RuleItemChangedBuildExecutor().build(DatabaseRuleNodeGenerator.generate(ruleType.get()), databaseName, path, containsChildPath) : Optional.empty(); - } -} diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java index 2291286808b..53a0363fc55 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java @@ -18,10 +18,11 @@ package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.rule; import com.google.common.base.Strings; +import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.mode.event.DataChangedEvent; import org.apache.shardingsphere.mode.event.DataChangedEvent.Type; import org.apache.shardingsphere.mode.manager.ContextManager; -import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuilder; +import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuildExecutor; import org.apache.shardingsphere.mode.node.path.type.metadata.rule.DatabaseRuleNodePath; import org.apache.shardingsphere.mode.node.path.type.version.VersionNodePath; @@ -31,16 +32,12 @@ import java.util.Optional; /** * Rule configuration changed handler. */ +@RequiredArgsConstructor public final class RuleConfigurationChangedHandler { private final ContextManager contextManager; - private final RuleItemChangedBuilder ruleItemChangedBuilder; - - public RuleConfigurationChangedHandler(final ContextManager contextManager) { - this.contextManager = contextManager; - ruleItemChangedBuilder = new RuleItemChangedBuilder(); - } + private final RuleItemChangedBuildExecutor ruleItemChangedBuildExecutor = new RuleItemChangedBuildExecutor(); /** * Handle rule changed. @@ -58,12 +55,12 @@ public final class RuleConfigurationChangedHandler { return; } int version = Integer.parseInt(event.getValue()); - Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuilder.build(databaseName, event.getKey(), true); + Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuildExecutor.build(databaseName, event.getKey()); if (databaseRuleNodePath.isPresent()) { contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(databaseRuleNodePath.get(), version); } } else if (Type.DELETED == event.getType()) { - Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuilder.build(databaseName, event.getKey(), false); + Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuildExecutor.build(databaseName, event.getKey()); if (databaseRuleNodePath.isPresent()) { contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(databaseRuleNodePath.get()); } diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java index f321581c925..d6e20061656 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java @@ -57,14 +57,14 @@ class RuleConfigurationChangedHandlerTest { @Test void assertHandleWithEmptyValue() throws SQLException { - handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/rules/fixture/versions/0", "", Type.ADDED)); + handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/rules/fixture/active_version", "0", Type.ADDED)); verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).alter(any(), eq(0)); verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).drop(any()); } @Test void assertHandleWithPathNotFound() throws SQLException { - handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/rules/fixture/versions/0", "foo", Type.ADDED)); + handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/rules/fixture/active_version", "0", Type.ADDED)); verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).alter(any(), eq(0)); verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).drop(any()); } @@ -90,7 +90,7 @@ class RuleConfigurationChangedHandlerTest { @Test void assertHandleWithNamedRuleItemDropped() throws SQLException { - handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/rules/fixture/named/foo_rule_item", "foo", Type.DELETED)); + handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/rules/fixture/named/foo_rule_item/active_version", "0", Type.DELETED)); verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).drop(any(DatabaseRuleNodePath.class)); } diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java index c6653bb339c..3411ebe4416 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java @@ -30,7 +30,7 @@ import org.apache.shardingsphere.infra.rule.scope.GlobalRule; import org.apache.shardingsphere.infra.rule.scope.GlobalRule.GlobalRuleChangedType; import org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; -import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuilder; +import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuildExecutor; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade; import org.apache.shardingsphere.mode.metadata.persist.metadata.DatabaseMetaDataPersistFacade; @@ -57,12 +57,12 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa private final MetaDataPersistFacade metaDataPersistFacade; - private final RuleItemChangedBuilder ruleItemChangedBuilder; + private final RuleItemChangedBuildExecutor ruleItemChangedBuildExecutor; public StandaloneMetaDataManagerPersistService(final MetaDataContextManager metaDataContextManager) { this.metaDataContextManager = metaDataContextManager; metaDataPersistFacade = metaDataContextManager.getMetaDataPersistFacade(); - ruleItemChangedBuilder = new RuleItemChangedBuilder(); + ruleItemChangedBuildExecutor = new RuleItemChangedBuildExecutor(); } @Override @@ -213,7 +213,7 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa return; } for (MetaDataVersion each : metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), Collections.singleton(toBeAlteredRuleConfig))) { - Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuilder.build(database.getName(), each.getPath(), true); + Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuildExecutor.build(database.getName(), each.getPath()); if (databaseRuleNodePath.isPresent()) { metaDataContextManager.getDatabaseRuleItemManager().alter(databaseRuleNodePath.get(), null == each.getActiveVersion() ? 0 : each.getActiveVersion()); } @@ -228,7 +228,7 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().delete(database.getName(), Collections.singleton(toBeRemovedRuleConfig)); for (MetaDataVersion each : metaDataVersions) { - Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuilder.build(database.getName(), each.getPath(), false); + Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedBuildExecutor.build(database.getName(), each.getPath()); if (databaseRuleNodePath.isPresent()) { metaDataContextManager.getDatabaseRuleItemManager().drop(databaseRuleNodePath.get()); } diff --git a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java index 6ea73659114..e5d7d630b44 100644 --- a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java +++ b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java @@ -27,7 +27,7 @@ import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable; import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; -import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuilder; +import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuildExecutor; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade; import org.apache.shardingsphere.mode.metadata.persist.metadata.DatabaseMetaDataPersistFacade; @@ -173,9 +173,9 @@ class StandaloneMetaDataManagerPersistServiceTest { Collection<MetaDataVersion> metaDataVersions = Collections.singleton(mock(MetaDataVersion.class)); when(metaDataPersistFacade.getDatabaseRuleService().persist("foo_db", Collections.singleton(ruleConfig))).thenReturn(metaDataVersions); DatabaseRuleNodePath databaseRuleNodePath = mock(DatabaseRuleNodePath.class); - RuleItemChangedBuilder ruleItemChangedBuilder = mock(RuleItemChangedBuilder.class); - when(ruleItemChangedBuilder.build(eq("foo_db"), any(), eq(true))).thenReturn(Optional.of(databaseRuleNodePath)); - setRuleConfigurationEventBuilder(ruleItemChangedBuilder); + RuleItemChangedBuildExecutor ruleItemChangedBuildExecutor = mock(RuleItemChangedBuildExecutor.class); + when(ruleItemChangedBuildExecutor.build(eq("foo_db"), any())).thenReturn(Optional.of(databaseRuleNodePath)); + setRuleItemChangedBuildExecutor(ruleItemChangedBuildExecutor); metaDataManagerPersistService.alterRuleConfiguration(database, ruleConfig); verify(metaDataContextManager.getDatabaseRuleItemManager()).alter(databaseRuleNodePath, 0); } @@ -191,10 +191,10 @@ class StandaloneMetaDataManagerPersistServiceTest { RuleConfiguration ruleConfig = mock(RuleConfiguration.class, RETURNS_DEEP_STUBS); Collection<MetaDataVersion> metaDataVersion = Collections.singleton(mock(MetaDataVersion.class)); when(metaDataPersistFacade.getDatabaseRuleService().delete("foo_db", Collections.singleton(ruleConfig))).thenReturn(metaDataVersion); - RuleItemChangedBuilder ruleItemChangedBuilder = mock(RuleItemChangedBuilder.class); + RuleItemChangedBuildExecutor ruleItemChangedBuildExecutor = mock(RuleItemChangedBuildExecutor.class); DatabaseRuleNodePath databaseRuleNodePath = mock(DatabaseRuleNodePath.class); - when(ruleItemChangedBuilder.build(eq("foo_db"), any(), eq(false))).thenReturn(Optional.of(databaseRuleNodePath)); - setRuleConfigurationEventBuilder(ruleItemChangedBuilder); + when(ruleItemChangedBuildExecutor.build(eq("foo_db"), any())).thenReturn(Optional.of(databaseRuleNodePath)); + setRuleItemChangedBuildExecutor(ruleItemChangedBuildExecutor); metaDataManagerPersistService.removeRuleConfigurationItem(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), ruleConfig); verify(metaDataContextManager.getDatabaseRuleItemManager()).drop(databaseRuleNodePath); } @@ -236,7 +236,7 @@ class StandaloneMetaDataManagerPersistServiceTest { } @SneakyThrows(ReflectiveOperationException.class) - private void setRuleConfigurationEventBuilder(final RuleItemChangedBuilder ruleItemChangedBuilder) { - Plugins.getMemberAccessor().set(StandaloneMetaDataManagerPersistService.class.getDeclaredField("ruleItemChangedBuilder"), metaDataManagerPersistService, ruleItemChangedBuilder); + private void setRuleItemChangedBuildExecutor(final RuleItemChangedBuildExecutor ruleItemChangedBuildExecutor) { + Plugins.getMemberAccessor().set(StandaloneMetaDataManagerPersistService.class.getDeclaredField("ruleItemChangedBuildExecutor"), metaDataManagerPersistService, ruleItemChangedBuildExecutor); } }