You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2021/06/01 12:36:15 UTC
[shardingsphere] branch master updated: Merge
DataSourceChangedEvent and DataSourceAlteredEvent (#10608)
This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 7fef4f0 Merge DataSourceChangedEvent and DataSourceAlteredEvent (#10608)
7fef4f0 is described below
commit 7fef4f0c45ee16e690a68c72dc7732598c94752e
Author: Liang Zhang <te...@163.com>
AuthorDate: Tue Jun 1 20:35:29 2021 +0800
Merge DataSourceChangedEvent and DataSourceAlteredEvent (#10608)
* Refactor Watcher
* Merge DataSourceChangedEvent and DataSourceAlteredEvent
* For code format
* For code format
* For code format
---
.../listener/PrivilegeNodeChangedWatcher.java | 7 ++-
.../metadata/GovernanceMetaDataContexts.java | 9 ++--
.../listener/PrivilegeNodeChangedListenerTest.java | 5 +-
.../metadata/GovernanceMetaDataContextsTest.java | 6 +--
.../event/datasource/DataSourceAddedEvent.java | 3 +-
.../event/datasource/DataSourceAlteredEvent.java | 5 +-
.../event/datasource/DataSourceChangedEvent.java | 37 --------------
.../watcher/impl/GlobalRuleChangedWatcher.java | 7 ++-
.../watcher/impl/MetaDataChangedWatcher.java | 57 ++++++++++++----------
.../watcher/impl/PropertiesChangedWatcher.java | 7 ++-
.../watcher/impl/GlobalRuleChangedWatcherTest.java | 3 +-
.../watcher/impl/PropertiesChangedWatcherTest.java | 5 +-
.../api/listener/DataChangedEventListener.java | 2 +-
.../GovernanceShardingSphereDataSourceTest.java | 10 ++--
.../rdl/impl/DropResourceBackendHandler.java | 18 +++----
15 files changed, 71 insertions(+), 110 deletions(-)
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedWatcher.java b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedWatcher.java
index f290f19..f4028c6 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedWatcher.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedWatcher.java
@@ -18,9 +18,8 @@
package org.apache.shardingsphere.governance.context.authority.listener;
import org.apache.shardingsphere.governance.context.authority.listener.event.AuthorityChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.watcher.GovernanceWatcher;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.governance.core.registry.service.state.StatesNode;
+import org.apache.shardingsphere.governance.core.registry.watcher.GovernanceWatcher;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
import org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUsersConfigurationConverter;
@@ -33,7 +32,7 @@ import java.util.Optional;
/**
* Privilege changed watcher.
*/
-public final class PrivilegeNodeChangedWatcher implements GovernanceWatcher<GovernanceEvent> {
+public final class PrivilegeNodeChangedWatcher implements GovernanceWatcher<AuthorityChangedEvent> {
@Override
public Collection<String> getWatchingKeys(final Collection<String> schemaNames) {
@@ -46,7 +45,7 @@ public final class PrivilegeNodeChangedWatcher implements GovernanceWatcher<Gove
}
@Override
- public Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
+ public Optional<AuthorityChangedEvent> createGovernanceEvent(final DataChangedEvent event) {
return Optional.of(new AuthorityChangedEvent(YamlUsersConfigurationConverter.convertShardingSphereUser(YamlEngine.unmarshal(event.getValue(), Collection.class))));
}
}
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
index bf89f7d1..9cfebfe 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
@@ -23,8 +23,9 @@ import org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration
import org.apache.shardingsphere.governance.context.authority.listener.event.AuthorityChangedEvent;
import org.apache.shardingsphere.governance.core.GovernanceFacade;
import org.apache.shardingsphere.governance.core.lock.ShardingSphereDistributeLock;
+import org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchema;
+import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceAlteredEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceChangeCompletedEvent;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.metadata.MetaDataChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.metadata.SchemaAddedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.metadata.SchemaDeletedEvent;
@@ -34,7 +35,6 @@ import org.apache.shardingsphere.governance.core.registry.watcher.event.readwrit
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.GlobalRuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchema;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
@@ -184,8 +184,7 @@ public final class GovernanceMetaDataContexts implements MetaDataContexts {
public synchronized void renew(final SchemaAddedEvent event) throws SQLException {
Map<String, ShardingSphereMetaData> metaDataMap = new HashMap<>(metaDataContexts.getMetaDataMap());
metaDataMap.put(event.getSchemaName(), buildMetaData(event));
- metaDataContexts = new StandardMetaDataContexts(
- metaDataMap, metaDataContexts.getGlobalRuleMetaData(), metaDataContexts.getExecutorEngine(), metaDataContexts.getProps());
+ metaDataContexts = new StandardMetaDataContexts(metaDataMap, metaDataContexts.getGlobalRuleMetaData(), metaDataContexts.getExecutorEngine(), metaDataContexts.getProps());
governanceFacade.getRegistryCenter().getSchemaService().persist(event.getSchemaName(), metaDataContexts.getMetaDataMap().get(event.getSchemaName()).getSchema());
ShardingSphereEventBus.getInstance().post(new DataSourceChangeCompletedEvent(event.getSchemaName(),
metaDataContexts.getMetaDataMap().get(event.getSchemaName()).getResource().getDatabaseType(), metaDataMap.get(event.getSchemaName()).getResource().getDataSources()));
@@ -274,7 +273,7 @@ public final class GovernanceMetaDataContexts implements MetaDataContexts {
* @throws SQLException SQL exception
*/
@Subscribe
- public synchronized void renew(final DataSourceChangedEvent event) throws SQLException {
+ public synchronized void renew(final DataSourceAlteredEvent event) throws SQLException {
String schemaName = event.getSchemaName();
Map<String, ShardingSphereMetaData> newMetaDataMap = new HashMap<>(metaDataContexts.getMetaDataMap());
newMetaDataMap.remove(schemaName);
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedListenerTest.java b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedListenerTest.java
index 315bf35..6c3a10e 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedListenerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/authority/listener/PrivilegeNodeChangedListenerTest.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.governance.context.authority.listener;
import org.apache.shardingsphere.governance.context.authority.listener.event.AuthorityChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
@@ -37,9 +36,9 @@ public final class PrivilegeNodeChangedListenerTest {
@Test
public void assertCreateEvent() {
- Optional<GovernanceEvent> actual = new PrivilegeNodeChangedWatcher().createGovernanceEvent(new DataChangedEvent("test", AUTHENTICATION_YAML, Type.UPDATED));
+ Optional<AuthorityChangedEvent> actual = new PrivilegeNodeChangedWatcher().createGovernanceEvent(new DataChangedEvent("test", AUTHENTICATION_YAML, Type.UPDATED));
assertTrue(actual.isPresent());
- Optional<ShardingSphereUser> user = ((AuthorityChangedEvent) actual.get()).getUsers().stream().filter(each -> each.getGrantee().equals(new Grantee("root1", ""))).findFirst();
+ Optional<ShardingSphereUser> user = actual.get().getUsers().stream().filter(each -> each.getGrantee().equals(new Grantee("root1", ""))).findFirst();
assertTrue(user.isPresent());
assertThat(user.get().getPassword(), is("root1"));
}
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
index c44b5cc..a43cbd5 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
@@ -21,7 +21,8 @@ import org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration
import org.apache.shardingsphere.governance.context.authority.listener.event.AuthorityChangedEvent;
import org.apache.shardingsphere.governance.core.GovernanceFacade;
import org.apache.shardingsphere.governance.core.registry.RegistryCenter;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceChangedEvent;
+import org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchema;
+import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceAlteredEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.metadata.SchemaAddedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.metadata.SchemaDeletedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.props.PropertiesChangedEvent;
@@ -29,7 +30,6 @@ import org.apache.shardingsphere.governance.core.registry.watcher.event.readwrit
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.GlobalRuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchema;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
@@ -186,7 +186,7 @@ public final class GovernanceMetaDataContextsTest {
@Test
public void assertDataSourceChanged() throws SQLException {
- DataSourceChangedEvent event = new DataSourceChangedEvent("schema", getChangedDataSourceConfigurations());
+ DataSourceAlteredEvent event = new DataSourceAlteredEvent("schema", getChangedDataSourceConfigurations());
governanceMetaDataContexts.renew(event);
assertTrue(governanceMetaDataContexts.getMetaData("schema").getResource().getDataSources().containsKey("ds_2"));
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAddedEvent.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAddedEvent.java
index 6640547..ec8b5a7 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAddedEvent.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAddedEvent.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.governance.core.registry.watcher.event.datasou
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import java.util.Map;
@@ -28,7 +29,7 @@ import java.util.Map;
*/
@RequiredArgsConstructor
@Getter
-public final class DataSourceAddedEvent {
+public final class DataSourceAddedEvent implements GovernanceEvent {
private final String schemaName;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAlteredEvent.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAlteredEvent.java
index 2596124..73b305b 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAlteredEvent.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceAlteredEvent.java
@@ -19,8 +19,9 @@ package org.apache.shardingsphere.governance.core.registry.watcher.event.datasou
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-
+import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
+
import java.util.Map;
/**
@@ -28,7 +29,7 @@ import java.util.Map;
*/
@RequiredArgsConstructor
@Getter
-public final class DataSourceAlteredEvent {
+public final class DataSourceAlteredEvent implements GovernanceEvent {
private final String schemaName;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceChangedEvent.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceChangedEvent.java
deleted file mode 100644
index dac9f60..0000000
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/event/datasource/DataSourceChangedEvent.java
+++ /dev/null
@@ -1,37 +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.governance.core.registry.watcher.event.datasource;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-
-import java.util.Map;
-
-/**
- * Data source changed event.
- */
-@RequiredArgsConstructor
-@Getter
-public final class DataSourceChangedEvent implements GovernanceEvent {
-
- private final String schemaName;
-
- private final Map<String, DataSourceConfiguration> dataSourceConfigurations;
-}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcher.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcher.java
index fb1d187..bfbb2db 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcher.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcher.java
@@ -18,10 +18,9 @@
package org.apache.shardingsphere.governance.core.registry.watcher.impl;
import com.google.common.base.Preconditions;
+import org.apache.shardingsphere.governance.core.registry.service.config.node.GlobalNode;
import org.apache.shardingsphere.governance.core.registry.watcher.GovernanceWatcher;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.GlobalRuleConfigurationsChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.service.config.node.GlobalNode;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -36,7 +35,7 @@ import java.util.Optional;
/**
* Global rule changed watcher.
*/
-public final class GlobalRuleChangedWatcher implements GovernanceWatcher<GovernanceEvent> {
+public final class GlobalRuleChangedWatcher implements GovernanceWatcher<GlobalRuleConfigurationsChangedEvent> {
@Override
public Collection<String> getWatchingKeys(final Collection<String> schemaNames) {
@@ -49,7 +48,7 @@ public final class GlobalRuleChangedWatcher implements GovernanceWatcher<Governa
}
@Override
- public Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
+ public Optional<GlobalRuleConfigurationsChangedEvent> createGovernanceEvent(final DataChangedEvent event) {
return Optional.of(new GlobalRuleConfigurationsChangedEvent("", getGlobalRuleConfigurations(event)));
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/MetaDataChangedWatcher.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/MetaDataChangedWatcher.java
index 91b9c44..946293c 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/MetaDataChangedWatcher.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/MetaDataChangedWatcher.java
@@ -20,20 +20,21 @@ package org.apache.shardingsphere.governance.core.registry.watcher.impl;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.apache.shardingsphere.governance.core.registry.cache.CacheNode;
+import org.apache.shardingsphere.governance.core.registry.service.config.node.SchemaMetadataNode;
import org.apache.shardingsphere.governance.core.registry.watcher.GovernanceWatcher;
import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceChangedEvent;
+import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceAlteredEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.metadata.SchemaAddedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.metadata.SchemaDeletedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.RuleConfigurationCachedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.service.config.node.SchemaMetadataNode;
import org.apache.shardingsphere.governance.core.yaml.schema.pojo.YamlSchema;
import org.apache.shardingsphere.governance.core.yaml.schema.swapper.SchemaYamlSwapper;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
+import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import org.apache.shardingsphere.infra.yaml.swapper.YamlDataSourceConfigurationSwapper;
@@ -45,6 +46,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -67,35 +69,39 @@ public final class MetaDataChangedWatcher implements GovernanceWatcher<Governanc
public Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
String schemaName = SchemaMetadataNode.getSchemaNameBySchemaPath(event.getKey());
if (!Strings.isNullOrEmpty(schemaName)) {
- return buildSchemaEvent(schemaName, event);
+ return buildGovernanceEvent(schemaName, event);
}
if (event.getType() != DataChangedEvent.Type.UPDATED) {
return Optional.empty();
}
- return buildSchemaConfigEvent(event);
+ return buildGovernanceEvent(event);
}
- private Optional<GovernanceEvent> buildSchemaEvent(final String schemaName, final DataChangedEvent event) {
+ private Optional<GovernanceEvent> buildGovernanceEvent(final String schemaName, final DataChangedEvent event) {
if (event.getType() == DataChangedEvent.Type.ADDED || event.getType() == DataChangedEvent.Type.UPDATED) {
return Optional.of(new SchemaAddedEvent(schemaName));
- } else if (event.getType() == DataChangedEvent.Type.DELETED) {
+ }
+ if (event.getType() == DataChangedEvent.Type.DELETED) {
return Optional.of(new SchemaDeletedEvent(schemaName));
}
return Optional.empty();
}
-
- private Optional<GovernanceEvent> buildSchemaConfigEvent(final DataChangedEvent event) {
+
+ private Optional<GovernanceEvent> buildGovernanceEvent(final DataChangedEvent event) {
String schemaName = SchemaMetadataNode.getSchemaName(event.getKey());
if (Strings.isNullOrEmpty(schemaName) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
if (isDataSourceChangedEvent(schemaName, event.getKey())) {
- return Optional.of(createDataSourceChangedEvent(schemaName, event));
- } else if (isRuleChangedEvent(schemaName, event.getKey())) {
+ return Optional.of(createDataSourceAlteredEvent(schemaName, event));
+ }
+ if (isRuleChangedEvent(schemaName, event.getKey())) {
return Optional.of(createRuleChangedEvent(schemaName, event));
- } else if (isRuleCachedEvent(schemaName, event.getKey())) {
+ }
+ if (isRuleCachedEvent(schemaName, event.getKey())) {
return Optional.of(new RuleConfigurationCachedEvent(event.getValue(), schemaName));
- } else if (isSchemaChangedEvent(schemaName, event.getKey())) {
+ }
+ if (isSchemaChangedEvent(schemaName, event.getKey())) {
return Optional.of(createSchemaChangedEvent(schemaName, event));
}
return Optional.empty();
@@ -104,41 +110,40 @@ public final class MetaDataChangedWatcher implements GovernanceWatcher<Governanc
private boolean isDataSourceChangedEvent(final String schemaName, final String eventPath) {
return SchemaMetadataNode.getMetadataDataSourcePath(schemaName).equals(eventPath);
}
-
+
@SuppressWarnings("unchecked")
- private DataSourceChangedEvent createDataSourceChangedEvent(final String schemaName, final DataChangedEvent event) {
+ private DataSourceAlteredEvent createDataSourceAlteredEvent(final String schemaName, final DataChangedEvent event) {
Map<String, Map<String, Object>> yamlDataSources = YamlEngine.unmarshal(event.getValue(), Map.class);
- return yamlDataSources.isEmpty() ? new DataSourceChangedEvent(schemaName, new HashMap<>())
- : new DataSourceChangedEvent(schemaName, yamlDataSources.entrySet().stream()
- .collect(Collectors.toMap(Map.Entry::getKey, entry -> new YamlDataSourceConfigurationSwapper()
- .swapToDataSourceConfiguration(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)));
+ Map<String, DataSourceConfiguration> dataSourceConfigs = yamlDataSources.isEmpty() ? new HashMap<>()
+ : yamlDataSources.entrySet().stream().collect(Collectors.toMap(
+ Entry::getKey, entry -> new YamlDataSourceConfigurationSwapper().swapToDataSourceConfiguration(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
+ return new DataSourceAlteredEvent(schemaName, dataSourceConfigs);
}
-
+
private boolean isRuleChangedEvent(final String schemaName, final String eventPath) {
return SchemaMetadataNode.getRulePath(schemaName).equals(eventPath);
}
-
+
private boolean isRuleCachedEvent(final String schemaName, final String key) {
return CacheNode.getCachePath(SchemaMetadataNode.getRulePath(schemaName)).equals(key);
}
-
+
private GovernanceEvent createRuleChangedEvent(final String schemaName, final DataChangedEvent event) {
return new RuleConfigurationsChangedEvent(schemaName, getRuleConfigurations(event.getValue()));
}
-
+
@SuppressWarnings("unchecked")
private Collection<RuleConfiguration> getRuleConfigurations(final String yamlContent) {
Collection<YamlRuleConfiguration> rules = YamlEngine.unmarshal(yamlContent, Collection.class);
Preconditions.checkState(!rules.isEmpty(), "No available rule to load for governance.");
return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(rules);
}
-
+
private boolean isSchemaChangedEvent(final String schemaName, final String key) {
return SchemaMetadataNode.getMetadataSchemaPath(schemaName).equals(key);
}
-
+
private GovernanceEvent createSchemaChangedEvent(final String schemaName, final DataChangedEvent event) {
- return new SchemaChangedEvent(schemaName, new SchemaYamlSwapper()
- .swapToObject(YamlEngine.unmarshal(event.getValue(), YamlSchema.class)));
+ return new SchemaChangedEvent(schemaName, new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlSchema.class)));
}
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcher.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcher.java
index aefd81b..41bac42 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcher.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcher.java
@@ -17,10 +17,9 @@
package org.apache.shardingsphere.governance.core.registry.watcher.impl;
+import org.apache.shardingsphere.governance.core.registry.service.config.node.GlobalNode;
import org.apache.shardingsphere.governance.core.registry.watcher.GovernanceWatcher;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.props.PropertiesChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.service.config.node.GlobalNode;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
@@ -33,7 +32,7 @@ import java.util.Properties;
/**
* Properties changed watcher.
*/
-public final class PropertiesChangedWatcher implements GovernanceWatcher<GovernanceEvent> {
+public final class PropertiesChangedWatcher implements GovernanceWatcher<PropertiesChangedEvent> {
@Override
public Collection<String> getWatchingKeys(final Collection<String> schemaNames) {
@@ -46,7 +45,7 @@ public final class PropertiesChangedWatcher implements GovernanceWatcher<Governa
}
@Override
- public Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
+ public Optional<PropertiesChangedEvent> createGovernanceEvent(final DataChangedEvent event) {
return Optional.of(new PropertiesChangedEvent(YamlEngine.unmarshal(event.getValue(), Properties.class)));
}
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcherTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcherTest.java
index 2b56822..8e9147b 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcherTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/GlobalRuleChangedWatcherTest.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.governance.core.registry.watcher.impl;
import lombok.SneakyThrows;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.GlobalRuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
@@ -39,7 +38,7 @@ public final class GlobalRuleChangedWatcherTest {
@Test
public void assertCreateEvent() {
- Optional<GovernanceEvent> event = new GlobalRuleChangedWatcher().createGovernanceEvent(new DataChangedEvent("rule", readYAML("yaml/authority-rule.yaml"), Type.UPDATED));
+ Optional<GlobalRuleConfigurationsChangedEvent> event = new GlobalRuleChangedWatcher().createGovernanceEvent(new DataChangedEvent("rule", readYAML("yaml/authority-rule.yaml"), Type.UPDATED));
assertTrue(event.isPresent());
assertThat(event.get(), instanceOf(GlobalRuleConfigurationsChangedEvent.class));
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcherTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcherTest.java
index 5514101..2fa1932 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcherTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/watcher/impl/PropertiesChangedWatcherTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.governance.core.registry.watcher.impl;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.GovernanceEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.props.PropertiesChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
@@ -36,8 +35,8 @@ public final class PropertiesChangedWatcherTest {
@Test
public void assertCreateEvent() {
- Optional<GovernanceEvent> actual = new PropertiesChangedWatcher().createGovernanceEvent(new DataChangedEvent("test", PROPERTIES_YAML, Type.UPDATED));
+ Optional<PropertiesChangedEvent> actual = new PropertiesChangedWatcher().createGovernanceEvent(new DataChangedEvent("test", PROPERTIES_YAML, Type.UPDATED));
assertTrue(actual.isPresent());
- assertThat(((PropertiesChangedEvent) actual.get()).getProps().get(ConfigurationPropertyKey.SQL_SHOW.getKey()), is(true));
+ assertThat(actual.get().getProps().get(ConfigurationPropertyKey.SQL_SHOW.getKey()), is(true));
}
}
diff --git a/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-api/src/main/java/org/apache/shardingsphere/governance/repository/api/listener/DataChangedEventListener.java b/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-api/src/main/java/org/apache/shardingsphere/governance/repository/api/listener/DataChangedEventListener.java
index 8742933..5034997 100644
--- a/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-api/src/main/java/org/apache/shardingsphere/governance/repository/api/listener/DataChangedEventListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-api/src/main/java/org/apache/shardingsphere/governance/repository/api/listener/DataChangedEventListener.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.governance.repository.api.listener;
/**
- * Listener for data changed.
+ * Data changed listener.
*/
public interface DataChangedEventListener {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
index dff2835..14b2a1d 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
@@ -21,13 +21,13 @@ import com.google.common.collect.ImmutableMap;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.shardingsphere.driver.governance.api.yaml.YamlGovernanceShardingSphereDataSourceFactory;
import org.apache.shardingsphere.governance.context.metadata.GovernanceMetaDataContexts;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceChangedEvent;
+import org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchema;
+import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceAlteredEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.props.PropertiesChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.registry.watcher.event.readwritesplitting.DisabledStateChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchema;
-import org.apache.shardingsphere.governance.repository.api.config.RegistryCenterConfiguration;
+import org.apache.shardingsphere.governance.core.registry.watcher.event.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration;
+import org.apache.shardingsphere.governance.repository.api.config.RegistryCenterConfiguration;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
@@ -105,7 +105,7 @@ public final class GovernanceShardingSphereDataSourceTest {
@Test
public void assertRenewDataSource() throws SQLException {
- metaDataContexts.renew(new DataSourceChangedEvent(DefaultSchema.LOGIC_NAME, getDataSourceConfigurations()));
+ metaDataContexts.renew(new DataSourceAlteredEvent(DefaultSchema.LOGIC_NAME, getDataSourceConfigurations()));
assertThat(metaDataContexts.getDefaultMetaData().getResource().getDataSources().size(), is(3));
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropResourceBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropResourceBackendHandler.java
index 2176c3f..b10c0f6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropResourceBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropResourceBackendHandler.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.impl.DropResourceStatement;
import org.apache.shardingsphere.governance.core.registry.watcher.event.datasource.DataSourceAlteredEvent;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
@@ -46,7 +45,7 @@ import java.util.stream.Collectors;
* Drop resource backend handler.
*/
public final class DropResourceBackendHandler extends SchemaRequiredBackendHandler<DropResourceStatement> {
-
+
public DropResourceBackendHandler(final DropResourceStatement sqlStatement, final BackendConnection backendConnection) {
super(sqlStatement, backendConnection);
}
@@ -55,8 +54,8 @@ public final class DropResourceBackendHandler extends SchemaRequiredBackendHandl
public ResponseHeader execute(final String schemaName, final DropResourceStatement sqlStatement) {
Collection<String> resourceNames = sqlStatement.getResourceNames();
check(schemaName, resourceNames);
- Map<String, DataSource> resourceMap = drop(schemaName, resourceNames);
- post(schemaName, resourceMap);
+ Map<String, DataSource> dataSources = drop(schemaName, resourceNames);
+ post(schemaName, dataSources);
return new UpdateResponseHeader(sqlStatement);
}
@@ -88,7 +87,7 @@ public final class DropResourceBackendHandler extends SchemaRequiredBackendHandl
throw new ResourceInUsedException(conflictResources);
}
}
-
+
private Set<String> getResources(final DataSourceContainedRule rule) {
Set<String> result = new HashSet<>();
for (Collection<String> each : rule.getDataSourceMapper().values()) {
@@ -96,7 +95,7 @@ public final class DropResourceBackendHandler extends SchemaRequiredBackendHandl
}
return result;
}
-
+
private Set<String> getResources(final DataNodeContainedRule rule) {
Set<String> result = new HashSet<>();
for (Collection<DataNode> each : rule.getAllDataNodes().values()) {
@@ -104,7 +103,7 @@ public final class DropResourceBackendHandler extends SchemaRequiredBackendHandl
}
return result;
}
-
+
private Map<String, DataSource> drop(final String schemaName, final Collection<String> resourceNames) {
Map<String, DataSource> result = ProxyContext.getInstance().getMetaData(schemaName).getResource().getDataSources();
for (String each : resourceNames) {
@@ -113,8 +112,7 @@ public final class DropResourceBackendHandler extends SchemaRequiredBackendHandl
return result;
}
- private void post(final String schemaName, final Map<String, DataSource> resourceMap) {
- Map<String, DataSourceConfiguration> datasourceMap = DataSourceConverter.getDataSourceConfigurationMap(resourceMap);
- ShardingSphereEventBus.getInstance().post(new DataSourceAlteredEvent(schemaName, datasourceMap));
+ private void post(final String schemaName, final Map<String, DataSource> dataSources) {
+ ShardingSphereEventBus.getInstance().post(new DataSourceAlteredEvent(schemaName, DataSourceConverter.getDataSourceConfigurationMap(dataSources)));
}
}