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 2022/04/06 23:50:44 UTC

[shardingsphere] branch master updated: Refactor RequiredSPIRegistry and test cases (#16619)

This is an automated email from the ASF dual-hosted git repository.

zhonghongsheng 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 f5d3a742090 Refactor RequiredSPIRegistry and test cases (#16619)
f5d3a742090 is described below

commit f5d3a742090d6490da789980f53b7db1275b1844
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Apr 7 07:50:24 2022 +0800

    Refactor RequiredSPIRegistry and test cases (#16619)
---
 .../spi/type/required/RequiredSPIRegistry.java     | 22 +++++++-------
 .../spi/type/required/RequiredSPIRegistryTest.java | 35 ++++++++++------------
 .../fixture/RequiredSingletonSPIFixture.java       |  3 +-
 .../EmptyRequiredSPIFixture.java}                  |  4 +--
 .../DefaultMultipleRequiredSPIFixtureImpl.java}    |  4 +--
 .../MultipleRequiredSPIFixture.java}               |  4 +--
 .../NotDefaultMultipleRequiredSPIFixtureImpl.java} |  4 +--
 .../SingleRequiredSPIFixture.java}                 |  5 ++--
 .../SingleRequiredSPIFixtureImpl.java}             |  4 +--
 ...ed.fixture.multiple.MultipleRequiredSPIFixture} |  4 +--
 ...quired.fixture.single.SingleRequiredSPIFixture} |  2 +-
 11 files changed, 45 insertions(+), 46 deletions(-)

diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistry.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistry.java
index 3b901629e2f..1583da8f1fd 100644
--- a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistry.java
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistry.java
@@ -34,24 +34,26 @@ public final class RequiredSPIRegistry {
     /**
      * Get registered service.
      *
-     * @param requiredSPIClass required SPI class
+     * @param spiClass required SPI class
      * @param <T> type
      * @return registered service
      */
-    public static <T extends RequiredSPI> T getRegisteredService(final Class<T> requiredSPIClass) {
-        Collection<T> services;
-        if (SingletonSPI.class.isAssignableFrom(requiredSPIClass)) {
-            ShardingSphereServiceLoader.register(requiredSPIClass);
-            services = ShardingSphereServiceLoader.getSingletonServiceInstances(requiredSPIClass);
-        } else {
-            services = ShardingSphereServiceLoader.newServiceInstances(requiredSPIClass);
-        }
+    public static <T extends RequiredSPI> T getRegisteredService(final Class<T> spiClass) {
+        Collection<T> services = getRegisteredServices(spiClass);
         if (services.isEmpty()) {
-            throw new ServiceProviderNotFoundException(requiredSPIClass);
+            throw new ServiceProviderNotFoundException(spiClass);
         }
         if (1 == services.size()) {
             return services.iterator().next();
         }
         return services.stream().filter(RequiredSPI::isDefault).findFirst().orElseGet(() -> services.iterator().next());
     }
+    
+    private static <T extends RequiredSPI> Collection<T> getRegisteredServices(final Class<T> spiClass) {
+        if (SingletonSPI.class.isAssignableFrom(spiClass)) {
+            ShardingSphereServiceLoader.register(spiClass);
+            return ShardingSphereServiceLoader.getSingletonServiceInstances(spiClass);
+        }
+        return ShardingSphereServiceLoader.newServiceInstances(spiClass);
+    }
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistryTest.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistryTest.java
index 04da06233b9..d024d7feec3 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistryTest.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/RequiredSPIRegistryTest.java
@@ -19,12 +19,13 @@ package org.apache.shardingsphere.spi.type.required;
 
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.spi.exception.ServiceProviderNotFoundException;
-import org.apache.shardingsphere.spi.type.required.fixture.NoImplRequiredSPIFixture;
-import org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIFixture;
-import org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIFixtureDefaultTrueImpl;
-import org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIImpl;
 import org.apache.shardingsphere.spi.type.required.fixture.RequiredSingletonSPIFixture;
 import org.apache.shardingsphere.spi.type.required.fixture.RequiredSingletonSPIFixtureImpl;
+import org.apache.shardingsphere.spi.type.required.fixture.empty.EmptyRequiredSPIFixture;
+import org.apache.shardingsphere.spi.type.required.fixture.multiple.MultipleRequiredSPIFixture;
+import org.apache.shardingsphere.spi.type.required.fixture.multiple.DefaultMultipleRequiredSPIFixtureImpl;
+import org.apache.shardingsphere.spi.type.required.fixture.single.SingleRequiredSPIFixtureImpl;
+import org.apache.shardingsphere.spi.type.required.fixture.single.SingleRequiredSPIFixture;
 import org.junit.Test;
 
 import static org.junit.Assert.assertSame;
@@ -33,34 +34,30 @@ import static org.junit.Assert.assertTrue;
 public final class RequiredSPIRegistryTest {
     
     static {
-        ShardingSphereServiceLoader.register(RequiredSPIFixture.class);
-        ShardingSphereServiceLoader.register(RequiredSPI.class);
+        ShardingSphereServiceLoader.register(EmptyRequiredSPIFixture.class);
+        ShardingSphereServiceLoader.register(SingleRequiredSPIFixture.class);
+        ShardingSphereServiceLoader.register(MultipleRequiredSPIFixture.class);
         ShardingSphereServiceLoader.register(RequiredSingletonSPIFixture.class);
     }
     
     @Test(expected = ServiceProviderNotFoundException.class)
-    public void assertRegisteredServiceNotExisted() {
-        RequiredSPIRegistry.getRegisteredService(NoImplRequiredSPIFixture.class);
+    public void assertRegisteredServiceWithEmptyImplementation() {
+        RequiredSPIRegistry.getRegisteredService(EmptyRequiredSPIFixture.class);
     }
     
     @Test
-    public void assertRegisteredServiceOnlyOne() {
-        RequiredSPI actualRegisteredService = RequiredSPIRegistry.getRegisteredService(RequiredSPI.class);
-        assertTrue(actualRegisteredService instanceof RequiredSPIImpl);
+    public void assertRegisteredServiceWithOneImplementation() {
+        assertTrue(RequiredSPIRegistry.getRegisteredService(SingleRequiredSPIFixture.class) instanceof SingleRequiredSPIFixtureImpl);
     }
     
     @Test
-    public void assertRegisteredServiceMoreThanOne() {
-        RequiredSPIFixture actualRegisteredService = RequiredSPIRegistry.getRegisteredService(RequiredSPIFixture.class);
-        assertTrue(actualRegisteredService instanceof RequiredSPIFixtureDefaultTrueImpl);
+    public void assertRegisteredServiceWithMoreImplementations() {
+        assertTrue(RequiredSPIRegistry.getRegisteredService(MultipleRequiredSPIFixture.class) instanceof DefaultMultipleRequiredSPIFixtureImpl);
     }
     
     @Test
     public void assertRegisteredServiceSingleton() {
-        RequiredSPIFixture actualOne = RequiredSPIRegistry.getRegisteredService(RequiredSingletonSPIFixture.class);
-        assertTrue(actualOne instanceof RequiredSingletonSPIFixtureImpl);
-        RequiredSPIFixture actualTwo = RequiredSPIRegistry.getRegisteredService(RequiredSingletonSPIFixture.class);
-        assertTrue(actualTwo instanceof RequiredSingletonSPIFixtureImpl);
-        assertSame(actualOne, actualTwo);
+        assertTrue(RequiredSPIRegistry.getRegisteredService(RequiredSingletonSPIFixture.class) instanceof RequiredSingletonSPIFixtureImpl);
+        assertSame(RequiredSPIRegistry.getRegisteredService(RequiredSingletonSPIFixture.class), RequiredSPIRegistry.getRegisteredService(RequiredSingletonSPIFixture.class));
     }
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSingletonSPIFixture.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSingletonSPIFixture.java
index 57352de134d..b64c02e46e3 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSingletonSPIFixture.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSingletonSPIFixture.java
@@ -17,7 +17,8 @@
 
 package org.apache.shardingsphere.spi.type.required.fixture;
 
+import org.apache.shardingsphere.spi.type.required.RequiredSPI;
 import org.apache.shardingsphere.spi.type.singleton.SingletonSPI;
 
-public interface RequiredSingletonSPIFixture extends RequiredSPIFixture, SingletonSPI {
+public interface RequiredSingletonSPIFixture extends RequiredSPI, SingletonSPI {
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIImpl.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/empty/EmptyRequiredSPIFixture.java
similarity index 87%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIImpl.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/empty/EmptyRequiredSPIFixture.java
index 4864619674a..bf6ef8ebdc3 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIImpl.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/empty/EmptyRequiredSPIFixture.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.spi.type.required.fixture;
+package org.apache.shardingsphere.spi.type.required.fixture.empty;
 
 import org.apache.shardingsphere.spi.type.required.RequiredSPI;
 
-public final class RequiredSPIImpl implements RequiredSPI {
+public interface EmptyRequiredSPIFixture extends RequiredSPI {
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultTrueImpl.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/DefaultMultipleRequiredSPIFixtureImpl.java
similarity index 84%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultTrueImpl.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/DefaultMultipleRequiredSPIFixtureImpl.java
index 00128348c48..2e3e8659eda 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultTrueImpl.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/DefaultMultipleRequiredSPIFixtureImpl.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.spi.type.required.fixture;
+package org.apache.shardingsphere.spi.type.required.fixture.multiple;
 
-public final class RequiredSPIFixtureDefaultTrueImpl implements RequiredSPIFixture {
+public final class DefaultMultipleRequiredSPIFixtureImpl implements MultipleRequiredSPIFixture {
     
     @Override
     public boolean isDefault() {
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixture.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/MultipleRequiredSPIFixture.java
similarity index 86%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixture.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/MultipleRequiredSPIFixture.java
index 847716679e9..5267f4269b9 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixture.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/MultipleRequiredSPIFixture.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.spi.type.required.fixture;
+package org.apache.shardingsphere.spi.type.required.fixture.multiple;
 
 import org.apache.shardingsphere.spi.type.required.RequiredSPI;
 
-public interface RequiredSPIFixture extends RequiredSPI {
+public interface MultipleRequiredSPIFixture extends RequiredSPI {
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultFalseImpl.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/NotDefaultMultipleRequiredSPIFixtureImpl.java
similarity index 82%
copy from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultFalseImpl.java
copy to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/NotDefaultMultipleRequiredSPIFixtureImpl.java
index 09bd207a7ab..8671d06c541 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultFalseImpl.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/multiple/NotDefaultMultipleRequiredSPIFixtureImpl.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.spi.type.required.fixture;
+package org.apache.shardingsphere.spi.type.required.fixture.multiple;
 
-public final class RequiredSPIFixtureDefaultFalseImpl implements RequiredSPIFixture {
+public final class NotDefaultMultipleRequiredSPIFixtureImpl implements MultipleRequiredSPIFixture {
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/NoImplRequiredSPIFixture.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/single/SingleRequiredSPIFixture.java
similarity index 86%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/NoImplRequiredSPIFixture.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/single/SingleRequiredSPIFixture.java
index 6223fd6dab8..abae8cadabc 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/NoImplRequiredSPIFixture.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/single/SingleRequiredSPIFixture.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.spi.type.required.fixture;
+package org.apache.shardingsphere.spi.type.required.fixture.single;
 
 import org.apache.shardingsphere.spi.type.required.RequiredSPI;
 
-public interface NoImplRequiredSPIFixture extends RequiredSPI {
+public interface SingleRequiredSPIFixture extends RequiredSPI {
 }
-
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultFalseImpl.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/single/SingleRequiredSPIFixtureImpl.java
similarity index 83%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultFalseImpl.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/single/SingleRequiredSPIFixtureImpl.java
index 09bd207a7ab..63dabc75d5e 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/RequiredSPIFixtureDefaultFalseImpl.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/type/required/fixture/single/SingleRequiredSPIFixtureImpl.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.spi.type.required.fixture;
+package org.apache.shardingsphere.spi.type.required.fixture.single;
 
-public final class RequiredSPIFixtureDefaultFalseImpl implements RequiredSPIFixture {
+public final class SingleRequiredSPIFixtureImpl implements SingleRequiredSPIFixture {
 }
diff --git a/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIFixture b/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.multiple.MultipleRequiredSPIFixture
similarity index 79%
rename from shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIFixture
rename to shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.multiple.MultipleRequiredSPIFixture
index baeda947f84..b378be1026c 100644
--- a/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIFixture
+++ b/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.multiple.MultipleRequiredSPIFixture
@@ -15,5 +15,5 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIFixtureDefaultFalseImpl
-org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIFixtureDefaultTrueImpl
+org.apache.shardingsphere.spi.type.required.fixture.multiple.DefaultMultipleRequiredSPIFixtureImpl
+org.apache.shardingsphere.spi.type.required.fixture.multiple.NotDefaultMultipleRequiredSPIFixtureImpl
diff --git a/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.RequiredSPI b/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.single.SingleRequiredSPIFixture
similarity index 89%
rename from shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.RequiredSPI
rename to shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.single.SingleRequiredSPIFixture
index 4c6c8a8e160..1f31904779d 100644
--- a/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.RequiredSPI
+++ b/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.type.required.fixture.single.SingleRequiredSPIFixture
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.spi.type.required.fixture.RequiredSPIImpl
+org.apache.shardingsphere.spi.type.required.fixture.single.SingleRequiredSPIFixtureImpl