This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 79c92f8a254 Add shardingsphere-infra-url module (#30148)
79c92f8a254 is described below
commit 79c92f8a254e51470df940061b2b558631b6b3fb
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Feb 17 11:46:23 2024 +0800
Add shardingsphere-infra-url module (#30148)
* Add shardingsphere-infra-url module
* Add shardingsphere-infra-url module
---
.../jdbc-driver/known-implementation/_index.cn.md | 8 ++---
.../jdbc-driver/known-implementation/_index.en.md | 8 ++---
infra/pom.xml | 1 +
infra/{ => url/core}/pom.xml | 37 ++++++++--------------
.../infra}/url/ShardingSphereURL.java | 4 +--
.../infra}/url/ShardingSphereURLLoadEngine.java | 6 ++--
.../infra}/url/arg/URLArgumentLine.java | 2 +-
.../infra}/url/arg/URLArgumentLineRender.java | 2 +-
.../infra}/url/arg/URLArgumentPlaceholderType.java | 2 +-
.../url/arg/URLArgumentPlaceholderTypeFactory.java | 2 +-
.../exception}/URLProviderNotFoundException.java | 2 +-
.../infra}/url/ShardingSphereURLTest.java | 2 +-
.../infra}/url/arg/URLArgumentLineRenderTest.java | 10 +++---
.../test/resources/config/replaced-fixture.yaml | 9 +++---
.../resources/config/to-be-replaced-fixture.yaml | 0
infra/{ => url}/pom.xml | 23 +++-----------
infra/{ => url/spi}/pom.xml | 32 ++++++-------------
.../infra}/url/ShardingSphereURLLoader.java | 2 +-
infra/{ => url/type/absolutepath}/pom.xml | 32 ++++++-------------
.../url/type/absolute}/AbsolutePathURLLoader.java | 4 +--
...hardingsphere.infra.url.ShardingSphereURLLoader | 3 +-
.../type/absolute/AbsolutePathURLLoaderTest.java | 6 ++--
.../resources/config/absolutepath/fixture.yaml | 9 +++---
infra/{ => url/type/classpath}/pom.xml | 32 ++++++-------------
.../url/type/classpath}/ClassPathURLLoader.java | 4 +--
...hardingsphere.infra.url.ShardingSphereURLLoader | 3 +-
.../url/type/classpath/ClassPathURLLoaderTest.java | 6 ++--
.../test/resources/config/classpath/fixture.yaml | 9 +++---
infra/{ => url/type}/pom.xml | 24 +++-----------
jdbc/core/pom.xml | 15 +++++++++
.../jdbc/core/driver/DriverDataSourceCache.java | 4 +--
31 files changed, 116 insertions(+), 187 deletions(-)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.cn.md
index 83cdf6a2d0c..81e24e4f6c4 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.cn.md
@@ -7,10 +7,10 @@ chapter = true
## 背景信息
对于 `org.apache.shardingsphere.driver.ShardingSphereDriver` 的驱动类,
-通过实现
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader`
的 SPI,
+通过实现 `org.apache.shardingsphere.infra.url.ShardingSphereURLLoader` 的 SPI,
可允许从多种来源和 File System 获取并解析为 ShardingSphere 的 YAML 配置文件。
如无特定声明,以下实现均采用 YAML 1.1 作为 YAML 的编写规范,
-这并不阻止
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader`
的自定义实现从 XML 或 JSON 等文件手动转化为 YAML。
+这并不阻止 `org.apache.shardingsphere.infra.url.ShardingSphereURLLoader` 的自定义实现从
XML 或 JSON 等文件手动转化为 YAML。
在解析并加载 YAML 文件为 ShardingSphere 的元数据后,
会再次通过[模式配置](../../../java-api/mode)的相关配置决定下一步行为。讨论两种情况,
@@ -48,8 +48,8 @@ chapter = true
## JDBC URL 参数
-对于
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader`
的实现,并非所有的 JDBC URL 参数都必须被解析,
-这涉及到如何实现
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader.getContent()`。
+对于 `org.apache.shardingsphere.infra.url.ShardingSphereURLLoader` 的实现,并非所有的
JDBC URL 参数都必须被解析,
+这涉及到如何实现 `org.apache.shardingsphere.infra.url.ShardingSphereURLLoader.load()`。
### placeholder-type
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.en.md
index caee037ffd7..df0a918cb1f 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/known-implementation/_index.en.md
@@ -7,10 +7,10 @@ chapter = true
## Background Information
For the driver class of
`org.apache.shardingsphere.driver.ShardingSphereDriver`,
-by implementing the SPI of
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader`,
+by implementing the SPI of
`org.apache.shardingsphere.infra.url.ShardingSphereURLLoader`,
allows YAML configuration files to be fetched from multiple sources and File
Systems and parsed into ShardingSphere.
If there is no specific statement, the following implementations all use YAML
1.1 as the YAML writing specification.
-This does not prevent custom implementations of
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader`
from being manually converted to YAML from files such as XML or JSON.
+This does not prevent custom implementations of
`org.apache.shardingsphere.infra.url.ShardingSphereURLLoader` from being
manually converted to YAML from files such as XML or JSON.
After parsing and loading the YAML file into ShardingSphere's metadata,
the next behavior will be determined again through the relevant configuration
of [Mode Configuration](../../../java-api/mode).
@@ -56,9 +56,9 @@ Example:
## JDBC URL parameters
-For implementations of
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader`,
+For implementations of
`org.apache.shardingsphere.infra.url.ShardingSphereURLLoader`,
not all JDBC URL parameters must be parsed,
-this involves how to implement
`org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader.getContent()`.
+this involves how to implement
`org.apache.shardingsphere.infra.url.ShardingSphereURLLoader.load()`.
### placeholder-type
diff --git a/infra/pom.xml b/infra/pom.xml
index d831f53f287..64445af931f 100644
--- a/infra/pom.xml
+++ b/infra/pom.xml
@@ -34,6 +34,7 @@
<module>data-source-pool</module>
<module>common</module>
<module>context</module>
+ <module>url</module>
<module>distsql-handler</module>
<module>parser</module>
<module>binder</module>
diff --git a/infra/pom.xml b/infra/url/core/pom.xml
similarity index 62%
copy from infra/pom.xml
copy to infra/url/core/pom.xml
index d831f53f287..8535218b3b5 100644
--- a/infra/pom.xml
+++ b/infra/url/core/pom.xml
@@ -20,31 +20,22 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
+ <artifactId>shardingsphere-infra-url</artifactId>
<version>5.4.2-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-infra</artifactId>
- <packaging>pom</packaging>
+ <artifactId>shardingsphere-infra-url-core</artifactId>
<name>${project.artifactId}</name>
- <modules>
- <module>spi</module>
- <module>exception</module>
- <module>database</module>
- <module>data-source-pool</module>
- <module>common</module>
- <module>context</module>
- <module>distsql-handler</module>
- <module>parser</module>
- <module>binder</module>
- <module>rewrite</module>
- <module>route</module>
- <module>merge</module>
- <module>executor</module>
- <module>session</module>
- <module>expr</module>
- <module>util</module>
- <module>reachability-metadata</module>
- <module>algorithm</module>
- </modules>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-exception-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
</project>
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURL.java
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURL.java
similarity index 95%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURL.java
rename to
infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURL.java
index 016cd77ffd0..0d61deb973c 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURL.java
+++
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURL.java
@@ -15,15 +15,15 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url;
+package org.apache.shardingsphere.infra.url;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.driver.jdbc.exception.syntax.URLProviderNotFoundException;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.url.exception.URLProviderNotFoundException;
import java.util.Collections;
import java.util.HashMap;
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLLoadEngine.java
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURLLoadEngine.java
similarity index 87%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLLoadEngine.java
rename to
infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURLLoadEngine.java
index 89467363465..3e7db68ce25 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLLoadEngine.java
+++
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURLLoadEngine.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url;
+package org.apache.shardingsphere.infra.url;
-import
org.apache.shardingsphere.driver.jdbc.core.driver.url.arg.URLArgumentLineRender;
-import
org.apache.shardingsphere.driver.jdbc.core.driver.url.arg.URLArgumentPlaceholderTypeFactory;
+import org.apache.shardingsphere.infra.url.arg.URLArgumentLineRender;
+import
org.apache.shardingsphere.infra.url.arg.URLArgumentPlaceholderTypeFactory;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import java.util.Arrays;
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLine.java
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLine.java
similarity index 97%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLine.java
rename to
infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLine.java
index 6d78224c7bc..5e7886f3c1c 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLine.java
+++
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLine.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.arg;
+package org.apache.shardingsphere.infra.url.arg;
import com.google.common.base.Strings;
import lombok.AccessLevel;
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLineRender.java
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLineRender.java
similarity index 96%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLineRender.java
rename to
infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLineRender.java
index a7e1e370170..4f7b0d0a66a 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLineRender.java
+++
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLineRender.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.arg;
+package org.apache.shardingsphere.infra.url.arg;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentPlaceholderType.java
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentPlaceholderType.java
similarity index 93%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentPlaceholderType.java
rename to
infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentPlaceholderType.java
index aa7c1660de9..df241f3f37d 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentPlaceholderType.java
+++
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentPlaceholderType.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.arg;
+package org.apache.shardingsphere.infra.url.arg;
/**
* URL argument placeholder type.
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentPlaceholderTypeFactory.java
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentPlaceholderTypeFactory.java
similarity index 96%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentPlaceholderTypeFactory.java
rename to
infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentPlaceholderTypeFactory.java
index ee622317cfa..d8c3d5ea9c3 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentPlaceholderTypeFactory.java
+++
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/arg/URLArgumentPlaceholderTypeFactory.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.arg;
+package org.apache.shardingsphere.infra.url.arg;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/syntax/URLProviderNotFoundException.java
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/exception/URLProviderNotFoundException.java
similarity index 95%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/syntax/URLProviderNotFoundException.java
rename to
infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/exception/URLProviderNotFoundException.java
index 2f952ec96d4..2897c6f1572 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/syntax/URLProviderNotFoundException.java
+++
b/infra/url/core/src/main/java/org/apache/shardingsphere/infra/url/exception/URLProviderNotFoundException.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.exception.syntax;
+package org.apache.shardingsphere.infra.url.exception;
import
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.SyntaxSQLException;
import
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLTest.java
b/infra/url/core/src/test/java/org/apache/shardingsphere/infra/url/ShardingSphereURLTest.java
similarity index 98%
rename from
jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLTest.java
rename to
infra/url/core/src/test/java/org/apache/shardingsphere/infra/url/ShardingSphereURLTest.java
index 276bca9abba..cf9996d18a2 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLTest.java
+++
b/infra/url/core/src/test/java/org/apache/shardingsphere/infra/url/ShardingSphereURLTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url;
+package org.apache.shardingsphere.infra.url;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.ParameterizedTest;
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLineRenderTest.java
b/infra/url/core/src/test/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLineRenderTest.java
similarity index 82%
rename from
jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLineRenderTest.java
rename to
infra/url/core/src/test/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLineRenderTest.java
index 2f9d971846f..554da622df1 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/arg/URLArgumentLineRenderTest.java
+++
b/infra/url/core/src/test/java/org/apache/shardingsphere/infra/url/arg/URLArgumentLineRenderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.arg;
+package org.apache.shardingsphere.infra.url.arg;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -52,15 +52,15 @@ class URLArgumentLineRenderTest {
@Test
void assertReadWithNonePlaceholder() throws IOException,
URISyntaxException {
- byte[] actual =
readContent("config/driver/foo-driver-to-be-replaced-fixture.yaml",
URLArgumentPlaceholderType.NONE);
- byte[] expected =
readContent("config/driver/foo-driver-to-be-replaced-fixture.yaml",
URLArgumentPlaceholderType.NONE);
+ byte[] actual = readContent("config/to-be-replaced-fixture.yaml",
URLArgumentPlaceholderType.NONE);
+ byte[] expected = readContent("config/to-be-replaced-fixture.yaml",
URLArgumentPlaceholderType.NONE);
assertThat(new String(actual), is(new String(expected)));
}
@Test
void assertReadWithSystemPropertiesPlaceholder() throws IOException,
URISyntaxException {
- byte[] actual =
readContent("config/driver/foo-driver-to-be-replaced-fixture.yaml",
URLArgumentPlaceholderType.SYSTEM_PROPS);
- byte[] expected = readContent("config/driver/foo-driver-fixture.yaml",
URLArgumentPlaceholderType.SYSTEM_PROPS);
+ byte[] actual = readContent("config/to-be-replaced-fixture.yaml",
URLArgumentPlaceholderType.SYSTEM_PROPS);
+ byte[] expected = readContent("config/replaced-fixture.yaml",
URLArgumentPlaceholderType.SYSTEM_PROPS);
assertThat(new String(actual), is(new String(expected)));
}
diff --git
a/jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
b/infra/url/core/src/test/resources/config/replaced-fixture.yaml
similarity index 80%
copy from
jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
copy to infra/url/core/src/test/resources/config/replaced-fixture.yaml
index 9668e2350d5..026cec85155 100644
---
a/jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
+++ b/infra/url/core/src/test/resources/config/replaced-fixture.yaml
@@ -15,7 +15,6 @@
# limitations under the License.
#
-# After `ShardingSphereURLManager.getContent`, this file should be equivalent
to `foo-driver-fixture.yaml` in the same folder.
databaseName: foo_driver_fixture_db
dataSources:
@@ -27,10 +26,10 @@ dataSources:
password:
ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
- driverClassName: $${fixture.config.driver.driver-class-name::org.h2.Driver}
- jdbcUrl: $${fixture.config.driver.jdbc-url::jdbc:h2:mem:foo_ds_do_not_use}
- username: $${fixture.config.driver.username::}
- password: $${fixture.config.driver.password::}
+ driverClassName: org.h2.Driver
+ jdbcUrl:
jdbc:h2:mem:foo_ds_1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL
+ username: sa
+ password:
rules:
- !SHARDING
diff --git
a/jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
b/infra/url/core/src/test/resources/config/to-be-replaced-fixture.yaml
similarity index 100%
copy from
jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
copy to infra/url/core/src/test/resources/config/to-be-replaced-fixture.yaml
diff --git a/infra/pom.xml b/infra/url/pom.xml
similarity index 66%
copy from infra/pom.xml
copy to infra/url/pom.xml
index d831f53f287..b40e368cd06 100644
--- a/infra/pom.xml
+++ b/infra/url/pom.xml
@@ -20,31 +20,16 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
+ <artifactId>shardingsphere-infra</artifactId>
<version>5.4.2-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-infra</artifactId>
+ <artifactId>shardingsphere-infra-url</artifactId>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<modules>
<module>spi</module>
- <module>exception</module>
- <module>database</module>
- <module>data-source-pool</module>
- <module>common</module>
- <module>context</module>
- <module>distsql-handler</module>
- <module>parser</module>
- <module>binder</module>
- <module>rewrite</module>
- <module>route</module>
- <module>merge</module>
- <module>executor</module>
- <module>session</module>
- <module>expr</module>
- <module>util</module>
- <module>reachability-metadata</module>
- <module>algorithm</module>
+ <module>core</module>
+ <module>type</module>
</modules>
</project>
diff --git a/infra/pom.xml b/infra/url/spi/pom.xml
similarity index 62%
copy from infra/pom.xml
copy to infra/url/spi/pom.xml
index d831f53f287..6d8300ade3e 100644
--- a/infra/pom.xml
+++ b/infra/url/spi/pom.xml
@@ -20,31 +20,17 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
+ <artifactId>shardingsphere-infra-url</artifactId>
<version>5.4.2-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-infra</artifactId>
- <packaging>pom</packaging>
+ <artifactId>shardingsphere-infra-url-spi</artifactId>
<name>${project.artifactId}</name>
- <modules>
- <module>spi</module>
- <module>exception</module>
- <module>database</module>
- <module>data-source-pool</module>
- <module>common</module>
- <module>context</module>
- <module>distsql-handler</module>
- <module>parser</module>
- <module>binder</module>
- <module>rewrite</module>
- <module>route</module>
- <module>merge</module>
- <module>executor</module>
- <module>session</module>
- <module>expr</module>
- <module>util</module>
- <module>reachability-metadata</module>
- <module>algorithm</module>
- </modules>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
</project>
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLLoader.java
b/infra/url/spi/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURLLoader.java
similarity index 95%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLLoader.java
rename to
infra/url/spi/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURLLoader.java
index 31583e422ee..f2dcb958b5c 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/ShardingSphereURLLoader.java
+++
b/infra/url/spi/src/main/java/org/apache/shardingsphere/infra/url/ShardingSphereURLLoader.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url;
+package org.apache.shardingsphere.infra.url;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
diff --git a/infra/pom.xml b/infra/url/type/absolutepath/pom.xml
similarity index 62%
copy from infra/pom.xml
copy to infra/url/type/absolutepath/pom.xml
index d831f53f287..3e4cd1386b0 100644
--- a/infra/pom.xml
+++ b/infra/url/type/absolutepath/pom.xml
@@ -20,31 +20,17 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
+ <artifactId>shardingsphere-infra-url-type</artifactId>
<version>5.4.2-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-infra</artifactId>
- <packaging>pom</packaging>
+ <artifactId>shardingsphere-infra-url-absolutepath</artifactId>
<name>${project.artifactId}</name>
- <modules>
- <module>spi</module>
- <module>exception</module>
- <module>database</module>
- <module>data-source-pool</module>
- <module>common</module>
- <module>context</module>
- <module>distsql-handler</module>
- <module>parser</module>
- <module>binder</module>
- <module>rewrite</module>
- <module>route</module>
- <module>merge</module>
- <module>executor</module>
- <module>session</module>
- <module>expr</module>
- <module>util</module>
- <module>reachability-metadata</module>
- <module>algorithm</module>
- </modules>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
</project>
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/AbsolutePathURLLoader.java
b/infra/url/type/absolutepath/src/main/java/org/apache/shardingsphere/infra/url/type/absolute/AbsolutePathURLLoader.java
similarity index 91%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/AbsolutePathURLLoader.java
rename to
infra/url/type/absolutepath/src/main/java/org/apache/shardingsphere/infra/url/type/absolute/AbsolutePathURLLoader.java
index 25f656de18a..5f28b592378 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/AbsolutePathURLLoader.java
+++
b/infra/url/type/absolutepath/src/main/java/org/apache/shardingsphere/infra/url/type/absolute/AbsolutePathURLLoader.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.type;
+package org.apache.shardingsphere.infra.url.type.absolute;
import lombok.SneakyThrows;
-import
org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader;
+import org.apache.shardingsphere.infra.url.ShardingSphereURLLoader;
import java.io.File;
import java.io.IOException;
diff --git
a/jdbc/core/src/main/resources/META-INF/services/org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader
b/infra/url/type/absolutepath/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.url.ShardingSphereURLLoader
similarity index 83%
copy from
jdbc/core/src/main/resources/META-INF/services/org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader
copy to
infra/url/type/absolutepath/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.url.ShardingSphereURLLoader
index 5012c9984bc..2fbd33cba11 100644
---
a/jdbc/core/src/main/resources/META-INF/services/org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader
+++
b/infra/url/type/absolutepath/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.url.ShardingSphereURLLoader
@@ -15,5 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.driver.jdbc.core.driver.url.type.ClassPathURLLoader
-org.apache.shardingsphere.driver.jdbc.core.driver.url.type.AbsolutePathURLLoader
+org.apache.shardingsphere.infra.url.type.absolute.AbsolutePathURLLoader
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/AbsolutePathURLProviderTest.java
b/infra/url/type/absolutepath/src/test/java/org/apache/shardingsphere/infra/url/type/absolute/AbsolutePathURLLoaderTest.java
similarity index 88%
rename from
jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/AbsolutePathURLProviderTest.java
rename to
infra/url/type/absolutepath/src/test/java/org/apache/shardingsphere/infra/url/type/absolute/AbsolutePathURLLoaderTest.java
index f2afcf86532..00e41b56ee8 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/AbsolutePathURLProviderTest.java
+++
b/infra/url/type/absolutepath/src/test/java/org/apache/shardingsphere/infra/url/type/absolute/AbsolutePathURLLoaderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.type;
+package org.apache.shardingsphere.infra.url.type.absolute;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledOnOs;
@@ -27,7 +27,7 @@ import java.util.Objects;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-class AbsolutePathURLProviderTest {
+class AbsolutePathURLLoaderTest {
@Test
@EnabledOnOs({OS.LINUX, OS.MAC})
@@ -43,7 +43,7 @@ class AbsolutePathURLProviderTest {
private void assertGetContent(final int expectedLength) {
String actual = new AbsolutePathURLLoader().load(
-
Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("config/driver/foo-driver-fixture.yaml")).getPath(),
Collections.emptyMap());
+
Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("config/absolutepath/fixture.yaml")).getPath(),
Collections.emptyMap());
assertThat(actual.length(), is(expectedLength));
}
}
diff --git
a/jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
b/infra/url/type/absolutepath/src/test/resources/config/absolutepath/fixture.yaml
similarity index 80%
copy from
jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
copy to
infra/url/type/absolutepath/src/test/resources/config/absolutepath/fixture.yaml
index 9668e2350d5..026cec85155 100644
---
a/jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
+++
b/infra/url/type/absolutepath/src/test/resources/config/absolutepath/fixture.yaml
@@ -15,7 +15,6 @@
# limitations under the License.
#
-# After `ShardingSphereURLManager.getContent`, this file should be equivalent
to `foo-driver-fixture.yaml` in the same folder.
databaseName: foo_driver_fixture_db
dataSources:
@@ -27,10 +26,10 @@ dataSources:
password:
ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
- driverClassName: $${fixture.config.driver.driver-class-name::org.h2.Driver}
- jdbcUrl: $${fixture.config.driver.jdbc-url::jdbc:h2:mem:foo_ds_do_not_use}
- username: $${fixture.config.driver.username::}
- password: $${fixture.config.driver.password::}
+ driverClassName: org.h2.Driver
+ jdbcUrl:
jdbc:h2:mem:foo_ds_1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL
+ username: sa
+ password:
rules:
- !SHARDING
diff --git a/infra/pom.xml b/infra/url/type/classpath/pom.xml
similarity index 62%
copy from infra/pom.xml
copy to infra/url/type/classpath/pom.xml
index d831f53f287..f2fe158bd4f 100644
--- a/infra/pom.xml
+++ b/infra/url/type/classpath/pom.xml
@@ -20,31 +20,17 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
+ <artifactId>shardingsphere-infra-url-type</artifactId>
<version>5.4.2-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-infra</artifactId>
- <packaging>pom</packaging>
+ <artifactId>shardingsphere-infra-url-classpath</artifactId>
<name>${project.artifactId}</name>
- <modules>
- <module>spi</module>
- <module>exception</module>
- <module>database</module>
- <module>data-source-pool</module>
- <module>common</module>
- <module>context</module>
- <module>distsql-handler</module>
- <module>parser</module>
- <module>binder</module>
- <module>rewrite</module>
- <module>route</module>
- <module>merge</module>
- <module>executor</module>
- <module>session</module>
- <module>expr</module>
- <module>util</module>
- <module>reachability-metadata</module>
- <module>algorithm</module>
- </modules>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
</project>
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/ClassPathURLLoader.java
b/infra/url/type/classpath/src/main/java/org/apache/shardingsphere/infra/url/type/classpath/ClassPathURLLoader.java
similarity index 92%
rename from
jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/ClassPathURLLoader.java
rename to
infra/url/type/classpath/src/main/java/org/apache/shardingsphere/infra/url/type/classpath/ClassPathURLLoader.java
index 31331c4b0de..658c9dd8731 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/ClassPathURLLoader.java
+++
b/infra/url/type/classpath/src/main/java/org/apache/shardingsphere/infra/url/type/classpath/ClassPathURLLoader.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.type;
+package org.apache.shardingsphere.infra.url.type.classpath;
import lombok.SneakyThrows;
-import
org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader;
+import org.apache.shardingsphere.infra.url.ShardingSphereURLLoader;
import java.io.File;
import java.io.IOException;
diff --git
a/jdbc/core/src/main/resources/META-INF/services/org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader
b/infra/url/type/classpath/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.url.ShardingSphereURLLoader
similarity index 83%
rename from
jdbc/core/src/main/resources/META-INF/services/org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader
rename to
infra/url/type/classpath/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.url.ShardingSphereURLLoader
index 5012c9984bc..97ab3198e41 100644
---
a/jdbc/core/src/main/resources/META-INF/services/org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoader
+++
b/infra/url/type/classpath/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.url.ShardingSphereURLLoader
@@ -15,5 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.driver.jdbc.core.driver.url.type.ClassPathURLLoader
-org.apache.shardingsphere.driver.jdbc.core.driver.url.type.AbsolutePathURLLoader
+org.apache.shardingsphere.infra.url.type.classpath.ClassPathURLLoader
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/ClassPathURLProviderTest.java
b/infra/url/type/classpath/src/test/java/org/apache/shardingsphere/infra/url/type/classpath/ClassPathURLLoaderTest.java
similarity index 84%
rename from
jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/ClassPathURLProviderTest.java
rename to
infra/url/type/classpath/src/test/java/org/apache/shardingsphere/infra/url/type/classpath/ClassPathURLLoaderTest.java
index d1286b48d92..8cc4503aaf2 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/driver/url/type/ClassPathURLProviderTest.java
+++
b/infra/url/type/classpath/src/test/java/org/apache/shardingsphere/infra/url/type/classpath/ClassPathURLLoaderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.driver.jdbc.core.driver.url.type;
+package org.apache.shardingsphere.infra.url.type.classpath;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledOnOs;
@@ -26,7 +26,7 @@ import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-class ClassPathURLProviderTest {
+class ClassPathURLLoaderTest {
@Test
@EnabledOnOs({OS.LINUX, OS.MAC})
@@ -41,6 +41,6 @@ class ClassPathURLProviderTest {
}
private void assertGetContent(final int expectedLength) {
- assertThat(new
ClassPathURLLoader().load("config/driver/foo-driver-fixture.yaml",
Collections.emptyMap()).length(), is(expectedLength));
+ assertThat(new
ClassPathURLLoader().load("config/classpath/fixture.yaml",
Collections.emptyMap()).length(), is(expectedLength));
}
}
diff --git
a/jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
b/infra/url/type/classpath/src/test/resources/config/classpath/fixture.yaml
similarity index 80%
rename from
jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
rename to
infra/url/type/classpath/src/test/resources/config/classpath/fixture.yaml
index 9668e2350d5..026cec85155 100644
---
a/jdbc/core/src/test/resources/config/driver/foo-driver-to-be-replaced-fixture.yaml
+++ b/infra/url/type/classpath/src/test/resources/config/classpath/fixture.yaml
@@ -15,7 +15,6 @@
# limitations under the License.
#
-# After `ShardingSphereURLManager.getContent`, this file should be equivalent
to `foo-driver-fixture.yaml` in the same folder.
databaseName: foo_driver_fixture_db
dataSources:
@@ -27,10 +26,10 @@ dataSources:
password:
ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
- driverClassName: $${fixture.config.driver.driver-class-name::org.h2.Driver}
- jdbcUrl: $${fixture.config.driver.jdbc-url::jdbc:h2:mem:foo_ds_do_not_use}
- username: $${fixture.config.driver.username::}
- password: $${fixture.config.driver.password::}
+ driverClassName: org.h2.Driver
+ jdbcUrl:
jdbc:h2:mem:foo_ds_1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL
+ username: sa
+ password:
rules:
- !SHARDING
diff --git a/infra/pom.xml b/infra/url/type/pom.xml
similarity index 65%
copy from infra/pom.xml
copy to infra/url/type/pom.xml
index d831f53f287..0dbd84e85af 100644
--- a/infra/pom.xml
+++ b/infra/url/type/pom.xml
@@ -20,31 +20,15 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
+ <artifactId>shardingsphere-infra-url</artifactId>
<version>5.4.2-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-infra</artifactId>
+ <artifactId>shardingsphere-infra-url-type</artifactId>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<modules>
- <module>spi</module>
- <module>exception</module>
- <module>database</module>
- <module>data-source-pool</module>
- <module>common</module>
- <module>context</module>
- <module>distsql-handler</module>
- <module>parser</module>
- <module>binder</module>
- <module>rewrite</module>
- <module>route</module>
- <module>merge</module>
- <module>executor</module>
- <module>session</module>
- <module>expr</module>
- <module>util</module>
- <module>reachability-metadata</module>
- <module>algorithm</module>
+ <module>classpath</module>
+ <module>absolutepath</module>
</modules>
</project>
diff --git a/jdbc/core/pom.xml b/jdbc/core/pom.xml
index f5b2f769f98..a620baf0396 100644
--- a/jdbc/core/pom.xml
+++ b/jdbc/core/pom.xml
@@ -27,6 +27,21 @@
<name>${project.artifactId}</name>
<dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-classpath</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-absolutepath</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-transaction-core</artifactId>
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/DriverDataSourceCache.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/DriverDataSourceCache.java
index f8698cbfedd..2a6346c694e 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/DriverDataSourceCache.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/DriverDataSourceCache.java
@@ -18,8 +18,8 @@
package org.apache.shardingsphere.driver.jdbc.core.driver;
import
org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFactory;
-import org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURL;
-import
org.apache.shardingsphere.driver.jdbc.core.driver.url.ShardingSphereURLLoadEngine;
+import org.apache.shardingsphere.infra.url.ShardingSphereURL;
+import org.apache.shardingsphere.infra.url.ShardingSphereURLLoadEngine;
import javax.sql.DataSource;
import java.io.IOException;