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 8174b3fcdef Remove useless DataNodeBuilder (#33537)
8174b3fcdef is described below

commit 8174b3fcdef699fdf035f3b96ff64a4062a560b3
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Mon Nov 4 18:28:48 2024 +0800

    Remove useless DataNodeBuilder (#33537)
    
    * Remove useless DataNodeBuilder
    
    * Remove useless DataNodeBuilder
---
 .../ReadwriteSplittingDataNodeBuilder.java         | 57 --------------------
 ...e.shardingsphere.infra.datanode.DataNodeBuilder | 18 -------
 .../ReadwriteSplittingDataNodeBuilderTest.java     | 63 ----------------------
 .../shadow/datanode/ShadowDataNodeBuilder.java     | 57 --------------------
 ...e.shardingsphere.infra.datanode.DataNodeBuilder | 18 -------
 .../shadow/datanode/ShadowDataNodeBuilderTest.java | 63 ----------------------
 .../infra/datanode/DataNodeBuilder.java            | 42 ---------------
 .../shardingsphere/infra/datanode/DataNodes.java   | 30 ++++++-----
 .../infra/fixture/DataNodeBuilderFixture.java      | 48 -----------------
 .../schema/util/SchemaMetaDataUtilsTest.java       | 30 ++++++-----
 ...e.shardingsphere.infra.datanode.DataNodeBuilder | 18 -------
 11 files changed, 35 insertions(+), 409 deletions(-)

diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/datanode/ReadwriteSplittingDataNodeBuilder.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/datanode/ReadwriteSplittingDataNodeBuilder.java
deleted file mode 100644
index 135343ecccc..00000000000
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/datanode/ReadwriteSplittingDataNodeBuilder.java
+++ /dev/null
@@ -1,57 +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.readwritesplitting.datanode;
-
-import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.datanode.DataNodeBuilder;
-import org.apache.shardingsphere.infra.datanode.DataNodeUtils;
-import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
-import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingOrder;
-import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Map;
-
-/**
- * Readwrite-splitting data node builder.
- */
-@HighFrequencyInvocation
-public final class ReadwriteSplittingDataNodeBuilder implements 
DataNodeBuilder<ReadwriteSplittingRule> {
-    
-    @Override
-    public Collection<DataNode> build(final Collection<DataNode> dataNodes, 
final ReadwriteSplittingRule rule) {
-        Collection<DataNode> result = new LinkedList<>();
-        Map<String, Collection<String>> dataSourceMapper = 
rule.getAttributes().getAttribute(DataSourceMapperRuleAttribute.class).getDataSourceMapper();
-        for (DataNode each : dataNodes) {
-            result.addAll(DataNodeUtils.buildDataNode(each, dataSourceMapper));
-        }
-        return result;
-    }
-    
-    @Override
-    public int getOrder() {
-        return ReadwriteSplittingOrder.ORDER;
-    }
-    
-    @Override
-    public Class<ReadwriteSplittingRule> getTypeClass() {
-        return ReadwriteSplittingRule.class;
-    }
-}
diff --git 
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
 
b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
deleted file mode 100644
index 7da6f0a0465..00000000000
--- 
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.readwritesplitting.datanode.ReadwriteSplittingDataNodeBuilder
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/datanode/ReadwriteSplittingDataNodeBuilderTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/datanode/ReadwriteSplittingDataNodeBuilderTest.java
deleted file mode 100644
index 5542d5cf9a9..00000000000
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/datanode/ReadwriteSplittingDataNodeBuilderTest.java
+++ /dev/null
@@ -1,63 +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.readwritesplitting.datanode;
-
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.datanode.DataNodeBuilder;
-import org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
-import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
-import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
-import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class ReadwriteSplittingDataNodeBuilderTest {
-    
-    @Mock
-    private ReadwriteSplittingRule rule;
-    
-    @Mock
-    private DataSourceMapperRuleAttribute dataSourceMapperRuleAttribute;
-    
-    private ReadwriteSplittingDataNodeBuilder builder;
-    
-    @BeforeEach
-    void setUp() {
-        
when(dataSourceMapperRuleAttribute.getDataSourceMapper()).thenReturn(Collections.singletonMap("foo_db",
 Arrays.asList("foo_write_db", "foo_read_db")));
-        when(rule.getAttributes()).thenReturn(new 
RuleAttributes(dataSourceMapperRuleAttribute));
-        builder = (ReadwriteSplittingDataNodeBuilder) 
OrderedSPILoader.getServices(DataNodeBuilder.class, 
Collections.singleton(rule)).get(rule);
-    }
-    
-    @Test
-    void assertBuild() {
-        Collection<DataNode> actual = builder.build(Collections.singleton(new 
DataNode("foo_db.foo_tbl")), rule);
-        assertThat(actual, is(Arrays.asList(new 
DataNode("foo_write_db.foo_tbl"), new DataNode("foo_read_db.foo_tbl"))));
-    }
-}
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/datanode/ShadowDataNodeBuilder.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/datanode/ShadowDataNodeBuilder.java
deleted file mode 100644
index 1ebaca50f73..00000000000
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/datanode/ShadowDataNodeBuilder.java
+++ /dev/null
@@ -1,57 +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.shadow.datanode;
-
-import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.datanode.DataNodeBuilder;
-import org.apache.shardingsphere.infra.datanode.DataNodeUtils;
-import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
-import org.apache.shardingsphere.shadow.constant.ShadowOrder;
-import org.apache.shardingsphere.shadow.rule.ShadowRule;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Map;
-
-/**
- * Shadow data node builder.
- */
-@HighFrequencyInvocation
-public final class ShadowDataNodeBuilder implements 
DataNodeBuilder<ShadowRule> {
-    
-    @Override
-    public Collection<DataNode> build(final Collection<DataNode> dataNodes, 
final ShadowRule rule) {
-        Collection<DataNode> result = new LinkedList<>();
-        Map<String, Collection<String>> dataSourceMapper = 
rule.getAttributes().getAttribute(DataSourceMapperRuleAttribute.class).getDataSourceMapper();
-        for (DataNode each : dataNodes) {
-            result.addAll(DataNodeUtils.buildDataNode(each, dataSourceMapper));
-        }
-        return result;
-    }
-    
-    @Override
-    public int getOrder() {
-        return ShadowOrder.ORDER;
-    }
-    
-    @Override
-    public Class<ShadowRule> getTypeClass() {
-        return ShadowRule.class;
-    }
-}
diff --git 
a/features/shadow/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
 
b/features/shadow/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
deleted file mode 100644
index 5d77151e833..00000000000
--- 
a/features/shadow/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.shadow.datanode.ShadowDataNodeBuilder
diff --git 
a/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/datanode/ShadowDataNodeBuilderTest.java
 
b/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/datanode/ShadowDataNodeBuilderTest.java
deleted file mode 100644
index 31427860bab..00000000000
--- 
a/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/datanode/ShadowDataNodeBuilderTest.java
+++ /dev/null
@@ -1,63 +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.shadow.datanode;
-
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.datanode.DataNodeBuilder;
-import org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
-import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
-import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
-import org.apache.shardingsphere.shadow.rule.ShadowRule;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class ShadowDataNodeBuilderTest {
-    
-    @Mock
-    private ShadowRule rule;
-    
-    @Mock
-    private DataSourceMapperRuleAttribute dataSourceMapperRuleAttribute;
-    
-    private ShadowDataNodeBuilder builder;
-    
-    @BeforeEach
-    void setUp() {
-        
when(dataSourceMapperRuleAttribute.getDataSourceMapper()).thenReturn(Collections.singletonMap("foo_db",
 Arrays.asList("foo_prod_db", "foo_shadow_db")));
-        when(rule.getAttributes()).thenReturn(new 
RuleAttributes(dataSourceMapperRuleAttribute));
-        builder = (ShadowDataNodeBuilder) 
OrderedSPILoader.getServices(DataNodeBuilder.class, 
Collections.singleton(rule)).get(rule);
-    }
-    
-    @Test
-    void assertBuild() {
-        Collection<DataNode> actual = builder.build(Collections.singleton(new 
DataNode("foo_db.foo_tbl")), rule);
-        assertThat(actual, is(Arrays.asList(new 
DataNode("foo_prod_db.foo_tbl"), new DataNode("foo_shadow_db.foo_tbl"))));
-    }
-}
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNodeBuilder.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNodeBuilder.java
deleted file mode 100644
index 7e87abd8f65..00000000000
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNodeBuilder.java
+++ /dev/null
@@ -1,42 +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.infra.datanode;
-
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPI;
-
-import java.util.Collection;
-
-/**
- * Data node builder.
- *
- * @param <T> type of rule
- */
-@SingletonSPI
-public interface DataNodeBuilder<T extends ShardingSphereRule> extends 
OrderedSPI<T> {
-    
-    /**
-     * Build data nodes.
-     *
-     * @param dataNodes data nodes
-     * @param rule rule
-     * @return data nodes
-     */
-    Collection<DataNode> build(Collection<DataNode> dataNodes, T rule);
-}
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNodes.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNodes.java
index 44935845d7c..af70785fd3e 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNodes.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNodes.java
@@ -21,12 +21,13 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
-import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
+import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedList;
 import java.util.Map;
-import java.util.Map.Entry;
+import java.util.Optional;
 
 /**
  * Data nodes.
@@ -36,14 +37,6 @@ public final class DataNodes {
     
     private final Collection<ShardingSphereRule> rules;
     
-    @SuppressWarnings("rawtypes")
-    private final Map<ShardingSphereRule, DataNodeBuilder> dataNodeBuilders;
-    
-    public DataNodes(final Collection<ShardingSphereRule> rules) {
-        this.rules = rules;
-        dataNodeBuilders = OrderedSPILoader.getServices(DataNodeBuilder.class, 
rules);
-    }
-    
     /**
      * Get data nodes.
      *
@@ -51,14 +44,16 @@ public final class DataNodes {
      * @return data nodes
      */
     @HighFrequencyInvocation
-    @SuppressWarnings({"unchecked", "rawtypes"})
     public Collection<DataNode> getDataNodes(final String tableName) {
         Collection<DataNode> result = getDataNodesByTableName(tableName);
         if (result.isEmpty()) {
             return result;
         }
-        for (Entry<ShardingSphereRule, DataNodeBuilder> entry : 
dataNodeBuilders.entrySet()) {
-            result = entry.getValue().build(result, entry.getKey());
+        for (ShardingSphereRule each : rules) {
+            Optional<DataSourceMapperRuleAttribute> 
dataSourceMapperRuleAttribute = 
each.getAttributes().findAttribute(DataSourceMapperRuleAttribute.class);
+            if (dataSourceMapperRuleAttribute.isPresent()) {
+                result = buildDataNodes(result, 
dataSourceMapperRuleAttribute.get());
+            }
         }
         return result;
     }
@@ -76,4 +71,13 @@ public final class DataNodes {
     private Collection<DataNode> getDataNodesByTableName(final 
ShardingSphereRule rule, final String tableName) {
         return 
rule.getAttributes().findAttribute(DataNodeRuleAttribute.class).map(optional -> 
optional.getDataNodesByTableName(tableName)).orElse(Collections.emptyList());
     }
+    
+    private Collection<DataNode> buildDataNodes(final Collection<DataNode> 
dataNodes, final DataSourceMapperRuleAttribute dataSourceMapperRuleAttribute) {
+        Collection<DataNode> result = new LinkedList<>();
+        Map<String, Collection<String>> dataSourceMapper = 
dataSourceMapperRuleAttribute.getDataSourceMapper();
+        for (DataNode each : dataNodes) {
+            result.addAll(DataNodeUtils.buildDataNode(each, dataSourceMapper));
+        }
+        return result;
+    }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/fixture/DataNodeBuilderFixture.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/fixture/DataNodeBuilderFixture.java
deleted file mode 100644
index 116942caf0b..00000000000
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/fixture/DataNodeBuilderFixture.java
+++ /dev/null
@@ -1,48 +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.infra.fixture;
-
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.datanode.DataNodeBuilder;
-import org.apache.shardingsphere.infra.datanode.DataNodeUtils;
-import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
-
-import java.util.Collection;
-import java.util.LinkedList;
-
-public final class DataNodeBuilderFixture implements 
DataNodeBuilder<FixtureRule> {
-    
-    @Override
-    public Collection<DataNode> build(final Collection<DataNode> dataNodes, 
final FixtureRule rule) {
-        Collection<DataNode> result = new LinkedList<>();
-        for (DataNode each : dataNodes) {
-            result.addAll(DataNodeUtils.buildDataNode(each, 
rule.getAttributes().getAttribute(DataSourceMapperRuleAttribute.class).getDataSourceMapper()));
-        }
-        return result;
-    }
-    
-    @Override
-    public int getOrder() {
-        return 3;
-    }
-    
-    @Override
-    public Class<FixtureRule> getTypeClass() {
-        return FixtureRule.class;
-    }
-}
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
index 55f51be33f1..b10d3fb333b 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
@@ -47,12 +47,14 @@ class SchemaMetaDataUtilsTest {
     
     @Test
     void assertGetSchemaMetaDataLoaderMaterialsWhenConfigCheckMetaDataEnable() 
{
-        ShardingSphereRule rule = mock(ShardingSphereRule.class);
+        ShardingSphereRule rule0 = mock(ShardingSphereRule.class);
         DataNodeRuleAttribute ruleAttribute = 
mock(DataNodeRuleAttribute.class);
         
when(ruleAttribute.getDataNodesByTableName("t_order")).thenReturn(mockShardingDataNodes());
-        when(rule.getAttributes()).thenReturn(new 
RuleAttributes(ruleAttribute));
-        GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(mock(DatabaseType.class), mockStorageTypes(), 
mockDataSourceMap(),
-                Arrays.asList(rule, mock(ShardingSphereRule.class)), 
mock(ConfigurationProperties.class), "sharding_db");
+        when(rule0.getAttributes()).thenReturn(new 
RuleAttributes(ruleAttribute));
+        ShardingSphereRule rule1 = mock(ShardingSphereRule.class);
+        when(rule1.getAttributes()).thenReturn(new RuleAttributes());
+        GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(
+                mock(DatabaseType.class), mockStorageTypes(), 
mockDataSourceMap(), Arrays.asList(rule0, rule1), 
mock(ConfigurationProperties.class), "sharding_db");
         Collection<MetaDataLoaderMaterial> actual = 
SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("t_order"),
 material, true);
         assertThat(actual.size(), is(2));
         Iterator<MetaDataLoaderMaterial> iterator = actual.iterator();
@@ -66,12 +68,14 @@ class SchemaMetaDataUtilsTest {
     
     @Test
     void 
assertGetSchemaMetaDataLoaderMaterialsWhenNotConfigCheckMetaDataEnable() {
-        ShardingSphereRule rule = mock(ShardingSphereRule.class);
+        ShardingSphereRule rule0 = mock(ShardingSphereRule.class);
         DataNodeRuleAttribute ruleAttribute = 
mock(DataNodeRuleAttribute.class);
         
when(ruleAttribute.getDataNodesByTableName("t_order")).thenReturn(mockShardingDataNodes());
-        when(rule.getAttributes()).thenReturn(new 
RuleAttributes(ruleAttribute));
-        GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(mock(DatabaseType.class), mockStorageTypes(), 
mockDataSourceMap(),
-                Arrays.asList(rule, mock(ShardingSphereRule.class)), 
mock(ConfigurationProperties.class), "sharding_db");
+        when(rule0.getAttributes()).thenReturn(new 
RuleAttributes(ruleAttribute));
+        ShardingSphereRule rule1 = mock(ShardingSphereRule.class);
+        when(rule1.getAttributes()).thenReturn(new RuleAttributes());
+        GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(
+                mock(DatabaseType.class), mockStorageTypes(), 
mockDataSourceMap(), Arrays.asList(rule0, rule1), 
mock(ConfigurationProperties.class), "sharding_db");
         Collection<MetaDataLoaderMaterial> actual = 
SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("t_order"),
 material, false);
         assertThat(actual.size(), is(1));
         Iterator<MetaDataLoaderMaterial> iterator = actual.iterator();
@@ -82,12 +86,14 @@ class SchemaMetaDataUtilsTest {
     
     @Test
     void 
assertGetSchemaMetaDataLoaderMaterialsWhenNotConfigCheckMetaDataEnableForSingleTableDataNode()
 {
-        ShardingSphereRule rule = mock(ShardingSphereRule.class);
+        ShardingSphereRule rule0 = mock(ShardingSphereRule.class);
         DataNodeRuleAttribute ruleAttribute = 
mock(DataNodeRuleAttribute.class);
         
when(ruleAttribute.getDataNodesByTableName("t_single")).thenReturn(mockSingleTableDataNodes());
-        when(rule.getAttributes()).thenReturn(new 
RuleAttributes(ruleAttribute));
-        GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(mock(DatabaseType.class), mockStorageTypes(), 
mockDataSourceMap(),
-                Arrays.asList(rule, mock(ShardingSphereRule.class)), 
mock(ConfigurationProperties.class), "public");
+        when(rule0.getAttributes()).thenReturn(new 
RuleAttributes(ruleAttribute));
+        ShardingSphereRule rule1 = mock(ShardingSphereRule.class);
+        when(rule1.getAttributes()).thenReturn(new RuleAttributes());
+        GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(
+                mock(DatabaseType.class), mockStorageTypes(), 
mockDataSourceMap(), Arrays.asList(rule0, rule1), 
mock(ConfigurationProperties.class), "public");
         Collection<MetaDataLoaderMaterial> actual = 
SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("t_single"),
 material, false);
         assertThat(actual.size(), is(1));
         Iterator<MetaDataLoaderMaterial> iterator = actual.iterator();
diff --git 
a/infra/common/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
 
b/infra/common/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
deleted file mode 100644
index 0db71dc8ee4..00000000000
--- 
a/infra/common/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.datanode.DataNodeBuilder
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.infra.fixture.DataNodeBuilderFixture

Reply via email to