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