This is an automated email from the ASF dual-hosted git repository. duanzhengqiang pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/shardingsphere-plugin.git
commit 1bfd2c36b99e36014cf7617949511bc2dc22d61d Author: duanzhengqiang <[email protected]> AuthorDate: Mon Sep 25 16:24:29 2023 +0800 Move dbcp and c3p0 datasource pool to shardingsphere plugin --- {feature => features}/encrypt/pom.xml | 2 +- {feature => features}/encrypt/sm/pom.xml | 5 - .../encrypt/sm/algorithm/SM3EncryptAlgorithm.java | 6 +- .../encrypt/sm/algorithm/SM4EncryptAlgorithm.java | 10 +- ...che.shardingsphere.encrypt.spi.EncryptAlgorithm | 0 .../sm/algorithm/SM3EncryptAlgorithmTest.java | 5 +- .../sm/algorithm/SM4EncryptAlgorithmTest.java | 18 ++-- {feature => features}/pom.xml | 2 +- {feature => features}/sharding/cosid/pom.xml | 0 .../cosid/algorithm/CosIdAlgorithmConstants.java | 0 .../keygen/CosIdKeyGenerateAlgorithm.java | 0 .../keygen/CosIdSnowflakeKeyGenerateAlgorithm.java | 0 .../AbstractCosIdIntervalShardingAlgorithm.java | 0 .../interval/CosIdIntervalShardingAlgorithm.java | 0 .../CosIdSnowflakeIntervalShardingAlgorithm.java | 0 .../sharding/mod/CosIdModShardingAlgorithm.java | 0 ...hardingsphere.sharding.spi.KeyGenerateAlgorithm | 0 ...e.shardingsphere.sharding.spi.ShardingAlgorithm | 0 .../keygen/CosIdKeyGenerateAlgorithmTest.java | 0 .../CosIdSnowflakeKeyGenerateAlgorithmTest.java | 0 .../keygen/fixture/WorkerIdGeneratorFixture.java | 0 {feature => features}/sharding/nanoid/pom.xml | 0 .../keygen/NanoIdKeyGenerateAlgorithm.java | 0 ...hardingsphere.sharding.spi.KeyGenerateAlgorithm | 0 .../keygen/NanoIdKeyGenerateAlgorithmTest.java | 0 {feature => features}/sharding/pom.xml | 2 +- .../sm => infra/data-source-pool/c3p0}/pom.xml | 32 +++---- .../metadata/C3P0DataSourcePoolFieldMetaData.java | 22 +++-- .../c3p0/metadata/C3P0DataSourcePoolMetaData.java | 103 +++++++++++++++++++++ ...datasource.pool.metadata.DataSourcePoolMetaData | 2 +- .../creator/C3P0DataSourcePoolCreatorTest.java | 61 ++++++++++++ .../sm => infra/data-source-pool/dbcp}/pom.xml | 32 +++---- .../metadata/DBCPDataSourcePoolFieldMetaData.java | 22 +++-- .../dbcp/metadata/DBCPDataSourcePoolMetaData.java | 77 +++++++++++++++ ...datasource.pool.metadata.DataSourcePoolMetaData | 2 +- .../creator/DBCPDataSourcePoolCreatorTest.java | 66 +++++++++++++ .../encrypt => infra/data-source-pool}/pom.xml | 7 +- {feature => infra}/pom.xml | 5 +- pom.xml | 9 +- 39 files changed, 394 insertions(+), 96 deletions(-) diff --git a/feature/encrypt/pom.xml b/features/encrypt/pom.xml similarity index 95% copy from feature/encrypt/pom.xml copy to features/encrypt/pom.xml index 30066ce..b8be577 100644 --- a/feature/encrypt/pom.xml +++ b/features/encrypt/pom.xml @@ -20,7 +20,7 @@ <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-plugin-feature</artifactId> + <artifactId>shardingsphere-plugin-features</artifactId> <version>5.4.1-SNAPSHOT</version> </parent> <artifactId>shardingsphere-plugin-feature-encrypt</artifactId> diff --git a/feature/encrypt/sm/pom.xml b/features/encrypt/sm/pom.xml similarity index 95% copy from feature/encrypt/sm/pom.xml copy to features/encrypt/sm/pom.xml index 6413797..236ca37 100644 --- a/feature/encrypt/sm/pom.xml +++ b/features/encrypt/sm/pom.xml @@ -50,11 +50,6 @@ <artifactId>commons-codec</artifactId> <version>${commons-codec.version}</version> </dependency> - - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - </dependency> </dependencies> <build> diff --git a/feature/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithm.java b/features/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithm.java similarity index 97% rename from feature/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithm.java rename to features/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithm.java index 33317c0..d930d2c 100644 --- a/feature/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithm.java +++ b/features/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithm.java @@ -19,9 +19,9 @@ package org.apache.shardingsphere.encrypt.sm.algorithm; import lombok.EqualsAndHashCode; import org.apache.commons.codec.binary.Hex; +import org.apache.shardingsphere.encrypt.api.context.EncryptContext; import org.apache.shardingsphere.encrypt.api.encrypt.standard.StandardEncryptAlgorithm; import org.apache.shardingsphere.encrypt.exception.algorithm.EncryptAlgorithmInitializationException; -import org.apache.shardingsphere.encrypt.api.context.EncryptContext; import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; import org.bouncycastle.crypto.digests.SM3Digest; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -34,7 +34,7 @@ import java.util.Properties; * SM3 encrypt algorithm. */ @EqualsAndHashCode -public final class SM3EncryptAlgorithm implements StandardEncryptAlgorithm<Object, String> { +public final class SM3EncryptAlgorithm implements StandardEncryptAlgorithm { static { Security.addProvider(new BouncyCastleProvider()); @@ -64,7 +64,7 @@ public final class SM3EncryptAlgorithm implements StandardEncryptAlgorithm<Objec } @Override - public Object decrypt(final String cipherValue, final EncryptContext encryptContext) { + public Object decrypt(final Object cipherValue, final EncryptContext encryptContext) { return cipherValue; } diff --git a/feature/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java b/features/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java similarity index 96% rename from feature/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java rename to features/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java index 61035f1..dd12653 100644 --- a/feature/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java +++ b/features/encrypt/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java @@ -21,9 +21,9 @@ import lombok.EqualsAndHashCode; import lombok.SneakyThrows; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; +import org.apache.shardingsphere.encrypt.api.context.EncryptContext; import org.apache.shardingsphere.encrypt.api.encrypt.standard.StandardEncryptAlgorithm; import org.apache.shardingsphere.encrypt.exception.algorithm.EncryptAlgorithmInitializationException; -import org.apache.shardingsphere.encrypt.api.context.EncryptContext; import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -42,7 +42,7 @@ import java.util.Set; * SM4 encrypt algorithm. */ @EqualsAndHashCode -public final class SM4EncryptAlgorithm implements StandardEncryptAlgorithm<Object, String> { +public final class SM4EncryptAlgorithm implements StandardEncryptAlgorithm { static { Security.addProvider(new BouncyCastleProvider()); @@ -113,7 +113,7 @@ public final class SM4EncryptAlgorithm implements StandardEncryptAlgorithm<Objec } @Override - public String encrypt(final Object plainValue, final EncryptContext encryptContext) { + public Object encrypt(final Object plainValue, final EncryptContext encryptContext) { return null == plainValue ? null : Hex.encodeHexString(encrypt(String.valueOf(plainValue).getBytes(StandardCharsets.UTF_8))); } @@ -122,8 +122,8 @@ public final class SM4EncryptAlgorithm implements StandardEncryptAlgorithm<Objec } @Override - public Object decrypt(final String cipherValue, final EncryptContext encryptContext) { - return null == cipherValue ? null : new String(decrypt(fromHexString(cipherValue)), StandardCharsets.UTF_8); + public Object decrypt(final Object cipherValue, final EncryptContext encryptContext) { + return null == cipherValue ? null : new String(decrypt(fromHexString(String.valueOf(cipherValue))), StandardCharsets.UTF_8); } private byte[] decrypt(final byte[] cipherValue) { diff --git a/feature/encrypt/sm/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm b/features/encrypt/sm/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm similarity index 100% rename from feature/encrypt/sm/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm rename to features/encrypt/sm/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm diff --git a/feature/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithmTest.java b/features/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithmTest.java similarity index 92% rename from feature/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithmTest.java rename to features/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithmTest.java index f17a43b..d76a9f4 100644 --- a/feature/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithmTest.java +++ b/features/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM3EncryptAlgorithmTest.java @@ -33,14 +33,13 @@ import static org.mockito.Mockito.mock; class SM3EncryptAlgorithmTest { - private StandardEncryptAlgorithm<Object, String> encryptAlgorithm; + private StandardEncryptAlgorithm encryptAlgorithm; - @SuppressWarnings("unchecked") @BeforeEach void setUp() { Properties props = new Properties(); props.put("sm3-salt", "test1234"); - encryptAlgorithm = (StandardEncryptAlgorithm<Object, String>) TypedSPILoader.getService(EncryptAlgorithm.class, "SM3", props); + encryptAlgorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "SM3", props); } @Test diff --git a/feature/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithmTest.java b/features/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithmTest.java similarity index 72% rename from feature/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithmTest.java rename to features/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithmTest.java index b9b815a..bc1b6b3 100644 --- a/feature/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithmTest.java +++ b/features/encrypt/sm/src/test/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithmTest.java @@ -42,31 +42,27 @@ class SM4EncryptAlgorithmTest { assertThrows(EncryptAlgorithmInitializationException.class, () -> TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", props)); } - @SuppressWarnings("unchecked") @Test void assertEncryptNullValue() { - StandardEncryptAlgorithm<Object, String> algorithm = (StandardEncryptAlgorithm<Object, String>) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); + StandardEncryptAlgorithm algorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); assertNull(algorithm.encrypt(null, mock(EncryptContext.class))); } - @SuppressWarnings("unchecked") @Test void assertEncryptWithECBMode() { - StandardEncryptAlgorithm<Object, String> algorithm = (StandardEncryptAlgorithm<Object, String>) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); + StandardEncryptAlgorithm algorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); assertThat(algorithm.encrypt("test", mock(EncryptContext.class)), is("028654f2ca4f575dee9e1faae85dadde")); } - @SuppressWarnings("unchecked") @Test void assertDecryptNullValue() { - StandardEncryptAlgorithm<Object, String> algorithm = (StandardEncryptAlgorithm<Object, String>) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); + StandardEncryptAlgorithm algorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); assertNull(algorithm.decrypt(null, mock(EncryptContext.class))); } - @SuppressWarnings("unchecked") @Test void assertDecryptWithECBMode() { - StandardEncryptAlgorithm<Object, String> algorithm = (StandardEncryptAlgorithm<Object, String>) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); + StandardEncryptAlgorithm algorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createECBProperties()); assertThat(algorithm.decrypt("028654f2ca4f575dee9e1faae85dadde", mock(EncryptContext.class)).toString(), is("test")); } @@ -78,17 +74,15 @@ class SM4EncryptAlgorithmTest { return result; } - @SuppressWarnings("unchecked") @Test void assertEncryptWithCBCMode() { - StandardEncryptAlgorithm<Object, String> algorithm = (StandardEncryptAlgorithm<Object, String>) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createCBCProperties()); + StandardEncryptAlgorithm algorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createCBCProperties()); assertThat(algorithm.encrypt("test", mock(EncryptContext.class)), is("dca2127b57ba8cac36a0914e0208dc11")); } - @SuppressWarnings("unchecked") @Test void assertDecrypt() { - StandardEncryptAlgorithm<Object, String> algorithm = (StandardEncryptAlgorithm<Object, String>) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createCBCProperties()); + StandardEncryptAlgorithm algorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "SM4", createCBCProperties()); assertThat(algorithm.decrypt("dca2127b57ba8cac36a0914e0208dc11", mock(EncryptContext.class)).toString(), is("test")); } diff --git a/feature/pom.xml b/features/pom.xml similarity index 96% copy from feature/pom.xml copy to features/pom.xml index e9d45e9..4129810 100644 --- a/feature/pom.xml +++ b/features/pom.xml @@ -23,7 +23,7 @@ <artifactId>shardingsphere-plugin</artifactId> <version>5.4.1-SNAPSHOT</version> </parent> - <artifactId>shardingsphere-plugin-feature</artifactId> + <artifactId>shardingsphere-plugin-features</artifactId> <packaging>pom</packaging> <name>${project.artifactId}</name> diff --git a/feature/sharding/cosid/pom.xml b/features/sharding/cosid/pom.xml similarity index 100% rename from feature/sharding/cosid/pom.xml rename to features/sharding/cosid/pom.xml diff --git a/feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/CosIdAlgorithmConstants.java b/features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/CosIdAlgorithmConstants.java similarity index 100% rename from feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/CosIdAlgorithmConstants.java rename to features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/CosIdAlgorithmConstants.java diff --git a/feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithm.java b/features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithm.java similarity index 100% rename from feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithm.java rename to features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithm.java diff --git a/feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java b/features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java similarity index 100% rename from feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java rename to features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java diff --git a/feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java b/features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java similarity index 100% rename from feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java rename to features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java diff --git a/feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdIntervalShardingAlgorithm.java b/features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdIntervalShardingAlgorithm.java similarity index 100% rename from feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdIntervalShardingAlgorithm.java rename to features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdIntervalShardingAlgorithm.java diff --git a/feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java b/features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java similarity index 100% rename from feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java rename to features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java diff --git a/feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java b/features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java similarity index 100% rename from feature/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java rename to features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java diff --git a/feature/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm b/features/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm similarity index 100% rename from feature/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm rename to features/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm diff --git a/feature/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm b/features/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm similarity index 100% rename from feature/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm rename to features/sharding/cosid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm diff --git a/feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithmTest.java b/features/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithmTest.java similarity index 100% rename from feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithmTest.java rename to features/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdKeyGenerateAlgorithmTest.java diff --git a/feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java b/features/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java similarity index 100% rename from feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java rename to features/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java diff --git a/feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java b/features/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java similarity index 100% copy from feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java copy to features/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java diff --git a/feature/sharding/nanoid/pom.xml b/features/sharding/nanoid/pom.xml similarity index 100% rename from feature/sharding/nanoid/pom.xml rename to features/sharding/nanoid/pom.xml diff --git a/feature/sharding/nanoid/src/main/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithm.java b/features/sharding/nanoid/src/main/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithm.java similarity index 100% rename from feature/sharding/nanoid/src/main/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithm.java rename to features/sharding/nanoid/src/main/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithm.java diff --git a/feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm b/features/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm similarity index 100% copy from feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm copy to features/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm diff --git a/feature/sharding/nanoid/src/test/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithmTest.java b/features/sharding/nanoid/src/test/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithmTest.java similarity index 100% rename from feature/sharding/nanoid/src/test/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithmTest.java rename to features/sharding/nanoid/src/test/java/org/apache/shardingsphere/sharding/nanoid/algorithm/keygen/NanoIdKeyGenerateAlgorithmTest.java diff --git a/feature/sharding/pom.xml b/features/sharding/pom.xml similarity index 95% rename from feature/sharding/pom.xml rename to features/sharding/pom.xml index 9eb1de1..c59a67f 100644 --- a/feature/sharding/pom.xml +++ b/features/sharding/pom.xml @@ -20,7 +20,7 @@ <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-plugin-feature</artifactId> + <artifactId>shardingsphere-plugin-features</artifactId> <version>5.4.1-SNAPSHOT</version> </parent> <artifactId>shardingsphere-plugin-feature-sharding</artifactId> diff --git a/feature/encrypt/sm/pom.xml b/infra/data-source-pool/c3p0/pom.xml similarity index 75% copy from feature/encrypt/sm/pom.xml copy to infra/data-source-pool/c3p0/pom.xml index 6413797..e6dfa55 100644 --- a/feature/encrypt/sm/pom.xml +++ b/infra/data-source-pool/c3p0/pom.xml @@ -20,40 +20,36 @@ <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-plugin-feature-encrypt</artifactId> + <artifactId>shardingsphere-plugin-infra-data-source-pool</artifactId> <version>5.4.1-SNAPSHOT</version> </parent> - <artifactId>shardingsphere-plugin-feature-encrypt-sm</artifactId> + <artifactId>shardingsphere-plugin-infra-data-source-pool-c3p0</artifactId> <name>${project.artifactId}</name> <dependencies> <dependency> <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-encrypt-api</artifactId> + <artifactId>shardingsphere-infra-data-source-pool-core</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-encrypt-core</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>org.bouncycastle</groupId> - <artifactId>bcprov-jdk15on</artifactId> - <version>${bouncycastle.version}</version> + <groupId>com.mchange</groupId> + <artifactId>c3p0</artifactId> + <version>${c3p0.version}</version> </dependency> <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>${commons-codec.version}</version> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-test-fixture-database</artifactId> + <version>${project.version}</version> + <scope>test</scope> </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-test-util</artifactId> + <version>${project.version}</version> + <scope>test</scope> </dependency> </dependencies> diff --git a/feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java b/infra/data-source-pool/c3p0/src/main/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/metadata/C3P0DataSourcePoolFieldMetaData.java similarity index 63% copy from feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java copy to infra/data-source-pool/c3p0/src/main/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/metadata/C3P0DataSourcePoolFieldMetaData.java index 1587f46..959e61c 100644 --- a/feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java +++ b/infra/data-source-pool/c3p0/src/main/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/metadata/C3P0DataSourcePoolFieldMetaData.java @@ -15,20 +15,22 @@ * limitations under the License. */ -package org.apache.shardingsphere.sharding.cosid.algorithm.keygen.fixture; +package org.apache.shardingsphere.infra.datasource.pool.c3p0.metadata; -import lombok.RequiredArgsConstructor; -import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator; +import org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolFieldMetaData; -import java.util.Properties; - -@RequiredArgsConstructor -public final class WorkerIdGeneratorFixture implements WorkerIdGenerator { +/** + * C3P0 data source pool field meta data. + */ +public final class C3P0DataSourcePoolFieldMetaData implements DataSourcePoolFieldMetaData { - private final int fixtureWorkerId; + @Override + public String getJdbcUrlFieldName() { + return "jdbcUrl"; + } @Override - public int generate(final Properties props) { - return fixtureWorkerId; + public String getJdbcUrlPropertiesFieldName() { + return "properties"; } } diff --git a/infra/data-source-pool/c3p0/src/main/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/metadata/C3P0DataSourcePoolMetaData.java b/infra/data-source-pool/c3p0/src/main/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/metadata/C3P0DataSourcePoolMetaData.java new file mode 100644 index 0000000..66027a8 --- /dev/null +++ b/infra/data-source-pool/c3p0/src/main/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/metadata/C3P0DataSourcePoolMetaData.java @@ -0,0 +1,103 @@ +/* + * 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.datasource.pool.c3p0.metadata; + +import org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData; + +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; + +/** + * C3P0 data source pool meta data. + */ +public final class C3P0DataSourcePoolMetaData implements DataSourcePoolMetaData { + + private static final Map<String, Object> DEFAULT_PROPS = new HashMap<>(6, 1F); + + private static final Map<String, Object> SKIPPED_PROPS = new HashMap<>(2, 1F); + + private static final Map<String, String> PROP_SYNONYMS = new HashMap<>(5, 1F); + + private static final Collection<String> TRANSIENT_FIELD_NAMES = new LinkedList<>(); + + static { + buildDefaultProperties(); + buildInvalidProperties(); + buildPropertySynonyms(); + buildTransientFieldNames(); + } + + private static void buildDefaultProperties() { + DEFAULT_PROPS.put("checkoutTimeout", 20 * 1000L); + DEFAULT_PROPS.put("maxIdleTime", 60 * 1000L); + DEFAULT_PROPS.put("maxIdleTimeExcessConnections", 30 * 70 * 1000L); + DEFAULT_PROPS.put("maxPoolSize", 15); + DEFAULT_PROPS.put("minPoolSize", 3); + DEFAULT_PROPS.put("readOnly", false); + } + + private static void buildInvalidProperties() { + SKIPPED_PROPS.put("minPoolSize", -1); + SKIPPED_PROPS.put("maxPoolSize", -1); + } + + private static void buildPropertySynonyms() { + PROP_SYNONYMS.put("username", "user"); + PROP_SYNONYMS.put("url", "jdbcUrl"); + PROP_SYNONYMS.put("connectionTimeoutMilliseconds", "checkoutTimeout"); + PROP_SYNONYMS.put("idleTimeoutMilliseconds", "maxIdleTime"); + PROP_SYNONYMS.put("maxLifetimeMilliseconds", "maxIdleTimeExcessConnections"); + } + + private static void buildTransientFieldNames() { + TRANSIENT_FIELD_NAMES.add("running"); + TRANSIENT_FIELD_NAMES.add("closed"); + } + + @Override + public Map<String, Object> getDefaultProperties() { + return DEFAULT_PROPS; + } + + @Override + public Map<String, Object> getSkippedProperties() { + return SKIPPED_PROPS; + } + + @Override + public Map<String, String> getPropertySynonyms() { + return PROP_SYNONYMS; + } + + @Override + public Collection<String> getTransientFieldNames() { + return TRANSIENT_FIELD_NAMES; + } + + @Override + public C3P0DataSourcePoolFieldMetaData getFieldMetaData() { + return new C3P0DataSourcePoolFieldMetaData(); + } + + @Override + public String getType() { + return "com.mchange.v2.c3p0.ComboPooledDataSource"; + } +} diff --git a/feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm b/infra/data-source-pool/c3p0/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData similarity index 89% copy from feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm copy to infra/data-source-pool/c3p0/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData index 759153d..7aaac6f 100644 --- a/feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm +++ b/infra/data-source-pool/c3p0/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData @@ -15,4 +15,4 @@ # limitations under the License. # -org.apache.shardingsphere.sharding.nanoid.algorithm.keygen.NanoIdKeyGenerateAlgorithm +org.apache.shardingsphere.infra.datasource.pool.c3p0.metadata.C3P0DataSourcePoolMetaData diff --git a/infra/data-source-pool/c3p0/src/test/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/creator/C3P0DataSourcePoolCreatorTest.java b/infra/data-source-pool/c3p0/src/test/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/creator/C3P0DataSourcePoolCreatorTest.java new file mode 100644 index 0000000..7e4e2f5 --- /dev/null +++ b/infra/data-source-pool/c3p0/src/test/java/org/apache/shardingsphere/infra/datasource/pool/c3p0/creator/C3P0DataSourcePoolCreatorTest.java @@ -0,0 +1,61 @@ +/* + * 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.datasource.pool.c3p0.creator; + +import com.mchange.v2.c3p0.ComboPooledDataSource; +import org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator; +import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; +import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +class C3P0DataSourcePoolCreatorTest { + + @Test + void assertCreateDataSource() { + ComboPooledDataSource actual = (ComboPooledDataSource) DataSourcePoolCreator.create(new DataSourcePoolProperties(ComboPooledDataSource.class.getName(), createDataSourcePoolProperties())); + assertThat(actual.getJdbcUrl(), is("jdbc:mock://127.0.0.1/foo_ds")); + assertThat(actual.getUser(), is("root")); + assertThat(actual.getPassword(), is("root")); + Properties props = new Properties(); + props.put("foo", "foo_value"); + props.put("bar", "bar_value"); + props.put("password", "root"); + props.put("user", "root"); + assertThat(actual.getProperties(), is(props)); + } + + private Map<String, Object> createDataSourcePoolProperties() { + Map<String, Object> result = new HashMap<>(); + result.put("url", "jdbc:mock://127.0.0.1/foo_ds"); + result.put("driverClassName", MockedDataSource.class.getName()); + result.put("username", "root"); + result.put("password", "root"); + Properties props = new Properties(); + props.put("foo", "foo_value"); + props.put("bar", "bar_value"); + result.put("properties", props); + return result; + } +} diff --git a/feature/encrypt/sm/pom.xml b/infra/data-source-pool/dbcp/pom.xml similarity index 75% rename from feature/encrypt/sm/pom.xml rename to infra/data-source-pool/dbcp/pom.xml index 6413797..12abfe0 100644 --- a/feature/encrypt/sm/pom.xml +++ b/infra/data-source-pool/dbcp/pom.xml @@ -20,40 +20,36 @@ <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-plugin-feature-encrypt</artifactId> + <artifactId>shardingsphere-plugin-infra-data-source-pool</artifactId> <version>5.4.1-SNAPSHOT</version> </parent> - <artifactId>shardingsphere-plugin-feature-encrypt-sm</artifactId> + <artifactId>shardingsphere-plugin-infra-data-source-pool-dbcp</artifactId> <name>${project.artifactId}</name> <dependencies> <dependency> <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-encrypt-api</artifactId> + <artifactId>shardingsphere-infra-data-source-pool-core</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-encrypt-core</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>org.bouncycastle</groupId> - <artifactId>bcprov-jdk15on</artifactId> - <version>${bouncycastle.version}</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-dbcp2</artifactId> + <version>${commons-dbcp2.version}</version> </dependency> <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>${commons-codec.version}</version> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-test-fixture-database</artifactId> + <version>${project.version}</version> + <scope>test</scope> </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-test-util</artifactId> + <version>${project.version}</version> + <scope>test</scope> </dependency> </dependencies> diff --git a/feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java b/infra/data-source-pool/dbcp/src/main/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/metadata/DBCPDataSourcePoolFieldMetaData.java similarity index 63% rename from feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java rename to infra/data-source-pool/dbcp/src/main/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/metadata/DBCPDataSourcePoolFieldMetaData.java index 1587f46..cec9416 100644 --- a/feature/sharding/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/fixture/WorkerIdGeneratorFixture.java +++ b/infra/data-source-pool/dbcp/src/main/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/metadata/DBCPDataSourcePoolFieldMetaData.java @@ -15,20 +15,22 @@ * limitations under the License. */ -package org.apache.shardingsphere.sharding.cosid.algorithm.keygen.fixture; +package org.apache.shardingsphere.infra.datasource.pool.dbcp.metadata; -import lombok.RequiredArgsConstructor; -import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator; +import org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolFieldMetaData; -import java.util.Properties; - -@RequiredArgsConstructor -public final class WorkerIdGeneratorFixture implements WorkerIdGenerator { +/** + * DBCP data source pool field meta data. + */ +public final class DBCPDataSourcePoolFieldMetaData implements DataSourcePoolFieldMetaData { - private final int fixtureWorkerId; + @Override + public String getJdbcUrlFieldName() { + return "url"; + } @Override - public int generate(final Properties props) { - return fixtureWorkerId; + public String getJdbcUrlPropertiesFieldName() { + return "connectionProperties"; } } diff --git a/infra/data-source-pool/dbcp/src/main/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/metadata/DBCPDataSourcePoolMetaData.java b/infra/data-source-pool/dbcp/src/main/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/metadata/DBCPDataSourcePoolMetaData.java new file mode 100644 index 0000000..d0dd558 --- /dev/null +++ b/infra/data-source-pool/dbcp/src/main/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/metadata/DBCPDataSourcePoolMetaData.java @@ -0,0 +1,77 @@ +/* + * 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.datasource.pool.dbcp.metadata; + +import org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; +import java.util.Map; + +/** + * DBCP data source pool meta data. + */ +public final class DBCPDataSourcePoolMetaData implements DataSourcePoolMetaData { + + private static final Collection<String> TRANSIENT_FIELD_NAMES = new LinkedList<>(); + + static { + buildTransientFieldNames(); + } + + private static void buildTransientFieldNames() { + TRANSIENT_FIELD_NAMES.add("closed"); + } + + @Override + public Map<String, Object> getDefaultProperties() { + return Collections.emptyMap(); + } + + @Override + public Map<String, Object> getSkippedProperties() { + return Collections.emptyMap(); + } + + @Override + public Map<String, String> getPropertySynonyms() { + return Collections.emptyMap(); + } + + @Override + public Collection<String> getTransientFieldNames() { + return TRANSIENT_FIELD_NAMES; + } + + @Override + public DBCPDataSourcePoolFieldMetaData getFieldMetaData() { + return new DBCPDataSourcePoolFieldMetaData(); + } + + @Override + public String getType() { + return "org.apache.commons.dbcp2.BasicDataSource"; + } + + @Override + public Collection<Object> getTypeAliases() { + return Arrays.asList("org.apache.commons.dbcp.BasicDataSource", "org.apache.tomcat.dbcp.dbcp2.BasicDataSource"); + } +} diff --git a/feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm b/infra/data-source-pool/dbcp/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData similarity index 89% rename from feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm rename to infra/data-source-pool/dbcp/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData index 759153d..289a77e 100644 --- a/feature/sharding/nanoid/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm +++ b/infra/data-source-pool/dbcp/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData @@ -15,4 +15,4 @@ # limitations under the License. # -org.apache.shardingsphere.sharding.nanoid.algorithm.keygen.NanoIdKeyGenerateAlgorithm +org.apache.shardingsphere.infra.datasource.pool.dbcp.metadata.DBCPDataSourcePoolMetaData diff --git a/infra/data-source-pool/dbcp/src/test/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/creator/DBCPDataSourcePoolCreatorTest.java b/infra/data-source-pool/dbcp/src/test/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/creator/DBCPDataSourcePoolCreatorTest.java new file mode 100644 index 0000000..cc637a9 --- /dev/null +++ b/infra/data-source-pool/dbcp/src/test/java/org/apache/shardingsphere/infra/datasource/pool/dbcp/creator/DBCPDataSourcePoolCreatorTest.java @@ -0,0 +1,66 @@ +/* + * 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.datasource.pool.dbcp.creator; + +import lombok.SneakyThrows; +import org.apache.commons.dbcp2.BasicDataSource; +import org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator; +import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; +import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource; +import org.junit.jupiter.api.Test; +import org.mockito.internal.configuration.plugins.Plugins; + +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +class DBCPDataSourcePoolCreatorTest { + + @Test + void assertCreateDataSource() { + BasicDataSource actual = (BasicDataSource) DataSourcePoolCreator.create(new DataSourcePoolProperties(BasicDataSource.class.getName(), createDataSourcePoolProperties())); + assertThat(actual.getUrl(), is("jdbc:mock://127.0.0.1/foo_ds")); + assertThat(actual.getUsername(), is("root")); + assertThat(actual.getPassword(), is("root")); + Properties props = new Properties(); + props.put("foo", "foo_value"); + props.put("bar", "bar_value"); + assertThat(getConnectionProperties(actual), is(props)); + } + + private Map<String, Object> createDataSourcePoolProperties() { + Map<String, Object> result = new HashMap<>(); + result.put("url", "jdbc:mock://127.0.0.1/foo_ds"); + result.put("driverClassName", MockedDataSource.class.getName()); + result.put("username", "root"); + result.put("password", "root"); + Properties props = new Properties(); + props.put("foo", "foo_value"); + props.put("bar", "bar_value"); + result.put("connectionProperties", props); + return result; + } + + @SneakyThrows(ReflectiveOperationException.class) + private Properties getConnectionProperties(final BasicDataSource actual) { + return (Properties) Plugins.getMemberAccessor().get(BasicDataSource.class.getDeclaredField("connectionProperties"), actual); + } +} diff --git a/feature/encrypt/pom.xml b/infra/data-source-pool/pom.xml similarity index 87% rename from feature/encrypt/pom.xml rename to infra/data-source-pool/pom.xml index 30066ce..5e72328 100644 --- a/feature/encrypt/pom.xml +++ b/infra/data-source-pool/pom.xml @@ -20,14 +20,15 @@ <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-plugin-feature</artifactId> + <artifactId>shardingsphere-plugin-infra</artifactId> <version>5.4.1-SNAPSHOT</version> </parent> - <artifactId>shardingsphere-plugin-feature-encrypt</artifactId> + <artifactId>shardingsphere-plugin-infra-data-source-pool</artifactId> <packaging>pom</packaging> <name>${project.artifactId}</name> <modules> - <module>sm</module> + <module>c3p0</module> + <module>dbcp</module> </modules> </project> diff --git a/feature/pom.xml b/infra/pom.xml similarity index 91% rename from feature/pom.xml rename to infra/pom.xml index e9d45e9..d105d4b 100644 --- a/feature/pom.xml +++ b/infra/pom.xml @@ -23,12 +23,11 @@ <artifactId>shardingsphere-plugin</artifactId> <version>5.4.1-SNAPSHOT</version> </parent> - <artifactId>shardingsphere-plugin-feature</artifactId> + <artifactId>shardingsphere-plugin-infra</artifactId> <packaging>pom</packaging> <name>${project.artifactId}</name> <modules> - <module>sharding</module> - <module>encrypt</module> + <module>data-source-pool</module> </modules> </project> diff --git a/pom.xml b/pom.xml index 00e01ce..19867d4 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,8 @@ <description>Provide plugins for ShardingSphere pluggable architecture</description> <modules> - <module>feature</module> + <module>features</module> + <module>infra</module> </modules> <properties> @@ -51,6 +52,8 @@ <hamcrest.version>2.2</hamcrest.version> <mockito.version>4.11.0</mockito.version> <bouncycastle.version>1.70</bouncycastle.version> + <c3p0.version>0.9.5.5</c3p0.version> + <commons-dbcp2.version>2.9.0</commons-dbcp2.version> <commons-codec.version>1.15</commons-codec.version> <lombok.version>1.18.20</lombok.version> <junit.version>5.9.2</junit.version> @@ -139,6 +142,10 @@ </build> <dependencies> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId>
