You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2021/04/13 09:30:09 UTC
[shardingsphere] branch master updated: Refactor drop resource
(#10066)
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 ca57db5 Refactor drop resource (#10066)
ca57db5 is described below
commit ca57db542f308725697413ab72e22d67313f4f44
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Tue Apr 13 17:29:45 2021 +0800
Refactor drop resource (#10066)
---
.../src/main/antlr4/imports/RDLStatement.g4 | 2 +-
.../distsql/parser/api/DistSQLStatementParserEngineTest.java | 12 ++++++++++++
.../listener/metadata/DataSourceChangedListener.java | 11 ++++++++---
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4 b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4
index 0f928e2..8838acf 100644
--- a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4
+++ b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4
@@ -24,7 +24,7 @@ addResource
;
dropResource
- : DROP RESOURCE LP IDENTIFIER (COMMA IDENTIFIER)* RP
+ : DROP RESOURCE IDENTIFIER (COMMA IDENTIFIER)*
;
dataSource
diff --git a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java
index ff663a3..13b7e15 100644
--- a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java
+++ b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java
@@ -19,10 +19,12 @@ package org.apache.shardingsphere.distsql.parser.api;
import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
import org.apache.shardingsphere.distsql.parser.statement.rdl.create.impl.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.impl.DropResourceStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.Test;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
@@ -38,6 +40,8 @@ public final class DistSQLStatementParserEngineTest {
private static final String RDL_ADD_RESOURCE_MULTIPLE = "ADD RESOURCE ds_0(HOST=127.0.0.1,PORT=3306,DB=test0,USER=ROOT,PASSWORD=123456),"
+ "ds_1(HOST=127.0.0.1,PORT=3306,DB=test1,USER=ROOT,PASSWORD=123456);";
+ private static final String RDL_DROP_RESOURCE = "DROP RESOURCE ds_0,ds_1";
+
private final DistSQLStatementParserEngine engine = new DistSQLStatementParserEngine();
@Test
@@ -88,4 +92,12 @@ public final class DistSQLStatementParserEngineTest {
assertThat(dataSourceSegment.getUser(), is("ROOT"));
assertThat(dataSourceSegment.getPassword(), is("123456"));
}
+
+ @Test
+ public void assertParseDropResource() {
+ SQLStatement sqlStatement = engine.parse(RDL_DROP_RESOURCE);
+ assertTrue(sqlStatement instanceof DropResourceStatement);
+ assertThat(((DropResourceStatement) sqlStatement).getResourceNames().size(), is(2));
+ assertTrue(((DropResourceStatement) sqlStatement).getResourceNames().containsAll(Arrays.asList("ds_0", "ds_1")));
+ }
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
index 9d3a0c3..8416879 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.governance.core.registry.listener.metadata;
-import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.apache.shardingsphere.governance.core.event.listener.PostGovernanceRepositoryEventListener;
import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
@@ -30,8 +29,10 @@ import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import org.apache.shardingsphere.infra.yaml.swapper.YamlDataSourceConfigurationSwapper;
import java.util.Collection;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -63,9 +64,13 @@ public final class DataSourceChangedListener extends PostGovernanceRepositoryEve
private DataSourceChangedEvent createDataSourceChangedEvent(final String schemaName, final DataChangedEvent event) {
YamlDataSourceConfigurationWrap result = YamlEngine.unmarshal(event.getValue(), YamlDataSourceConfigurationWrap.class);
- Preconditions.checkState(null != result && !result.getDataSources().isEmpty(), "No available data sources to load for governance.");
- return new DataSourceChangedEvent(schemaName, result.getDataSources().entrySet().stream()
+ return checkDataSourceEvent(result) ? new DataSourceChangedEvent(schemaName, new HashMap<>())
+ : new DataSourceChangedEvent(schemaName, result.getDataSources().entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, entry -> new YamlDataSourceConfigurationSwapper()
.swapToDataSourceConfiguration(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)));
}
+
+ private boolean checkDataSourceEvent(final YamlDataSourceConfigurationWrap warp) {
+ return Objects.isNull(warp) || Objects.isNull(warp.getDataSources()) || warp.getDataSources().isEmpty();
+ }
}