This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 afd2198960d Refactor ShardingParameterRewriterBuilder (#33614)
afd2198960d is described below
commit afd2198960ddb9b9625bc5bbae2210c7d1391ddf
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Nov 11 23:57:46 2024 +0800
Refactor ShardingParameterRewriterBuilder (#33614)
* Refactor ShardingParameterRewriterBuilder
* Refactor ShardingParameterRewriterBuilder
---
.../context/ShardingSQLRewriteContextDecorator.java | 3 +--
.../parameter/ShardingParameterRewriterBuilder.java | 14 +-------------
.../impl/ShardingPaginationParameterRewriter.java | 9 ++++-----
.../parameter/ShardingParameterRewriterBuilderTest.java | 7 ++-----
.../impl/ShardingPaginationParameterRewriterTest.java | 5 ++---
5 files changed, 10 insertions(+), 28 deletions(-)
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
index baff4e29055..99446c80dc2 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
@@ -51,8 +51,7 @@ public final class ShardingSQLRewriteContextDecorator
implements SQLRewriteConte
return;
}
if (!sqlRewriteContext.getParameters().isEmpty()) {
- Collection<ParameterRewriter> parameterRewriters =
- new ShardingParameterRewriterBuilder(routeContext,
sqlRewriteContext.getDatabase().getSchemas(),
sqlStatementContext).getParameterRewriters();
+ Collection<ParameterRewriter> parameterRewriters = new
ShardingParameterRewriterBuilder(routeContext,
sqlStatementContext).getParameterRewriters();
rewriteParameters(sqlRewriteContext, parameterRewriters);
}
sqlRewriteContext.addSQLTokenGenerators(new
ShardingTokenGenerateBuilder(rule, routeContext,
sqlStatementContext).getSQLTokenGenerators());
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilder.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilder.java
index 0bcd340b3ee..1511205dd3c 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilder.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilder.java
@@ -19,18 +19,14 @@ package
org.apache.shardingsphere.sharding.rewrite.parameter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
import
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.keygen.GeneratedKeyInsertValueParameterRewriter;
-import
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.RouteContextAware;
-import
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.SchemaMetaDataAware;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import
org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingPaginationParameterRewriter;
import java.util.Collection;
import java.util.LinkedList;
-import java.util.Map;
/**
* Parameter rewriter builder for sharding.
@@ -40,25 +36,17 @@ public final class ShardingParameterRewriterBuilder
implements ParameterRewriter
private final RouteContext routeContext;
- private final Map<String, ShardingSphereSchema> schemas;
-
private final SQLStatementContext sqlStatementContext;
@Override
public Collection<ParameterRewriter> getParameterRewriters() {
Collection<ParameterRewriter> result = new LinkedList<>();
addParameterRewriter(result, new
GeneratedKeyInsertValueParameterRewriter());
- addParameterRewriter(result, new
ShardingPaginationParameterRewriter());
+ addParameterRewriter(result, new
ShardingPaginationParameterRewriter(routeContext));
return result;
}
private void addParameterRewriter(final Collection<ParameterRewriter>
paramRewriters, final ParameterRewriter toBeAddedParamRewriter) {
- if (toBeAddedParamRewriter instanceof SchemaMetaDataAware) {
- ((SchemaMetaDataAware) toBeAddedParamRewriter).setSchemas(schemas);
- }
- if (toBeAddedParamRewriter instanceof RouteContextAware) {
- ((RouteContextAware)
toBeAddedParamRewriter).setRouteContext(routeContext);
- }
if (toBeAddedParamRewriter.isNeedRewrite(sqlStatementContext)) {
paramRewriters.add(toBeAddedParamRewriter);
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriter.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriter.java
index f50cb518328..d03383e3e44 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriter.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriter.java
@@ -17,8 +17,7 @@
package org.apache.shardingsphere.sharding.rewrite.parameter.impl;
-import lombok.Setter;
-import
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.RouteContextAware;
+import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.infra.binder.context.segment.select.pagination.PaginationContext;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
@@ -32,10 +31,10 @@ import java.util.List;
/**
* Sharding pagination parameter rewriter.
*/
-@Setter
-public final class ShardingPaginationParameterRewriter implements
ParameterRewriter, RouteContextAware {
+@RequiredArgsConstructor
+public final class ShardingPaginationParameterRewriter implements
ParameterRewriter {
- private RouteContext routeContext;
+ private final RouteContext routeContext;
@Override
public boolean isNeedRewrite(final SQLStatementContext
sqlStatementContext) {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilderTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilderTest.java
index 084babd58e5..c6b8673c255 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilderTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/ShardingParameterRewriterBuilderTest.java
@@ -18,14 +18,12 @@
package org.apache.shardingsphere.sharding.rewrite.parameter;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
-import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import
org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingPaginationParameterRewriter;
import org.junit.jupiter.api.Test;
import java.util.Collection;
-import java.util.Collections;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
@@ -41,8 +39,7 @@ class ShardingParameterRewriterBuilderTest {
void assertGetParameterRewritersWhenPaginationIsNeedRewrite() {
SelectStatementContext statementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
when(statementContext.getPaginationContext().isHasPagination()).thenReturn(true);
- Collection<ParameterRewriter> actual = new
ShardingParameterRewriterBuilder(
- mock(RouteContext.class), Collections.singletonMap("test",
mock(ShardingSphereSchema.class)), statementContext).getParameterRewriters();
+ Collection<ParameterRewriter> actual = new
ShardingParameterRewriterBuilder(mock(RouteContext.class),
statementContext).getParameterRewriters();
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next(),
instanceOf(ShardingPaginationParameterRewriter.class));
}
@@ -53,6 +50,6 @@ class ShardingParameterRewriterBuilderTest {
when(routeContext.isSingleRouting()).thenReturn(true);
SelectStatementContext statementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
when(statementContext.getPaginationContext().isHasPagination()).thenReturn(true);
- assertTrue(new ShardingParameterRewriterBuilder(routeContext,
Collections.singletonMap("test", mock(ShardingSphereSchema.class)),
statementContext).getParameterRewriters().isEmpty());
+ assertTrue(new ShardingParameterRewriterBuilder(routeContext,
statementContext).getParameterRewriters().isEmpty());
}
}
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriterTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriterTest.java
index 7f89901c015..eb425cc6cc4 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriterTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameter/impl/ShardingPaginationParameterRewriterTest.java
@@ -53,9 +53,8 @@ class ShardingPaginationParameterRewriterTest {
@Test
void assertIsNeedRewrite() {
- ShardingPaginationParameterRewriter paramRewriter = new
ShardingPaginationParameterRewriter();
RouteContext routeContext = mock(RouteContext.class);
- paramRewriter.setRouteContext(routeContext);
+ ShardingPaginationParameterRewriter paramRewriter = new
ShardingPaginationParameterRewriter(routeContext);
InsertStatementContext insertStatementContext =
mock(InsertStatementContext.class);
assertFalse(paramRewriter.isNeedRewrite(insertStatementContext));
SelectStatementContext selectStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
@@ -81,7 +80,7 @@ class ShardingPaginationParameterRewriterTest {
when(pagination.getRevisedOffset()).thenReturn(TEST_REVISED_OFFSET);
when(pagination.getRevisedRowCount(selectStatementContext)).thenReturn(TEST_REVISED_ROW_COUNT);
when(selectStatementContext.getPaginationContext()).thenReturn(pagination);
- new
ShardingPaginationParameterRewriter().rewrite(standardParamBuilder,
selectStatementContext, null);
+ new
ShardingPaginationParameterRewriter(null).rewrite(standardParamBuilder,
selectStatementContext, null);
assertTrue(addOffsetParametersFlag);
assertTrue(addRowCountParameterFlag);
}