This is an automated email from the ASF dual-hosted git repository. jiangmaolin 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 0df1e10998b Move RuleItemChangedBuilder to mode core (#34590) 0df1e10998b is described below commit 0df1e10998b79de934c3da74c54429a3882393f0 Author: Haoran Meng <menghaora...@gmail.com> AuthorDate: Fri Feb 7 18:24:03 2025 +0800 Move RuleItemChangedBuilder to mode core (#34590) * Move RuleItemChangedBuilder to mode core * Fix ViewMetaDataPersistServiceTest --- .../metadata}/changed/RuleItemChangedBuilder.java | 7 +- .../executor/RuleItemChangedBuildExecutor.java | 2 +- .../type/RuleItemAlteredBuildExecutor.java | 16 ++--- .../type/RuleItemDroppedBuildExecutor.java | 10 ++- .../service/ViewMetaDataPersistService.java | 2 +- .../metadata/ViewMetaDataPersistServiceTest.java | 2 - .../path/metadata/DatabaseMetaDataNodePath.java | 9 +++ .../rule/RuleConfigurationChangedHandler.java | 78 ++++++++-------------- .../rule/type/NamedRuleItemChangedHandler.java | 56 ---------------- .../rule/type/UniqueRuleItemChangedHandler.java | 55 --------------- .../StandaloneMetaDataManagerPersistService.java | 6 +- ...tandaloneMetaDataManagerPersistServiceTest.java | 2 +- 12 files changed, 57 insertions(+), 188 deletions(-) diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuilder.java similarity index 86% rename from mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java rename to mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuilder.java index 8480bfc7541..34d969f0762 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/RuleItemChangedBuilder.java @@ -15,12 +15,11 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.standalone.changed; +package org.apache.shardingsphere.mode.metadata.changed; import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader; -import org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleItemChangedBuildExecutor; -import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; +import org.apache.shardingsphere.mode.metadata.changed.executor.RuleItemChangedBuildExecutor; import org.apache.shardingsphere.mode.node.spi.RuleNodePathProvider; import org.apache.shardingsphere.mode.spi.rule.item.RuleChangedItem; @@ -42,7 +41,7 @@ public final class RuleItemChangedBuilder { */ public <T extends RuleChangedItem> Optional<T> build(final String databaseName, final MetaDataVersion metaDataVersion, final RuleItemChangedBuildExecutor<T> executor) { for (RuleNodePathProvider each : ShardingSphereServiceLoader.getServiceInstances(RuleNodePathProvider.class)) { - if (!each.getRuleNodePath().getRoot().isValidatedPath(new VersionNodePath(metaDataVersion.getPath()).getActiveVersionPath())) { + if (!each.getRuleNodePath().getRoot().isValidatedPath(metaDataVersion.getPath())) { continue; } Optional<T> result = executor.build(each.getRuleNodePath(), databaseName, metaDataVersion); diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/RuleItemChangedBuildExecutor.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/RuleItemChangedBuildExecutor.java similarity index 95% rename from mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/RuleItemChangedBuildExecutor.java rename to mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/RuleItemChangedBuildExecutor.java index a0a5e89c2bc..0a8a2038366 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/RuleItemChangedBuildExecutor.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/RuleItemChangedBuildExecutor.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.standalone.changed.executor; +package org.apache.shardingsphere.mode.metadata.changed.executor; import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; import org.apache.shardingsphere.mode.node.path.config.rule.RuleNodePath; diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/type/RuleItemAlteredBuildExecutor.java similarity index 77% rename from mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java rename to mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/type/RuleItemAlteredBuildExecutor.java index 387cd437a30..171c93f22a6 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/type/RuleItemAlteredBuildExecutor.java @@ -15,14 +15,13 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.standalone.changed.executor.type; +package org.apache.shardingsphere.mode.metadata.changed.executor.type; import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; -import org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleItemChangedBuildExecutor; +import org.apache.shardingsphere.mode.metadata.changed.executor.RuleItemChangedBuildExecutor; import org.apache.shardingsphere.mode.node.path.config.rule.RuleNodePath; import org.apache.shardingsphere.mode.node.path.config.rule.item.NamedRuleItemNodePath; import org.apache.shardingsphere.mode.node.path.config.rule.item.UniqueRuleItemNodePath; -import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterNamedRuleItem; import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem; import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterUniqueRuleItem; @@ -37,17 +36,18 @@ public final class RuleItemAlteredBuildExecutor implements RuleItemChangedBuildE @Override public Optional<AlterRuleItem> build(final RuleNodePath ruleNodePath, final String databaseName, final MetaDataVersion metaDataVersion) { - String activeVersionPath = new VersionNodePath(metaDataVersion.getPath()).getActiveVersionPath(); for (Entry<String, NamedRuleItemNodePath> entry : ruleNodePath.getNamedItems().entrySet()) { - Optional<String> itemName = entry.getValue().findNameByActiveVersion(activeVersionPath); + Optional<String> itemName = entry.getValue().findNameByActiveVersion(metaDataVersion.getPath()); if (itemName.isPresent()) { return Optional.of( - new AlterNamedRuleItem(databaseName, itemName.get(), activeVersionPath, metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); + new AlterNamedRuleItem(databaseName, itemName.get(), metaDataVersion.getPath(), + metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); } } for (Entry<String, UniqueRuleItemNodePath> entry : ruleNodePath.getUniqueItems().entrySet()) { - if (entry.getValue().isActiveVersionPath(activeVersionPath)) { - return Optional.of(new AlterUniqueRuleItem(databaseName, activeVersionPath, metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); + if (entry.getValue().isActiveVersionPath(metaDataVersion.getPath())) { + return Optional.of(new AlterUniqueRuleItem(databaseName, metaDataVersion.getPath(), + metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); } } return Optional.empty(); diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/type/RuleItemDroppedBuildExecutor.java similarity index 83% rename from mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java rename to mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/type/RuleItemDroppedBuildExecutor.java index c07cd93d117..dc7b583fc03 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/changed/executor/type/RuleItemDroppedBuildExecutor.java @@ -15,14 +15,13 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.standalone.changed.executor.type; +package org.apache.shardingsphere.mode.metadata.changed.executor.type; import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; -import org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleItemChangedBuildExecutor; +import org.apache.shardingsphere.mode.metadata.changed.executor.RuleItemChangedBuildExecutor; import org.apache.shardingsphere.mode.node.path.config.rule.RuleNodePath; import org.apache.shardingsphere.mode.node.path.config.rule.item.NamedRuleItemNodePath; import org.apache.shardingsphere.mode.node.path.config.rule.item.UniqueRuleItemNodePath; -import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import org.apache.shardingsphere.mode.spi.rule.item.drop.DropNamedRuleItem; import org.apache.shardingsphere.mode.spi.rule.item.drop.DropRuleItem; import org.apache.shardingsphere.mode.spi.rule.item.drop.DropUniqueRuleItem; @@ -37,15 +36,14 @@ public final class RuleItemDroppedBuildExecutor implements RuleItemChangedBuildE @Override public Optional<DropRuleItem> build(final RuleNodePath ruleNodePath, final String databaseName, final MetaDataVersion metaDataVersion) { - String activeVersionPath = new VersionNodePath(metaDataVersion.getPath()).getActiveVersionPath(); for (Entry<String, NamedRuleItemNodePath> entry : ruleNodePath.getNamedItems().entrySet()) { - Optional<String> itemName = entry.getValue().findNameByItemPath(activeVersionPath); + Optional<String> itemName = entry.getValue().findNameByItemPath(metaDataVersion.getPath()); if (itemName.isPresent()) { return Optional.of(new DropNamedRuleItem(databaseName, itemName.get(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); } } for (Entry<String, UniqueRuleItemNodePath> entry : ruleNodePath.getUniqueItems().entrySet()) { - if (entry.getValue().isActiveVersionPath(activeVersionPath)) { + if (entry.getValue().isActiveVersionPath(metaDataVersion.getPath())) { return Optional.of(new DropUniqueRuleItem(databaseName, ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java index 9085f7ef08c..4751115512f 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java @@ -85,7 +85,7 @@ public final class ViewMetaDataPersistService { repository.persist(ViewMetaDataNodePath.getVersionNodePath(databaseName, schemaName, viewName).getVersionPath(nextActiveVersion), YamlEngine.marshal(swapper.swapToYamlConfiguration(each))); if (null == getActiveVersion(databaseName, schemaName, viewName)) { - repository.persist(ViewMetaDataNodePath.getVersionNodePath(databaseName, schemaName, viewName).getVersionsPath(), String.valueOf(MetaDataVersion.DEFAULT_VERSION)); + repository.persist(ViewMetaDataNodePath.getVersionNodePath(databaseName, schemaName, viewName).getActiveVersionPath(), String.valueOf(MetaDataVersion.DEFAULT_VERSION)); } metaDataVersions.add(new MetaDataVersion(ViewMetaDataNodePath.getViewPath(databaseName, schemaName, viewName), getActiveVersion(databaseName, schemaName, viewName), nextActiveVersion)); } diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/ViewMetaDataPersistServiceTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/ViewMetaDataPersistServiceTest.java index 5a0d54da0ce..5e6fc31ed25 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/ViewMetaDataPersistServiceTest.java +++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/ViewMetaDataPersistServiceTest.java @@ -22,7 +22,6 @@ import org.apache.shardingsphere.mode.metadata.persist.metadata.service.ViewMeta import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; @@ -37,7 +36,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -@Disabled("fix unit test by haorangdia") @ExtendWith(MockitoExtension.class) class ViewMetaDataPersistServiceTest { diff --git a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java index 959b1a4eda5..5dc4c465d12 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java @@ -117,4 +117,13 @@ public final class DatabaseMetaDataNodePath { Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty(); } + + /** + * Is active version path. + * @param path path + * @return is active version path or not + */ + public static boolean isActiveVersionPath(final String path) { + return path.endsWith(ACTIVE_VERSION_NODE); + } } 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 8d9e23be09b..971fed72397 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,19 +18,18 @@ package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.rule; import com.google.common.base.Strings; -import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader; +import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; 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.manager.cluster.dispatch.handler.database.rule.type.NamedRuleItemChangedHandler; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.rule.type.UniqueRuleItemChangedHandler; -import org.apache.shardingsphere.mode.node.path.config.rule.RuleNodePath; -import org.apache.shardingsphere.mode.node.path.config.rule.item.NamedRuleItemNodePath; -import org.apache.shardingsphere.mode.node.path.config.rule.item.UniqueRuleItemNodePath; -import org.apache.shardingsphere.mode.node.spi.RuleNodePathProvider; +import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuilder; +import org.apache.shardingsphere.mode.metadata.changed.executor.type.RuleItemAlteredBuildExecutor; +import org.apache.shardingsphere.mode.metadata.changed.executor.type.RuleItemDroppedBuildExecutor; +import org.apache.shardingsphere.mode.node.path.metadata.DatabaseMetaDataNodePath; +import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem; +import org.apache.shardingsphere.mode.spi.rule.item.drop.DropRuleItem; import java.sql.SQLException; -import java.util.Map.Entry; import java.util.Optional; /** @@ -38,13 +37,13 @@ import java.util.Optional; */ public final class RuleConfigurationChangedHandler { - private final NamedRuleItemChangedHandler namedRuleItemChangedHandler; + private final ContextManager contextManager; - private final UniqueRuleItemChangedHandler uniqueRuleItemChangedHandler; + private final RuleItemChangedBuilder ruleItemChangedBuilder; public RuleConfigurationChangedHandler(final ContextManager contextManager) { - namedRuleItemChangedHandler = new NamedRuleItemChangedHandler(contextManager); - uniqueRuleItemChangedHandler = new UniqueRuleItemChangedHandler(contextManager); + this.contextManager = contextManager; + ruleItemChangedBuilder = new RuleItemChangedBuilder(); } /** @@ -52,51 +51,28 @@ public final class RuleConfigurationChangedHandler { * * @param databaseName database name * @param event data changed event - * @throws SQLException SQL Exception + * @throws SQLException SQL exception */ public void handle(final String databaseName, final DataChangedEvent event) throws SQLException { - for (RuleNodePathProvider each : ShardingSphereServiceLoader.getServiceInstances(RuleNodePathProvider.class)) { - if (handle(each.getRuleNodePath(), databaseName, event)) { + if (Type.DELETED != event.getType() && Strings.isNullOrEmpty(event.getValue())) { + return; + } + if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) { + if (!DatabaseMetaDataNodePath.isActiveVersionPath(event.getKey())) { return; } - } - } - - private boolean handle(final RuleNodePath ruleNodePath, final String databaseName, final DataChangedEvent event) throws SQLException { - if (!ruleNodePath.getRoot().isValidatedPath(event.getKey()) || Type.DELETED != event.getType() && Strings.isNullOrEmpty(event.getValue())) { - return false; - } - return handleNamedRuleItems(ruleNodePath, databaseName, event) || handleUniqueRuleItems(ruleNodePath, databaseName, event); - } - - private boolean handleNamedRuleItems(final RuleNodePath ruleNodePath, final String databaseName, final DataChangedEvent event) throws SQLException { - for (Entry<String, NamedRuleItemNodePath> entry : ruleNodePath.getNamedItems().entrySet()) { - Optional<String> itemName = getItemName(event, entry.getValue()); - if (itemName.isPresent()) { - namedRuleItemChangedHandler.handle(ruleNodePath, databaseName, itemName.get(), entry.getKey(), event); - return true; + int version = Integer.parseInt(event.getValue()); + Optional<AlterRuleItem> alterRuleItem = ruleItemChangedBuilder.build(databaseName, new MetaDataVersion(event.getKey(), version, version), + new RuleItemAlteredBuildExecutor()); + if (alterRuleItem.isPresent()) { + contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(alterRuleItem.get()); } - } - return false; - } - - private boolean handleUniqueRuleItems(final RuleNodePath ruleNodePath, final String databaseName, final DataChangedEvent event) throws SQLException { - for (Entry<String, UniqueRuleItemNodePath> entry : ruleNodePath.getUniqueItems().entrySet()) { - if (entry.getValue().isActiveVersionPath(event.getKey())) { - uniqueRuleItemChangedHandler.handle(ruleNodePath, databaseName, entry.getKey(), event); - return true; + } else if (Type.DELETED == event.getType()) { + Optional<DropRuleItem> dropRuleItem = ruleItemChangedBuilder.build(databaseName, new MetaDataVersion(event.getKey()), + new RuleItemDroppedBuildExecutor()); + if (dropRuleItem.isPresent()) { + contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(dropRuleItem.get()); } } - return false; - } - - private Optional<String> getItemName(final DataChangedEvent event, final NamedRuleItemNodePath ruleItemNodePath) { - if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) { - return ruleItemNodePath.findNameByActiveVersion(event.getKey()); - } - if (Type.DELETED == event.getType()) { - return ruleItemNodePath.findNameByItemPath(event.getKey()); - } - return Optional.empty(); } } diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/NamedRuleItemChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/NamedRuleItemChangedHandler.java deleted file mode 100644 index 68f7a8da07a..00000000000 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/NamedRuleItemChangedHandler.java +++ /dev/null @@ -1,56 +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.manager.cluster.dispatch.handler.database.rule.type; - -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.node.path.config.rule.RuleNodePath; -import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterNamedRuleItem; -import org.apache.shardingsphere.mode.spi.rule.item.drop.DropNamedRuleItem; - -import java.sql.SQLException; - -/** - * Named rule item changed handler. - */ -@RequiredArgsConstructor -public final class NamedRuleItemChangedHandler { - - private final ContextManager contextManager; - - /** - * Handle named rule item changed. - * - * @param ruleNodePath rule node path - * @param databaseName database name - * @param itemName item name - * @param path path - * @param event data changed event - * @throws SQLException SQL Exception - */ - public void handle(final RuleNodePath ruleNodePath, final String databaseName, final String itemName, final String path, final DataChangedEvent event) throws SQLException { - String type = ruleNodePath.getRoot().getRuleType() + "." + path; - if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) { - contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new AlterNamedRuleItem(databaseName, itemName, event.getKey(), Integer.parseInt(event.getValue()), type)); - } else if (Type.DELETED == event.getType()) { - contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(new DropNamedRuleItem(databaseName, itemName, type)); - } - } -} diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/UniqueRuleItemChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/UniqueRuleItemChangedHandler.java deleted file mode 100644 index 5342bcb1ff9..00000000000 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/UniqueRuleItemChangedHandler.java +++ /dev/null @@ -1,55 +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.manager.cluster.dispatch.handler.database.rule.type; - -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.node.path.config.rule.RuleNodePath; -import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterUniqueRuleItem; -import org.apache.shardingsphere.mode.spi.rule.item.drop.DropUniqueRuleItem; - -import java.sql.SQLException; - -/** - * Unique rule item changed handler. - */ -@RequiredArgsConstructor -public final class UniqueRuleItemChangedHandler { - - private final ContextManager contextManager; - - /** - * Handle unique rule item changed. - * - * @param ruleNodePath rule node path - * @param databaseName database name - * @param path path - * @param event data changed event - * @throws SQLException SQL Exception - */ - public void handle(final RuleNodePath ruleNodePath, final String databaseName, final String path, final DataChangedEvent event) throws SQLException { - String type = ruleNodePath.getRoot().getRuleType() + "." + path; - if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) { - contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new AlterUniqueRuleItem(databaseName, event.getKey(), Integer.parseInt(event.getValue()), type)); - } else if (Type.DELETED == event.getType()) { - contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(new DropUniqueRuleItem(databaseName, type)); - } - } -} 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 b01180083cc..00839c4e4c6 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,9 +30,9 @@ import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; 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.manager.standalone.changed.RuleItemChangedBuilder; -import org.apache.shardingsphere.mode.manager.standalone.changed.executor.type.RuleItemAlteredBuildExecutor; -import org.apache.shardingsphere.mode.manager.standalone.changed.executor.type.RuleItemDroppedBuildExecutor; +import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuilder; +import org.apache.shardingsphere.mode.metadata.changed.executor.type.RuleItemAlteredBuildExecutor; +import org.apache.shardingsphere.mode.metadata.changed.executor.type.RuleItemDroppedBuildExecutor; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.factory.MetaDataContextsFactory; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; 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 f03036b59e0..62d166328f0 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.manager.standalone.changed.RuleItemChangedBuilder; +import org.apache.shardingsphere.mode.metadata.changed.RuleItemChangedBuilder; 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;