Skip to content

Commit fea3761

Browse files
authored
Remove EncryptConditionsAware and refactor DatabaseTypedSPILoader and DatabaseTypeRegistry (#37680)
1 parent 2ddad0a commit fea3761

File tree

7 files changed

+18
-74
lines changed

7 files changed

+18
-74
lines changed

database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/spi/DatabaseTypedSPILoader.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,8 @@ public static <T extends DatabaseTypedSPI> Optional<T> findService(final Class<T
4545
if (result.isPresent()) {
4646
return result;
4747
}
48-
if (databaseType.getTrunkDatabaseType().isPresent()) {
49-
return TypedSPILoader.findService(spiClass, databaseType.getTrunkDatabaseType().get());
50-
}
51-
return result;
48+
Optional<DatabaseType> trunkDatabaseType = databaseType.getTrunkDatabaseType();
49+
return trunkDatabaseType.isPresent() ? TypedSPILoader.findService(spiClass, trunkDatabaseType.get()) : result;
5250
}
5351

5452
/**
@@ -65,10 +63,8 @@ public static <T extends DatabaseTypedSPI> Optional<T> findService(final Class<T
6563
if (result.isPresent()) {
6664
return result;
6765
}
68-
if (databaseType.getTrunkDatabaseType().isPresent()) {
69-
return TypedSPILoader.findService(spiClass, databaseType.getTrunkDatabaseType().get(), props);
70-
}
71-
return result;
66+
Optional<DatabaseType> trunkDatabaseType = databaseType.getTrunkDatabaseType();
67+
return trunkDatabaseType.isPresent() ? TypedSPILoader.findService(spiClass, trunkDatabaseType.get(), props) : result;
7268
}
7369

7470
/**

database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/type/DatabaseTypeRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public String getDefaultSchemaName(final String databaseName) {
6767
* @return formatted identifier pattern
6868
*/
6969
public String formatIdentifierPattern(final String identifierPattern) {
70-
switch (DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType).getIdentifierPatternType()) {
70+
switch (dialectDatabaseMetaData.getIdentifierPatternType()) {
7171
case UPPER_CASE:
7272
return identifierPattern.toUpperCase();
7373
case LOWER_CASE:

features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/aware/EncryptConditionsAware.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilder.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package org.apache.shardingsphere.encrypt.rewrite.token;
1919

2020
import lombok.RequiredArgsConstructor;
21-
import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptConditionsAware;
2221
import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptCondition;
2322
import org.apache.shardingsphere.encrypt.rewrite.token.generator.assignment.EncryptInsertAssignmentTokenGenerator;
2423
import org.apache.shardingsphere.encrypt.rewrite.token.generator.assignment.EncryptUpdateAssignmentTokenGenerator;
@@ -71,8 +70,8 @@ public Collection<SQLTokenGenerator> getSQLTokenGenerators() {
7170
addSQLTokenGenerator(result, new EncryptUpdateAssignmentTokenGenerator(rule, database));
7271
addSQLTokenGenerator(result, new EncryptPredicateColumnTokenGenerator(rule));
7372
addSQLTokenGenerator(result, new EncryptInsertPredicateColumnTokenGenerator(rule));
74-
addSQLTokenGenerator(result, new EncryptPredicateValueTokenGenerator(rule, database));
75-
addSQLTokenGenerator(result, new EncryptInsertPredicateValueTokenGenerator(rule, database));
73+
addSQLTokenGenerator(result, new EncryptPredicateValueTokenGenerator(rule, database, encryptConditions));
74+
addSQLTokenGenerator(result, new EncryptInsertPredicateValueTokenGenerator(rule, database, encryptConditions));
7675
addSQLTokenGenerator(result, new EncryptInsertValuesTokenGenerator(rule, database));
7776
addSQLTokenGenerator(result, new EncryptInsertDefaultColumnsTokenGenerator(rule));
7877
addSQLTokenGenerator(result, new EncryptInsertCipherNameTokenGenerator(rule));
@@ -86,15 +85,8 @@ public Collection<SQLTokenGenerator> getSQLTokenGenerators() {
8685
}
8786

8887
private void addSQLTokenGenerator(final Collection<SQLTokenGenerator> sqlTokenGenerators, final SQLTokenGenerator toBeAddedSQLTokenGenerator) {
89-
setUpSQLTokenGenerator(toBeAddedSQLTokenGenerator);
9088
if (toBeAddedSQLTokenGenerator.isGenerateSQLToken(sqlStatementContext)) {
9189
sqlTokenGenerators.add(toBeAddedSQLTokenGenerator);
9290
}
9391
}
94-
95-
private void setUpSQLTokenGenerator(final SQLTokenGenerator toBeAddedSQLTokenGenerator) {
96-
if (toBeAddedSQLTokenGenerator instanceof EncryptConditionsAware) {
97-
((EncryptConditionsAware) toBeAddedSQLTokenGenerator).setEncryptConditions(encryptConditions);
98-
}
99-
}
10092
}

features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateValueTokenGenerator.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import lombok.RequiredArgsConstructor;
2121
import lombok.Setter;
22-
import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptConditionsAware;
2322
import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptCondition;
2423
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
2524
import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
@@ -39,15 +38,15 @@
3938
@HighFrequencyInvocation
4039
@RequiredArgsConstructor
4140
@Setter
42-
public final class EncryptInsertPredicateValueTokenGenerator implements CollectionSQLTokenGenerator<InsertStatementContext>, ParametersAware, EncryptConditionsAware {
41+
public final class EncryptInsertPredicateValueTokenGenerator implements CollectionSQLTokenGenerator<InsertStatementContext>, ParametersAware {
4342

4443
private final EncryptRule rule;
4544

4645
private final ShardingSphereDatabase database;
4746

48-
private List<Object> parameters;
47+
private final Collection<EncryptCondition> encryptConditions;
4948

50-
private Collection<EncryptCondition> encryptConditions;
49+
private List<Object> parameters;
5150

5251
@Override
5352
public boolean isGenerateSQLToken(final SQLStatementContext sqlStatementContext) {
@@ -57,9 +56,8 @@ public boolean isGenerateSQLToken(final SQLStatementContext sqlStatementContext)
5756

5857
@Override
5958
public Collection<SQLToken> generateSQLTokens(final InsertStatementContext sqlStatementContext) {
60-
EncryptPredicateValueTokenGenerator generator = new EncryptPredicateValueTokenGenerator(rule, database);
59+
EncryptPredicateValueTokenGenerator generator = new EncryptPredicateValueTokenGenerator(rule, database, encryptConditions);
6160
generator.setParameters(parameters);
62-
generator.setEncryptConditions(encryptConditions);
6361
return generator.generateSQLTokens(sqlStatementContext.getInsertSelectContext().getSelectStatementContext());
6462
}
6563
}

features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateValueTokenGenerator.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import lombok.Setter;
2222
import org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
2323
import org.apache.shardingsphere.encrypt.exception.metadata.MissingMatchedEncryptQueryAlgorithmException;
24-
import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptConditionsAware;
2524
import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptCondition;
2625
import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptConditionValues;
2726
import org.apache.shardingsphere.encrypt.rewrite.condition.impl.EncryptBinaryCondition;
@@ -55,15 +54,15 @@
5554
@HighFrequencyInvocation
5655
@RequiredArgsConstructor
5756
@Setter
58-
public final class EncryptPredicateValueTokenGenerator implements CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware, EncryptConditionsAware {
57+
public final class EncryptPredicateValueTokenGenerator implements CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware {
5958

6059
private final EncryptRule rule;
6160

6261
private final ShardingSphereDatabase database;
6362

64-
private List<Object> parameters;
63+
private final Collection<EncryptCondition> encryptConditions;
6564

66-
private Collection<EncryptCondition> encryptConditions;
65+
private List<Object> parameters;
6766

6867
@Override
6968
public boolean isGenerateSQLToken(final SQLStatementContext sqlStatementContext) {

features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateValueTokenGeneratorTest.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.shardingsphere.infra.binder.context.statement.type.dml.UpdateStatementContext;
2424
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
2525
import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
26-
import org.junit.jupiter.api.BeforeEach;
2726
import org.junit.jupiter.api.Test;
2827

2928
import java.util.Collection;
@@ -36,23 +35,18 @@
3635

3736
class EncryptPredicateValueTokenGeneratorTest {
3837

39-
private EncryptPredicateValueTokenGenerator generator;
40-
41-
@BeforeEach
42-
void setup() {
43-
generator = new EncryptPredicateValueTokenGenerator(EncryptGeneratorFixtureBuilder.createEncryptRule(),
44-
new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()));
45-
}
46-
4738
@Test
4839
void assertIsGenerateSQLToken() {
40+
EncryptPredicateValueTokenGenerator generator = new EncryptPredicateValueTokenGenerator(EncryptGeneratorFixtureBuilder.createEncryptRule(),
41+
new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), Collections.emptyList());
4942
assertTrue(generator.isGenerateSQLToken(EncryptGeneratorFixtureBuilder.createUpdateStatementContext()));
5043
}
5144

5245
@Test
5346
void assertGenerateSQLTokenFromGenerateNewSQLToken() {
5447
UpdateStatementContext updateStatementContext = EncryptGeneratorFixtureBuilder.createUpdateStatementContext();
55-
generator.setEncryptConditions(getEncryptConditions(updateStatementContext));
48+
EncryptPredicateValueTokenGenerator generator = new EncryptPredicateValueTokenGenerator(EncryptGeneratorFixtureBuilder.createEncryptRule(),
49+
new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), getEncryptConditions(updateStatementContext));
5650
Collection<SQLToken> sqlTokens = generator.generateSQLTokens(updateStatementContext);
5751
assertThat(sqlTokens.size(), is(1));
5852
assertThat(sqlTokens.iterator().next().toString(), is("'assistedEncryptValue'"));

0 commit comments

Comments
 (0)