Skip to content

Commit

Permalink
Refactor QualifiedDataSourceChangedHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Jan 4, 2025
1 parent 3fd7097 commit 0ba81d7
Showing 1 changed file with 10 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@

import java.util.Arrays;
import java.util.Collection;
import java.util.Optional;

/**
* Qualified data source changed handler.
Expand All @@ -52,13 +53,18 @@ public Collection<Type> getSubscribedTypes() {

@Override
public void handle(final ContextManager contextManager, final DataChangedEvent event) {
if (!Strings.isNullOrEmpty(event.getValue())) {
QualifiedDataSourceState state = new YamlQualifiedDataSourceStateSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlQualifiedDataSourceState.class));
QualifiedDataSourceNode.extractQualifiedDataSource(event.getKey()).ifPresent(optional -> handle(contextManager.getMetaDataContexts().getMetaData(), optional, state));
if (Strings.isNullOrEmpty(event.getValue())) {
return;
}
Optional<QualifiedDataSource> qualifiedDataSource = QualifiedDataSourceNode.extractQualifiedDataSource(event.getKey());
if (!qualifiedDataSource.isPresent()) {
return;
}
QualifiedDataSourceState state = new YamlQualifiedDataSourceStateSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlQualifiedDataSourceState.class));
handleQualifiedDataSourceStateChanged(contextManager.getMetaDataContexts().getMetaData(), qualifiedDataSource.get(), state);
}

private void handle(final ShardingSphereMetaData metaData, final QualifiedDataSource qualifiedDataSource, final QualifiedDataSourceState state) {
private void handleQualifiedDataSourceStateChanged(final ShardingSphereMetaData metaData, final QualifiedDataSource qualifiedDataSource, final QualifiedDataSourceState state) {
Preconditions.checkState(metaData.containsDatabase(qualifiedDataSource.getDatabaseName()), "No database '%s' exists.", qualifiedDataSource.getDatabaseName());
metaData.getDatabase(qualifiedDataSource.getDatabaseName()).getRuleMetaData().getAttributes(StaticDataSourceRuleAttribute.class)
.forEach(each -> each.updateStatus(qualifiedDataSource, state.getState()));
Expand Down

0 comments on commit 0ba81d7

Please sign in to comment.