You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/04/27 10:37:24 UTC
[shardingsphere] branch master updated: Add RuleBasedSchemaMetaDataBuilderFactory (#17148)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 52b9787e7c3 Add RuleBasedSchemaMetaDataBuilderFactory (#17148)
52b9787e7c3 is described below
commit 52b9787e7c36935e7b6c042fc87c40a4c13a5a73
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Apr 27 18:37:04 2022 +0800
Add RuleBasedSchemaMetaDataBuilderFactory (#17148)
---
.../metadata/EncryptSchemaMetaDataBuilderTest.java | 10 +----
.../ShardingSchemaMetaDataBuilderTest.java | 24 +++++------
.../RuleBasedSchemaMetaDataBuilderFactory.java | 47 ++++++++++++++++++++++
.../schema/builder/TableMetaDataBuilder.java | 10 +----
.../spi/RuleBasedSchemaMetaDataBuilder.java | 2 +-
.../SingleTableSchemaMetaDataBuilderTest.java | 12 ++----
6 files changed, 64 insertions(+), 41 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataBuilderTest.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataBuilderTest.java
index 9cb7997d772..5a6803c39ae 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataBuilderTest.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataBuilderTest.java
@@ -23,15 +23,13 @@ import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.encrypt.spi.context.EncryptColumnDataType;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.schema.builder.RuleBasedSchemaMetaDataBuilderFactory;
import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
-import org.apache.shardingsphere.infra.metadata.schema.builder.spi.RuleBasedSchemaMetaDataBuilder;
import org.apache.shardingsphere.infra.metadata.schema.model.ColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.SchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.singletable.rule.SingleTableRule;
-import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.ordered.OrderedSPIRegistry;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -71,10 +69,6 @@ public final class EncryptSchemaMetaDataBuilderTest {
private static final String TABLE_NAME = "t_encrypt";
- static {
- ShardingSphereServiceLoader.register(RuleBasedSchemaMetaDataBuilder.class);
- }
-
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private DatabaseType databaseType;
@@ -388,6 +382,6 @@ public final class EncryptSchemaMetaDataBuilderTest {
}
private EncryptSchemaMetaDataBuilder getEncryptMetaDataBuilder(final EncryptRule encryptRule, final Collection<ShardingSphereRule> rules) {
- return (EncryptSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(encryptRule);
+ return (EncryptSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(encryptRule);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataBuilderTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataBuilderTest.java
index 39caa515e79..12cdada6fcb 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataBuilderTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataBuilderTest.java
@@ -21,8 +21,8 @@ import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.OracleDatabaseType;
+import org.apache.shardingsphere.infra.metadata.schema.builder.RuleBasedSchemaMetaDataBuilderFactory;
import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
-import org.apache.shardingsphere.infra.metadata.schema.builder.spi.RuleBasedSchemaMetaDataBuilder;
import org.apache.shardingsphere.infra.metadata.schema.model.ColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.SchemaMetaData;
@@ -32,8 +32,6 @@ import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.ordered.OrderedSPIRegistry;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -73,10 +71,6 @@ public class ShardingSchemaMetaDataBuilderTest {
private static final String TABLE_NAME = "t_order";
- static {
- ShardingSphereServiceLoader.register(RuleBasedSchemaMetaDataBuilder.class);
- }
-
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private DatabaseType databaseType;
@@ -255,7 +249,7 @@ public class ShardingSchemaMetaDataBuilderTest {
Collection<String> tableNames = new LinkedList<>();
tableNames.add(TABLE_NAME);
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
Map<String, SchemaMetaData> actual = loader.load(tableNames, shardingRule, new SchemaBuilderMaterials(databaseType, Collections.singletonMap("ds", dataSource), rules, props, "sharding_db"));
assertResult(actual, "sharding_db");
}
@@ -267,7 +261,7 @@ public class ShardingSchemaMetaDataBuilderTest {
Collection<String> tableNames = new LinkedList<>();
tableNames.add(TABLE_NAME);
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
Map<String, SchemaMetaData> actual = loader.load(tableNames, shardingRule, new SchemaBuilderMaterials(databaseType, Collections.singletonMap("ds", dataSource), rules, props, "sharding_db"));
assertResult(actual, "sharding_db");
}
@@ -276,7 +270,7 @@ public class ShardingSchemaMetaDataBuilderTest {
public void assertLoadTablesOracle() throws SQLException {
ShardingRule shardingRule = createShardingRuleForOracle();
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
when(props.getValue(ConfigurationPropertyKey.CHECK_TABLE_METADATA_ENABLED)).thenReturn(false);
DatabaseType databaseType = mock(OracleDatabaseType.class);
when(databaseType.getName()).thenReturn("Oracle");
@@ -305,7 +299,7 @@ public class ShardingSchemaMetaDataBuilderTest {
Collection<String> tableNames = new LinkedList<>();
tableNames.add(TABLE_NAME);
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
ResultSet roleTableGrantsResultSet = mockRoleTableGrantsResultSet();
when(dataSource.getConnection().prepareStatement(startsWith("SELECT table_name FROM information_schema.role_table_grants")).executeQuery()).thenReturn(roleTableGrantsResultSet);
ResultSet schemaMetaData = mockSchemaMetaData();
@@ -335,7 +329,7 @@ public class ShardingSchemaMetaDataBuilderTest {
Collection<String> tableNames = new LinkedList<>();
tableNames.add(TABLE_NAME);
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
Map<String, SchemaMetaData> actual = loader.load(tableNames, shardingRule, new SchemaBuilderMaterials(databaseType, Collections.singletonMap("ds", dataSource), rules, props, "sharding_db"));
assertResult(actual, "sharding_db");
}
@@ -358,7 +352,7 @@ public class ShardingSchemaMetaDataBuilderTest {
Collection<String> tableNames = new LinkedList<>();
tableNames.add(TABLE_NAME);
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
Map<String, SchemaMetaData> actual = loader.load(tableNames, shardingRule, new SchemaBuilderMaterials(databaseType, Collections.singletonMap("ds", dataSource), rules, props, "sharding_db"));
TableMetaData tableMetaData = actual.get("sharding_db").getTables().values().iterator().next();
List<String> actualColumnNames = new ArrayList<>(tableMetaData.getColumns().keySet());
@@ -375,7 +369,7 @@ public class ShardingSchemaMetaDataBuilderTest {
Collection<String> tableNames = new LinkedList<>();
tableNames.add(TABLE_NAME);
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder loader = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
Map<String, SchemaMetaData> actual = loader.load(tableNames, shardingRule, new SchemaBuilderMaterials(databaseType, Collections.singletonMap("ds", dataSource), rules, props, "sharding_db"));
TableMetaData tableMetaData = actual.get("sharding_db").getTables().values().iterator().next();
List<String> actualColumnNames = new ArrayList<>(tableMetaData.getColumns().keySet());
@@ -387,7 +381,7 @@ public class ShardingSchemaMetaDataBuilderTest {
@Test
public void assertDecorateWithKeyGenerateStrategy() throws SQLException {
Collection<ShardingSphereRule> rules = Collections.singletonList(shardingRule);
- ShardingSchemaMetaDataBuilder builder = (ShardingSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(shardingRule);
+ ShardingSchemaMetaDataBuilder builder = (ShardingSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(shardingRule);
Map<String, TableMetaData> tableMetaDataMap = new LinkedHashMap<>();
tableMetaDataMap.put(TABLE_NAME, createTableMetaData());
Map<String, ColumnMetaData> columns = builder.decorate(Collections.singletonMap("sharding_db", new SchemaMetaData("sharding_db", tableMetaDataMap)),
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/RuleBasedSchemaMetaDataBuilderFactory.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/RuleBasedSchemaMetaDataBuilderFactory.java
new file mode 100644
index 00000000000..7631ddfdf07
--- /dev/null
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/RuleBasedSchemaMetaDataBuilderFactory.java
@@ -0,0 +1,47 @@
+/*
+ * 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.infra.metadata.schema.builder;
+
+import org.apache.shardingsphere.infra.metadata.schema.builder.spi.RuleBasedSchemaMetaDataBuilder;
+import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.spi.type.ordered.OrderedSPIRegistry;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Rule based schema meta data builder factory.
+ */
+public final class RuleBasedSchemaMetaDataBuilderFactory {
+
+ static {
+ ShardingSphereServiceLoader.register(RuleBasedSchemaMetaDataBuilder.class);
+ }
+
+ /**
+ * Create new instance of rule based schema meta data builder.
+ *
+ * @param rules ShardingSphere rules
+ * @return new instance of rule based schema meta data builder
+ */
+ @SuppressWarnings("rawtypes")
+ public static Map<ShardingSphereRule, RuleBasedSchemaMetaDataBuilder> newInstance(final Collection<ShardingSphereRule> rules) {
+ return OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules);
+ }
+}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java
index 52d37d5597d..81241c16d73 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java
@@ -23,8 +23,6 @@ import org.apache.shardingsphere.infra.metadata.schema.builder.spi.RuleBasedSche
import org.apache.shardingsphere.infra.metadata.schema.model.SchemaMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.identifier.type.TableContainedRule;
-import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.ordered.OrderedSPIRegistry;
import java.sql.SQLException;
import java.util.Collection;
@@ -39,10 +37,6 @@ import java.util.stream.Collectors;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class TableMetaDataBuilder {
- static {
- ShardingSphereServiceLoader.register(RuleBasedSchemaMetaDataBuilder.class);
- }
-
/**
* Load table metadata.
*
@@ -54,7 +48,7 @@ public final class TableMetaDataBuilder {
@SuppressWarnings({"unchecked", "rawtypes"})
public static Map<String, SchemaMetaData> load(final Collection<String> tableNames, final SchemaBuilderMaterials materials) throws SQLException {
Map<String, SchemaMetaData> result = new LinkedHashMap<>();
- for (Entry<ShardingSphereRule, RuleBasedSchemaMetaDataBuilder> entry : OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, materials.getRules()).entrySet()) {
+ for (Entry<ShardingSphereRule, RuleBasedSchemaMetaDataBuilder> entry : RuleBasedSchemaMetaDataBuilderFactory.newInstance(materials.getRules()).entrySet()) {
if (entry.getKey() instanceof TableContainedRule) {
TableContainedRule rule = (TableContainedRule) entry.getKey();
RuleBasedSchemaMetaDataBuilder<TableContainedRule> builder = entry.getValue();
@@ -79,7 +73,7 @@ public final class TableMetaDataBuilder {
@SuppressWarnings({"unchecked", "rawtypes"})
private static Map<String, SchemaMetaData> decorate(final Map<String, SchemaMetaData> schemaMetaDataMap, final SchemaBuilderMaterials materials) throws SQLException {
Map<String, SchemaMetaData> result = new LinkedHashMap<>(schemaMetaDataMap);
- for (Entry<ShardingSphereRule, RuleBasedSchemaMetaDataBuilder> entry : OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, materials.getRules()).entrySet()) {
+ for (Entry<ShardingSphereRule, RuleBasedSchemaMetaDataBuilder> entry : RuleBasedSchemaMetaDataBuilderFactory.newInstance(materials.getRules()).entrySet()) {
if (!(entry.getKey() instanceof TableContainedRule)) {
continue;
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/spi/RuleBasedSchemaMetaDataBuilder.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/spi/RuleBasedSchemaMetaDataBuilder.java
index 1549f8d4e06..51434743a28 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/spi/RuleBasedSchemaMetaDataBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/spi/RuleBasedSchemaMetaDataBuilder.java
@@ -27,7 +27,7 @@ import java.util.Collection;
import java.util.Map;
/**
- * Schema meta data builder for ShardingSphere rule.
+ * Rule based schema meta data builder.
*
* @param <T> type of ShardingSphere rule
*/
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataBuilderTest.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataBuilderTest.java
index e401dc8a362..d57284f7d40 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataBuilderTest.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataBuilderTest.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.singletable.metadata;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.schema.builder.RuleBasedSchemaMetaDataBuilderFactory;
import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
-import org.apache.shardingsphere.infra.metadata.schema.builder.spi.RuleBasedSchemaMetaDataBuilder;
import org.apache.shardingsphere.infra.metadata.schema.model.ColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.SchemaMetaData;
@@ -28,8 +28,6 @@ import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
import org.apache.shardingsphere.singletable.rule.SingleTableRule;
-import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.ordered.OrderedSPIRegistry;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -61,10 +59,6 @@ import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public final class SingleTableSchemaMetaDataBuilderTest {
- static {
- ShardingSphereServiceLoader.register(RuleBasedSchemaMetaDataBuilder.class);
- }
-
private SingleTableRule singleTableRule;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -122,7 +116,7 @@ public final class SingleTableSchemaMetaDataBuilderTest {
@Test
public void testLoad() throws SQLException {
Collection<ShardingSphereRule> rules = Collections.singletonList(singleTableRule);
- SingleTableSchemaMetaDataBuilder builder = (SingleTableSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(singleTableRule);
+ SingleTableSchemaMetaDataBuilder builder = (SingleTableSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(singleTableRule);
Map<String, SchemaMetaData> actual = builder.load(Collections.singleton("tbl"),
singleTableRule, new SchemaBuilderMaterials(databaseType, Collections.singletonMap("ds", dataSource), rules, props, "sharding_db"));
assertFalse(actual.isEmpty());
@@ -139,7 +133,7 @@ public final class SingleTableSchemaMetaDataBuilderTest {
@Test
public void testDecorate() throws SQLException {
Collection<ShardingSphereRule> rules = Collections.singletonList(singleTableRule);
- final SingleTableSchemaMetaDataBuilder builder = (SingleTableSchemaMetaDataBuilder) OrderedSPIRegistry.getRegisteredServices(RuleBasedSchemaMetaDataBuilder.class, rules).get(singleTableRule);
+ final SingleTableSchemaMetaDataBuilder builder = (SingleTableSchemaMetaDataBuilder) RuleBasedSchemaMetaDataBuilderFactory.newInstance(rules).get(singleTableRule);
Map<String, SchemaMetaData> actual = builder.load(Collections.singleton("tbl"), singleTableRule,
new SchemaBuilderMaterials(databaseType, Collections.singletonMap("ds", dataSource), rules, props, "sharding_db"));
assertFalse(actual.isEmpty());