diff --git a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java index be803b5f14e56..04798d019b71c 100644 --- a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java +++ b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java @@ -38,4 +38,14 @@ public final class ConnectionProperties { private final String schema; private final Properties queryProperties; + + /** + * Change catalog. + * + * @param catalog to be changed catalog + * @return connection properties + */ + public ConnectionProperties changeCatalog(final String catalog) { + return new ConnectionProperties(hostname, port, null == catalog ? this.catalog : catalog, schema, queryProperties); + } } diff --git a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrlParser.java b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/StandardJdbcUrlParser.java similarity index 93% rename from database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrlParser.java rename to database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/StandardJdbcUrlParser.java index c5515aa0173a5..a399482ab86fb 100644 --- a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrlParser.java +++ b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/StandardJdbcUrlParser.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard; +package org.apache.shardingsphere.database.connector.core.jdbcurl.parser; import com.google.common.base.Splitter; import com.google.common.base.Strings; @@ -67,7 +67,7 @@ public final class StandardJdbcUrlParser { * @param defaultPort default port * @return parsed JDBC URL */ - public StandardJdbcUrl parse(final String jdbcUrl, final int defaultPort) { + public ConnectionProperties parse(final String jdbcUrl, final int defaultPort) { Matcher matcher = CONNECTION_URL_PATTERN.matcher(jdbcUrl); ShardingSpherePreconditions.checkState(matcher.matches(), () -> new UnrecognizedDatabaseURLException(jdbcUrl, CONNECTION_URL_PATTERN.pattern().replaceAll("%", "%%"))); String authority = matcher.group(AUTHORITY_GROUP_KEY); @@ -76,11 +76,11 @@ public StandardJdbcUrl parse(final String jdbcUrl, final int defaultPort) { String database = matcher.group(PATH_GROUP_KEY); String schema = queryProperties.getProperty(SCHEMA_KEY); if (authority.isEmpty()) { - return new StandardJdbcUrl("", defaultPort, database, schema, queryProperties); + return new ConnectionProperties("", defaultPort, database, schema, queryProperties); } Matcher hostMatcher = HOST_PORT_PATTERN_PATTERN.matcher(authority); ShardingSpherePreconditions.checkState(hostMatcher.find(), () -> new UnrecognizedDatabaseURLException(jdbcUrl, CONNECTION_URL_PATTERN.pattern().replaceAll("%", "%%"))); - return new StandardJdbcUrl(parseHostname(hostMatcher), parsePort(hostMatcher, defaultPort), database, schema, queryProperties); + return new ConnectionProperties(parseHostname(hostMatcher), parsePort(hostMatcher, defaultPort), database, schema, queryProperties); } private String parseHostname(final Matcher hostMatcher) { diff --git a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrl.java b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrl.java deleted file mode 100644 index aa28224cbfbd0..0000000000000 --- a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrl.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -import java.util.Properties; - -/** - * JDBC URL. - */ -@RequiredArgsConstructor -@Getter -public final class StandardJdbcUrl { - - private final String hostname; - - private final int port; - - private final String database; - - private final String schema; - - private final Properties queryProperties; -} diff --git a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrlParserTest.java b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/StandardJdbcUrlParserTest.java similarity index 97% rename from database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrlParserTest.java rename to database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/StandardJdbcUrlParserTest.java index 2f0bfceb4f6d9..bb43715cb76c7 100644 --- a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/standard/StandardJdbcUrlParserTest.java +++ b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/StandardJdbcUrlParserTest.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard; +package org.apache.shardingsphere.database.connector.core.jdbcurl.parser; import org.apache.shardingsphere.database.connector.core.exception.UnrecognizedDatabaseURLException; import org.apache.shardingsphere.infra.util.props.PropertiesBuilder; @@ -41,10 +41,10 @@ class StandardJdbcUrlParserTest { @ArgumentsSource(TestCaseArgumentsProvider.class) void assertParse(final String name, final String actualURL, final int defaultPort, final String expectedHostname, final int expectedPort, final String expectedDatabaseName, final String expectedSchemaName, final Properties expectedQueryProps) { - StandardJdbcUrl actual = new StandardJdbcUrlParser().parse(actualURL, defaultPort); + ConnectionProperties actual = new StandardJdbcUrlParser().parse(actualURL, defaultPort); assertThat(actual.getHostname(), is(expectedHostname)); assertThat(actual.getPort(), is(expectedPort)); - assertThat(actual.getDatabase(), is(expectedDatabaseName)); + assertThat(actual.getCatalog(), is(expectedDatabaseName)); assertThat(actual.getSchema(), is(expectedSchemaName)); assertThat(actual.getQueryProperties(), is(expectedQueryProps)); } diff --git a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/fixture/ConnectionPropertiesParserFixture.java b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/fixture/ConnectionPropertiesParserFixture.java index a5cca500a9af3..140f5c63c3f57 100644 --- a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/fixture/ConnectionPropertiesParserFixture.java +++ b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/fixture/ConnectionPropertiesParserFixture.java @@ -19,7 +19,7 @@ import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; diff --git a/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java b/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java index c7bf068d8ea2e..52b5cf1647cf9 100644 --- a/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java +++ b/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java @@ -19,8 +19,7 @@ import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; /** * Connection properties parser of ClickHouse. @@ -31,8 +30,7 @@ public final class ClickHouseConnectionPropertiesParser implements ConnectionPro @Override public ConnectionProperties parse(final String url, final String username, final String catalog) { - StandardJdbcUrl standardJdbcUrl = new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); - return new ConnectionProperties(standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), standardJdbcUrl.getDatabase(), standardJdbcUrl.getSchema(), standardJdbcUrl.getQueryProperties()); + return new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); } @Override diff --git a/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java b/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java index a6de5f1de5184..bcdc7b717a711 100644 --- a/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java +++ b/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java @@ -19,8 +19,7 @@ import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; /** * Connection properties parser of MySQL. @@ -31,9 +30,7 @@ public final class MySQLConnectionPropertiesParser implements ConnectionProperti @Override public ConnectionProperties parse(final String url, final String username, final String catalog) { - StandardJdbcUrl standardJdbcUrl = new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); - return new ConnectionProperties(standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), - null == catalog ? standardJdbcUrl.getDatabase() : catalog, standardJdbcUrl.getSchema(), standardJdbcUrl.getQueryProperties()); + return new StandardJdbcUrlParser().parse(url, DEFAULT_PORT).changeCatalog(catalog); } @Override diff --git a/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java b/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java index cde953948d10a..964871dc2e227 100644 --- a/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java +++ b/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java @@ -19,8 +19,7 @@ import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; /** * Connection properties parser of openGauss. @@ -31,8 +30,7 @@ public final class OpenGaussConnectionPropertiesParser implements ConnectionProp @Override public ConnectionProperties parse(final String url, final String username, final String catalog) { - StandardJdbcUrl standardJdbcUrl = new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); - return new ConnectionProperties(standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), standardJdbcUrl.getDatabase(), standardJdbcUrl.getSchema(), standardJdbcUrl.getQueryProperties()); + return new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); } @Override diff --git a/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java b/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java index b063982dc1c26..cd282f76f6376 100644 --- a/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java +++ b/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java @@ -19,8 +19,7 @@ import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; /** * Connection properties parser of PostgreSQL. @@ -31,8 +30,7 @@ public final class PostgreSQLConnectionPropertiesParser implements ConnectionPro @Override public ConnectionProperties parse(final String url, final String username, final String catalog) { - StandardJdbcUrl standardJdbcUrl = new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); - return new ConnectionProperties(standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), standardJdbcUrl.getDatabase(), standardJdbcUrl.getSchema(), standardJdbcUrl.getQueryProperties()); + return new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); } @Override diff --git a/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java b/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java index c2fb86a53ca35..12920da36986f 100644 --- a/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java +++ b/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java @@ -19,8 +19,7 @@ import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; /** * Connection properties parser of Presto. @@ -31,8 +30,7 @@ public final class PrestoConnectionPropertiesParser implements ConnectionPropert @Override public ConnectionProperties parse(final String url, final String username, final String catalog) { - StandardJdbcUrl standardJdbcUrl = new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); - return new ConnectionProperties(standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), standardJdbcUrl.getDatabase(), standardJdbcUrl.getSchema(), standardJdbcUrl.getQueryProperties()); + return new StandardJdbcUrlParser().parse(url, DEFAULT_PORT); } @Override diff --git a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/ShardingSpherePipelineDataSourceConfiguration.java b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/ShardingSpherePipelineDataSourceConfiguration.java index 8da5e363a3c2f..78118ac07567c 100644 --- a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/ShardingSpherePipelineDataSourceConfiguration.java +++ b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/ShardingSpherePipelineDataSourceConfiguration.java @@ -24,7 +24,7 @@ import org.apache.shardingsphere.data.pipeline.api.PipelineDataSourceConfiguration; import org.apache.shardingsphere.data.pipeline.spi.JdbcQueryPropertiesExtension; import org.apache.shardingsphere.database.connector.core.jdbcurl.appender.JdbcUrlAppender; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader; import org.apache.shardingsphere.database.connector.core.type.DatabaseType; import org.apache.shardingsphere.database.connector.core.type.DatabaseTypeFactory; diff --git a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/StandardPipelineDataSourceConfiguration.java b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/StandardPipelineDataSourceConfiguration.java index e6ea28f37c393..2c1482e8e1e81 100644 --- a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/StandardPipelineDataSourceConfiguration.java +++ b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/type/StandardPipelineDataSourceConfiguration.java @@ -23,7 +23,7 @@ import org.apache.shardingsphere.data.pipeline.api.PipelineDataSourceConfiguration; import org.apache.shardingsphere.data.pipeline.spi.JdbcQueryPropertiesExtension; import org.apache.shardingsphere.database.connector.core.jdbcurl.appender.JdbcUrlAppender; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader; import org.apache.shardingsphere.database.connector.core.type.DatabaseType; import org.apache.shardingsphere.database.connector.core.type.DatabaseTypeFactory; diff --git a/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java b/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java index 65791939249db..9c5d50d111657 100644 --- a/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java +++ b/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java @@ -17,13 +17,9 @@ package org.apache.shardingsphere.test.infra.fixture.connector; -import com.google.common.base.Strings; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties; import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl; -import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser; - -import java.util.Properties; +import org.apache.shardingsphere.database.connector.core.jdbcurl.parser.StandardJdbcUrlParser; /** * Mocked connection properties parser. @@ -32,9 +28,7 @@ public final class MockedConnectionPropertiesParser implements ConnectionPropert @Override public ConnectionProperties parse(final String url, final String username, final String catalog) { - StandardJdbcUrl standardJdbcUrl = new StandardJdbcUrlParser().parse(url, -1); - return new ConnectionProperties( - standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), Strings.isNullOrEmpty(catalog) ? standardJdbcUrl.getDatabase() : catalog, standardJdbcUrl.getSchema(), new Properties()); + return new StandardJdbcUrlParser().parse(url, -1).changeCatalog(catalog); } @Override