Skip to content

Commit

Permalink
Rename DatabaseRuleItemManager
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Feb 1, 2025
1 parent 32674ae commit fa99d0f
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.apache.shardingsphere.mode.metadata.manager.rule.DatabaseRuleConfigurationManager;
import org.apache.shardingsphere.mode.metadata.manager.rule.GlobalConfigurationManager;
import org.apache.shardingsphere.mode.metadata.manager.resource.ResourceSwitchManager;
import org.apache.shardingsphere.mode.metadata.manager.rule.RuleItemManager;
import org.apache.shardingsphere.mode.metadata.manager.rule.DatabaseRuleItemManager;
import org.apache.shardingsphere.mode.metadata.manager.statistics.StatisticsManager;
import org.apache.shardingsphere.mode.metadata.manager.resource.StorageUnitManager;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade;
Expand All @@ -48,7 +48,7 @@ public class MetaDataContextManager {

private final DatabaseMetaDataManager databaseMetaDataManager;

private final RuleItemManager ruleItemManager;
private final DatabaseRuleItemManager databaseRuleItemManager;

private final ResourceSwitchManager resourceSwitchManager;

Expand All @@ -67,7 +67,7 @@ public MetaDataContextManager(final MetaDataContexts metaDataContexts, final Com
storageUnitManager = new StorageUnitManager(metaDataContexts, computeNodeInstanceContext, resourceSwitchManager, metaDataPersistFacade);
databaseRuleConfigurationManager = new DatabaseRuleConfigurationManager(metaDataContexts, computeNodeInstanceContext, metaDataPersistFacade);
databaseMetaDataManager = new DatabaseMetaDataManager(metaDataContexts, metaDataPersistFacade);
ruleItemManager = new RuleItemManager(metaDataContexts, databaseRuleConfigurationManager, metaDataPersistFacade);
databaseRuleItemManager = new DatabaseRuleItemManager(metaDataContexts, databaseRuleConfigurationManager, metaDataPersistFacade);
globalConfigurationManager = new GlobalConfigurationManager(metaDataContexts, metaDataPersistFacade);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,25 +30,25 @@
import java.sql.SQLException;

/**
* Rule item manager.
* Database rule item manager.
*/
@RequiredArgsConstructor
public final class RuleItemManager {
public final class DatabaseRuleItemManager {

private final MetaDataContexts metaDataContexts;

private final DatabaseRuleConfigurationManager ruleConfigManager;
private final DatabaseRuleConfigurationManager databaseRuleConfigManager;

private final MetaDataPersistFacade metaDataPersistFacade;

/**
* Alter with rule item.
* Alter rule item.
*
* @param alterRuleItem alter rule item
* @throws SQLException SQL Exception
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public void alterRuleItem(final AlterRuleItem alterRuleItem) throws SQLException {
public void alter(final AlterRuleItem alterRuleItem) throws SQLException {
Preconditions.checkArgument(alterRuleItem.getActiveVersion().equals(metaDataPersistFacade.getRepository().query(alterRuleItem.getActiveVersionKey())),
"Invalid active version: %s of key: %s", alterRuleItem.getActiveVersion(), alterRuleItem.getActiveVersionKey());
RuleItemConfigurationChangedProcessor processor = TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class, alterRuleItem.getType());
Expand All @@ -57,25 +57,25 @@ public void alterRuleItem(final AlterRuleItem alterRuleItem) throws SQLException
RuleConfiguration currentRuleConfig = processor.findRuleConfiguration(metaDataContexts.getMetaData().getDatabase(databaseName));
synchronized (this) {
processor.changeRuleItemConfiguration(alterRuleItem, currentRuleConfig, processor.swapRuleItemConfiguration(alterRuleItem, yamlContent));
ruleConfigManager.alterRuleConfiguration(databaseName, currentRuleConfig);
databaseRuleConfigManager.alterRuleConfiguration(databaseName, currentRuleConfig);
}
}

/**
* Drop with rule item.
* Drop rule item.
*
* @param dropRuleItem drop rule item
* @throws SQLException SQL Exception
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public void dropRuleItem(final DropRuleItem dropRuleItem) throws SQLException {
public void drop(final DropRuleItem dropRuleItem) throws SQLException {
String databaseName = dropRuleItem.getDatabaseName();
Preconditions.checkState(metaDataContexts.getMetaData().containsDatabase(databaseName), "No database '%s' exists.", databaseName);
RuleItemConfigurationChangedProcessor processor = TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class, dropRuleItem.getType());
RuleConfiguration currentRuleConfig = processor.findRuleConfiguration(metaDataContexts.getMetaData().getDatabase(databaseName));
synchronized (this) {
processor.dropRuleItemConfiguration(dropRuleItem, currentRuleConfig);
ruleConfigManager.dropRuleConfiguration(databaseName, currentRuleConfig);
databaseRuleConfigManager.dropRuleConfiguration(databaseName, currentRuleConfig);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ public final class NamedRuleItemChangedHandler {
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().getRuleItemManager().alterRuleItem(new AlterNamedRuleItem(databaseName, itemName, event.getKey(), event.getValue(), type));
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new AlterNamedRuleItem(databaseName, itemName, event.getKey(), event.getValue(), type));
} else if (Type.DELETED == event.getType()) {
contextManager.getMetaDataContextManager().getRuleItemManager().dropRuleItem(new DropNamedRuleItem(databaseName, itemName, type));
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(new DropNamedRuleItem(databaseName, itemName, type));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ public final class UniqueRuleItemChangedHandler {
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().getRuleItemManager().alterRuleItem(new AlterUniqueRuleItem(databaseName, event.getKey(), event.getValue(), type));
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new AlterUniqueRuleItem(databaseName, event.getKey(), event.getValue(), type));
} else if (Type.DELETED == event.getType()) {
contextManager.getMetaDataContextManager().getRuleItemManager().dropRuleItem(new DropUniqueRuleItem(databaseName, type));
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(new DropUniqueRuleItem(databaseName, type));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,64 +65,64 @@ void setUp() {
@Test
void assertHandleWithInvalidPath() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/invalid/rules/fixture", "foo", Type.ADDED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).alterRuleItem(any());
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).dropRuleItem(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).alter(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).drop(any());
}

@Test
void assertHandleWithEmptyValue() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/versions/0", "", Type.ADDED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).alterRuleItem(any());
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).dropRuleItem(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).alter(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).drop(any());
}

@Test
void assertHandleWithPathNotFound() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/versions/0", "foo", Type.ADDED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).alterRuleItem(any());
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).dropRuleItem(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).alter(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).drop(any());
}

@Test
void assertHandleWithIgnoreType() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx/active_version", "foo", Type.IGNORED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).alterRuleItem(any());
verify(contextManager.getMetaDataContextManager().getRuleItemManager(), times(0)).dropRuleItem(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).alter(any());
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager(), times(0)).drop(any());
}

@Test
void assertHandleWithNamedRuleItemAdded() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx/active_version", "foo", Type.ADDED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager()).alterRuleItem(any(AlterNamedRuleItem.class));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterNamedRuleItem.class));
}

@Test
void assertHandleWithNamedRuleItemAltered() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx/active_version", "foo", Type.UPDATED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager()).alterRuleItem(any(AlterNamedRuleItem.class));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterNamedRuleItem.class));
}

@Test
void assertHandleWithNamedRuleItemDropped() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx", "foo", Type.DELETED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager()).dropRuleItem(any(DropNamedRuleItem.class));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).drop(any(DropNamedRuleItem.class));
}

@Test
void assertHandleWithUniqueRuleItemAdded() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/unique/active_version", "foo", Type.ADDED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager()).alterRuleItem(any(AlterUniqueRuleItem.class));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterUniqueRuleItem.class));
}

@Test
void assertHandleWithUniqueRuleItemAltered() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/unique/active_version", "foo", Type.UPDATED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager()).alterRuleItem(any(AlterUniqueRuleItem.class));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterUniqueRuleItem.class));
}

@Test
void assertHandleWithUniqueRuleItemDropped() throws SQLException {
handler.handle("foo_db", new DataChangedEvent("/metadata/fixture/rules/fixture/unique/active_version", "foo", Type.DELETED));
verify(contextManager.getMetaDataContextManager().getRuleItemManager()).dropRuleItem(any(DropUniqueRuleItem.class));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).drop(any(DropUniqueRuleItem.class));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ public void alterRuleConfiguration(final String databaseName, final RuleConfigur
// TODO double check here, when ruleItemEvent not existed or not AlterRuleItemEvent @haoran
Optional<RuleChangedItem> ruleItemChanged = buildRuleChangedItem(databaseName, each, Type.UPDATED);
if (ruleItemChanged.isPresent() && ruleItemChanged.get() instanceof AlterRuleItem) {
metaDataContextManager.getRuleItemManager().alterRuleItem((AlterRuleItem) ruleItemChanged.get());
metaDataContextManager.getDatabaseRuleItemManager().alter((AlterRuleItem) ruleItemChanged.get());
}
}
clearServiceCache();
Expand All @@ -235,7 +235,7 @@ public void removeRuleConfigurationItem(final String databaseName, final RuleCon
Optional<RuleChangedItem> ruleItemChanged = buildRuleChangedItem(databaseName, metaDataVersion, Type.DELETED);
// TODO double check here, when ruleItemEvent not existed or not AlterRuleItemEvent @haoran
if (ruleItemChanged.isPresent() && ruleItemChanged.get() instanceof DropRuleItem) {
metaDataContextManager.getRuleItemManager().dropRuleItem((DropRuleItem) ruleItemChanged.get());
metaDataContextManager.getDatabaseRuleItemManager().drop((DropRuleItem) ruleItemChanged.get());
}
}
clearServiceCache();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ void assertAlterRuleConfiguration() throws SQLException {
setRuleConfigurationEventBuilder(ruleItemChangedBuilder);
metaDataManagerPersistService.alterRuleConfiguration("foo_db", ruleConfig);
verify(metaDataPersistFacade.getMetaDataVersionService()).switchActiveVersion(metaDataVersion);
verify(metaDataContextManager.getRuleItemManager()).alterRuleItem(any(AlterRuleItem.class));
verify(metaDataContextManager.getDatabaseRuleItemManager()).alter(any(AlterRuleItem.class));
}

@Test
Expand All @@ -197,7 +197,7 @@ void assertRemoveRuleConfigurationItem() throws SQLException {
when(ruleItemChangedBuilder.build(eq("foo_db"), any(), any(), any())).thenReturn(Optional.of(dropRuleItem));
setRuleConfigurationEventBuilder(ruleItemChangedBuilder);
metaDataManagerPersistService.removeRuleConfigurationItem("foo_db", ruleConfig);
verify(metaDataContextManager.getRuleItemManager()).dropRuleItem(any(DropRuleItem.class));
verify(metaDataContextManager.getDatabaseRuleItemManager()).drop(any(DropRuleItem.class));
}

@Test
Expand Down

0 comments on commit fa99d0f

Please sign in to comment.