You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/02/08 11:31:25 UTC
[shardingsphere] branch master updated: Add TableMetaDataReviseEntry to instead of all reviser SPIs (#24060)
This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 ab9547b3213 Add TableMetaDataReviseEntry to instead of all reviser SPIs (#24060)
ab9547b3213 is described below
commit ab9547b32132d5c3918c0879e87b749a486af686
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Feb 8 19:31:10 2023 +0800
Add TableMetaDataReviseEntry to instead of all reviser SPIs (#24060)
* Refactor ColumnDataTypeReviser
* Add TableMetaDataReviseEntry to instead of all reviser SPIs
* Add TableMetaDataReviseEntry to instead of all reviser SPIs
* Refactor EncryptColumnNameReviser
* Refactor ConstraintReviseEngine and IndexReviseEngine
* Refactor ShardingColumnGeneratedReviser
* Refactor TableMetaDataReviseEntry
---
.../metadata/reviser/EncryptColumnNameReviser.java | 33 ++++---
.../reviser/EncryptTableMetaDataReviseEntry.java} | 19 ++--
....schema.decorator.spi.TableMetaDataReviseEntry} | 2 +-
.../reviser/ShardingColumnGeneratedReviser.java | 13 ++-
.../reviser/ShardingConstraintReviser.java | 15 +--
.../metadata/reviser/ShardingIndexReviser.java | 15 +--
....java => ShardingTableMetaDataReviseEntry.java} | 28 ++++--
.../metadata/reviser/ShardingTableNameReviser.java | 5 -
...ase.schema.decorator.reviser.index.IndexReviser | 18 ----
....schema.decorator.spi.TableMetaDataReviseEntry} | 2 +-
.../reviser/column/ColumnDataTypeReviser.java | 3 +-
.../reviser/column/ColumnGeneratedReviser.java | 5 +-
.../reviser/column/ColumnNameReviser.java | 5 +-
.../reviser/column/ColumnReviseEngine.java | 17 ++--
.../reviser/constraint/ConstraintReviseEngine.java | 28 +++---
.../reviser/constraint/ConstraintReviser.java | 5 +-
.../decorator/reviser/index/IndexReviseEngine.java | 28 +++---
.../decorator/reviser/index/IndexReviser.java | 5 +-
.../reviser/table/TableMetaDataReviseEngine.java | 20 ++--
.../decorator/reviser/table/TableNameReviser.java | 5 +-
.../decorator/spi/TableMetaDataReviseEntry.java | 101 +++++++++++++++++++++
.../metadata/reviser/SingleConstraintReviser.java | 5 -
.../metadata/reviser/SingleIndexReviser.java | 5 -
...er.java => SingleTableMetaDataReviseEntry.java} | 17 ++--
...ase.schema.decorator.reviser.index.IndexReviser | 18 ----
...e.schema.decorator.spi.TableMetaDataReviseEntry | 2 +-
26 files changed, 234 insertions(+), 185 deletions(-)
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java
index 08f1f5657f0..75b85c931fb 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java
@@ -29,29 +29,32 @@ import java.util.Optional;
*/
public final class EncryptColumnNameReviser implements ColumnNameReviser<EncryptRule> {
+ private final EncryptTable encryptTable;
+
+ private final Collection<String> plainColumns;
+
+ private final Collection<String> assistedQueryColumns;
+
+ private final Collection<String> likeQueryColumns;
+
+ public EncryptColumnNameReviser(final EncryptTable encryptTable) {
+ this.encryptTable = encryptTable;
+ plainColumns = encryptTable.getPlainColumns();
+ assistedQueryColumns = encryptTable.getAssistedQueryColumns();
+ likeQueryColumns = encryptTable.getLikeQueryColumns();
+ }
+
@Override
public Optional<String> revise(final String originalName, final String tableName, final EncryptRule rule) {
- Optional<EncryptTable> encryptTable = rule.findEncryptTable(tableName);
- if (!encryptTable.isPresent()) {
- return Optional.of(originalName);
- }
- Collection<String> plainColumns = encryptTable.get().getPlainColumns();
- Collection<String> assistedQueryColumns = encryptTable.get().getAssistedQueryColumns();
- Collection<String> likeQueryColumns = encryptTable.get().getLikeQueryColumns();
if (plainColumns.contains(originalName)) {
- return Optional.of(encryptTable.get().getLogicColumnByPlainColumn(originalName));
+ return Optional.of(encryptTable.getLogicColumnByPlainColumn(originalName));
}
- if (encryptTable.get().isCipherColumn(originalName)) {
- return Optional.of(encryptTable.get().getLogicColumnByCipherColumn(originalName));
+ if (encryptTable.isCipherColumn(originalName)) {
+ return Optional.of(encryptTable.getLogicColumnByCipherColumn(originalName));
}
if (!assistedQueryColumns.contains(originalName) && !likeQueryColumns.contains(originalName)) {
return Optional.of(originalName);
}
return Optional.empty();
}
-
- @Override
- public String getType() {
- return EncryptRule.class.getSimpleName();
- }
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptTableMetaDataReviseEntry.java
similarity index 62%
copy from features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java
copy to features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptTableMetaDataReviseEntry.java
index 8dac6ff9b35..21f44d2f2d7 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptTableMetaDataReviseEntry.java
@@ -15,24 +15,25 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.metadata.reviser;
+package org.apache.shardingsphere.encrypt.metadata.reviser;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.table.TableNameReviser;
-import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.apache.shardingsphere.sharding.rule.TableRule;
+import org.apache.shardingsphere.encrypt.rule.EncryptRule;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry;
+
+import java.util.Optional;
/**
- * Sharding table name reviser.
+ * Encrypt table meta data revise entry.
*/
-public final class ShardingTableNameReviser implements TableNameReviser<ShardingRule> {
+public final class EncryptTableMetaDataReviseEntry implements TableMetaDataReviseEntry<EncryptRule> {
@Override
- public String revise(final String originalName, final ShardingRule rule) {
- return rule.findTableRuleByActualTable(originalName).map(TableRule::getLogicTable).orElse(originalName);
+ public Optional<EncryptColumnNameReviser> getColumnNameReviser(final EncryptRule rule, final String tableName) {
+ return rule.findEncryptTable(tableName).map(EncryptColumnNameReviser::new);
}
@Override
public String getType() {
- return ShardingRule.class.getSimpleName();
+ return EncryptRule.class.getSimpleName();
}
}
diff --git a/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnGeneratedReviser b/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
similarity index 90%
rename from features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnGeneratedReviser
rename to features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
index 8d31e51bc1a..7c6ab16861d 100644
--- a/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnGeneratedReviser
+++ b/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.sharding.metadata.reviser.ShardingColumnGeneratedReviser
+org.apache.shardingsphere.encrypt.metadata.reviser.EncryptTableMetaDataReviseEntry
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingColumnGeneratedReviser.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingColumnGeneratedReviser.java
index a3b50f0f6e5..0516aaa759f 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingColumnGeneratedReviser.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingColumnGeneratedReviser.java
@@ -17,23 +17,22 @@
package org.apache.shardingsphere.sharding.metadata.reviser;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnGeneratedReviser;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import org.apache.shardingsphere.sharding.rule.TableRule;
/**
* Sharding column generated reviser.
*/
+@RequiredArgsConstructor
public final class ShardingColumnGeneratedReviser implements ColumnGeneratedReviser<ShardingRule> {
- @Override
- public boolean revise(final ColumnMetaData originalMetaData, final ShardingRule rule) {
- return rule.findTableRuleByActualTable(originalMetaData.getName())
- .map(optional -> originalMetaData.getName().equalsIgnoreCase(optional.getGenerateKeyColumn().orElse(null))).orElseGet(originalMetaData::isGenerated);
- }
+ private final TableRule tableRule;
@Override
- public String getType() {
- return ShardingRule.class.getSimpleName();
+ public boolean revise(final ColumnMetaData originalMetaData, final ShardingRule rule) {
+ return originalMetaData.getName().equalsIgnoreCase(tableRule.getGenerateKeyColumn().orElse(null));
}
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingConstraintReviser.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingConstraintReviser.java
index b7b97a9c1cc..d7d19f98927 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingConstraintReviser.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingConstraintReviser.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sharding.metadata.reviser;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.constraint.ConstraintReviser;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ConstraintMetaData;
@@ -28,15 +29,14 @@ import java.util.Optional;
/**
* Sharding constraint reviser.
*/
+@RequiredArgsConstructor
public final class ShardingConstraintReviser implements ConstraintReviser<ShardingRule> {
+ private final TableRule tableRule;
+
@Override
public Optional<ConstraintMetaData> revise(final String tableName, final ConstraintMetaData originalMetaData, final ShardingRule rule) {
- Optional<TableRule> tableRule = rule.findTableRuleByActualTable(tableName);
- if (!tableRule.isPresent()) {
- return Optional.of(originalMetaData);
- }
- for (DataNode each : tableRule.get().getActualDataNodes()) {
+ for (DataNode each : tableRule.getActualDataNodes()) {
String referencedTableName = originalMetaData.getReferencedTableName();
Optional<String> logicIndexName = getLogicIndex(originalMetaData.getName(), each.getTableName());
if (logicIndexName.isPresent()) {
@@ -50,9 +50,4 @@ public final class ShardingConstraintReviser implements ConstraintReviser<Shardi
String indexNameSuffix = "_" + actualTableName;
return actualIndexName.endsWith(indexNameSuffix) ? Optional.of(actualIndexName.replace(indexNameSuffix, "")) : Optional.empty();
}
-
- @Override
- public String getType() {
- return ShardingRule.class.getSimpleName();
- }
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingIndexReviser.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingIndexReviser.java
index db127f0aaff..54145a4e996 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingIndexReviser.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingIndexReviser.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sharding.metadata.reviser;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
@@ -28,15 +29,14 @@ import java.util.Optional;
/**
* Sharding index reviser.
*/
+@RequiredArgsConstructor
public final class ShardingIndexReviser implements IndexReviser<ShardingRule> {
+ private final TableRule tableRule;
+
@Override
public Optional<IndexMetaData> revise(final String tableName, final IndexMetaData originalMetaData, final ShardingRule rule) {
- Optional<TableRule> tableRule = rule.findTableRuleByActualTable(tableName);
- if (!tableRule.isPresent()) {
- return Optional.of(originalMetaData);
- }
- for (DataNode each : tableRule.get().getActualDataNodes()) {
+ for (DataNode each : tableRule.getActualDataNodes()) {
Optional<String> logicIndexName = getLogicIndex(originalMetaData.getName(), each.getTableName());
if (logicIndexName.isPresent()) {
return Optional.of(new IndexMetaData(logicIndexName.get()));
@@ -49,9 +49,4 @@ public final class ShardingIndexReviser implements IndexReviser<ShardingRule> {
String indexNameSuffix = "_" + actualTableName;
return actualIndexName.endsWith(indexNameSuffix) ? Optional.of(actualIndexName.replace(indexNameSuffix, "")) : Optional.empty();
}
-
- @Override
- public String getType() {
- return ShardingRule.class.getSimpleName();
- }
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableMetaDataReviseEntry.java
similarity index 51%
copy from features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java
copy to features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableMetaDataReviseEntry.java
index 8dac6ff9b35..810f8bbd623 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableMetaDataReviseEntry.java
@@ -17,18 +17,34 @@
package org.apache.shardingsphere.sharding.metadata.reviser;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.table.TableNameReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.apache.shardingsphere.sharding.rule.TableRule;
+
+import java.util.Optional;
/**
- * Sharding table name reviser.
+ * Sharding table meta data revise entry.
*/
-public final class ShardingTableNameReviser implements TableNameReviser<ShardingRule> {
+public final class ShardingTableMetaDataReviseEntry implements TableMetaDataReviseEntry<ShardingRule> {
+
+ @Override
+ public Optional<ShardingTableNameReviser> getTableNameReviser() {
+ return Optional.of(new ShardingTableNameReviser());
+ }
+
+ @Override
+ public Optional<ShardingColumnGeneratedReviser> getColumnGeneratedReviser(final ShardingRule rule, final String tableName) {
+ return rule.findTableRuleByActualTable(tableName).map(ShardingColumnGeneratedReviser::new);
+ }
+
+ @Override
+ public Optional<ShardingIndexReviser> getIndexReviser(final ShardingRule rule, final String tableName) {
+ return rule.findTableRuleByActualTable(tableName).map(ShardingIndexReviser::new);
+ }
@Override
- public String revise(final String originalName, final ShardingRule rule) {
- return rule.findTableRuleByActualTable(originalName).map(TableRule::getLogicTable).orElse(originalName);
+ public Optional<ShardingConstraintReviser> getConstraintReviser(final ShardingRule rule, final String tableName) {
+ return rule.findTableRuleByActualTable(tableName).map(ShardingConstraintReviser::new);
}
@Override
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java
index 8dac6ff9b35..a0f6263bb34 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingTableNameReviser.java
@@ -30,9 +30,4 @@ public final class ShardingTableNameReviser implements TableNameReviser<Sharding
public String revise(final String originalName, final ShardingRule rule) {
return rule.findTableRuleByActualTable(originalName).map(TableRule::getLogicTable).orElse(originalName);
}
-
- @Override
- public String getType() {
- return ShardingRule.class.getSimpleName();
- }
}
diff --git a/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser b/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser
deleted file mode 100644
index 8e91d45dbbf..00000000000
--- a/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.sharding.metadata.reviser.ShardingIndexReviser
\ No newline at end of file
diff --git a/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.table.TableNameReviser b/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
similarity index 97%
rename from features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.table.TableNameReviser
rename to features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
index ead2ca3caca..680c4d4c6d9 100644
--- a/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.table.TableNameReviser
+++ b/features/sharding/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.sharding.metadata.reviser.ShardingTableNameReviser
+org.apache.shardingsphere.sharding.metadata.reviser.ShardingTableMetaDataReviseEntry
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnDataTypeReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnDataTypeReviser.java
index 5489b103057..042794944d5 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnDataTypeReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnDataTypeReviser.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.infra.metadata.database.schema.decorator.revis
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
import javax.sql.DataSource;
import java.util.Optional;
@@ -29,7 +28,7 @@ import java.util.Optional;
*
* @param <T> type of rule
*/
-public interface ColumnDataTypeReviser<T extends ShardingSphereRule> extends TypedSPI {
+public interface ColumnDataTypeReviser<T extends ShardingSphereRule> {
/**
* Revise column data type.
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnGeneratedReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnGeneratedReviser.java
index 3e013b7cf02..df9f8a59863 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnGeneratedReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnGeneratedReviser.java
@@ -19,16 +19,13 @@ package org.apache.shardingsphere.infra.metadata.database.schema.decorator.revis
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
/**
* Column generated reviser.
*
* @param <T> type of rule
*/
-@SingletonSPI
-public interface ColumnGeneratedReviser<T extends ShardingSphereRule> extends TypedSPI {
+public interface ColumnGeneratedReviser<T extends ShardingSphereRule> {
/**
* Revise generated column.
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
index 1108e4ceddc..ae2469bd905 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
@@ -18,8 +18,6 @@
package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
import java.util.Optional;
@@ -28,8 +26,7 @@ import java.util.Optional;
*
* @param <T> type of rule
*/
-@SingletonSPI
-public interface ColumnNameReviser<T extends ShardingSphereRule> extends TypedSPI {
+public interface ColumnNameReviser<T extends ShardingSphereRule> {
/**
* Revise column name.
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviseEngine.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviseEngine.java
index 545283e55aa..fcabcc2aa37 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviseEngine.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviseEngine.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.infra.metadata.database.schema.decorator.revis
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import javax.sql.DataSource;
import java.util.Collection;
@@ -42,6 +42,8 @@ public final class ColumnReviseEngine<T extends ShardingSphereRule> {
private final DataSource dataSource;
+ private final TableMetaDataReviseEntry<T> reviseEntry;
+
/**
* Revise column meta data.
*
@@ -50,23 +52,16 @@ public final class ColumnReviseEngine<T extends ShardingSphereRule> {
* @return revised column meta data
*/
public Collection<ColumnMetaData> revise(final String tableName, final Collection<ColumnMetaData> originalMetaDataList) {
- String type = rule.getClass().getSimpleName();
- @SuppressWarnings("rawtypes")
- Optional<ColumnNameReviser> nameReviser = TypedSPILoader.findService(ColumnNameReviser.class, type);
- @SuppressWarnings("rawtypes")
- Optional<ColumnDataTypeReviser> dataTypeReviser = TypedSPILoader.findService(ColumnDataTypeReviser.class, type);
- @SuppressWarnings("rawtypes")
- Optional<ColumnGeneratedReviser> generatedReviser = TypedSPILoader.findService(ColumnGeneratedReviser.class, type);
+ Optional<? extends ColumnNameReviser<T>> nameReviser = reviseEntry.getColumnNameReviser(rule, tableName);
+ Optional<? extends ColumnDataTypeReviser<T>> dataTypeReviser = reviseEntry.getColumnDataTypeReviser(rule, tableName);
+ Optional<? extends ColumnGeneratedReviser<T>> generatedReviser = reviseEntry.getColumnGeneratedReviser(rule, tableName);
Collection<ColumnMetaData> result = new LinkedHashSet<>();
for (ColumnMetaData each : originalMetaDataList) {
- @SuppressWarnings("unchecked")
Optional<String> name = nameReviser.isPresent() ? nameReviser.get().revise(each.getName(), tableName, rule) : Optional.of(each.getName());
if (!name.isPresent()) {
continue;
}
- @SuppressWarnings("unchecked")
Optional<Integer> dataType = dataTypeReviser.isPresent() ? dataTypeReviser.get().revise(each.getName(), tableName, rule, databaseType, dataSource) : Optional.empty();
- @SuppressWarnings("unchecked")
Optional<Boolean> generated = generatedReviser.map(optional -> optional.revise(each, rule));
result.add(new ColumnMetaData(name.get(),
dataType.orElseGet(each::getDataType), each.isPrimaryKey(), generated.orElse(each.isGenerated()), each.isCaseSensitive(), each.isVisible(), each.isUnsigned()));
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviseEngine.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviseEngine.java
index cb2ab23afe8..c06fa00bdc6 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviseEngine.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviseEngine.java
@@ -17,40 +17,40 @@
package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.constraint;
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ConstraintMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Optional;
+import java.util.stream.Collectors;
/**
* Constraint revise engine.
*
* @param <T> type of rule
*/
+@RequiredArgsConstructor
public final class ConstraintReviseEngine<T extends ShardingSphereRule> {
+ private final T rule;
+
+ private final TableMetaDataReviseEntry<T> reviseEntry;
+
/**
* Revise constraint meta data.
*
* @param tableName table name
* @param originalMetaDataList original constraint meta data list
- * @param rule rule
* @return revised constraint meta data
*/
- @SuppressWarnings({"rawtypes", "unchecked"})
- public Collection<ConstraintMetaData> revise(final String tableName, final Collection<ConstraintMetaData> originalMetaDataList, final T rule) {
- Optional<ConstraintReviser> reviser = TypedSPILoader.findService(ConstraintReviser.class, rule.getClass().getSimpleName());
- if (!reviser.isPresent()) {
- return originalMetaDataList;
- }
- Collection<ConstraintMetaData> result = new LinkedHashSet<>();
- for (ConstraintMetaData each : originalMetaDataList) {
- Optional<ConstraintMetaData> constraintMetaData = reviser.get().revise(tableName, each, rule);
- constraintMetaData.ifPresent(result::add);
- }
- return result;
+ public Collection<ConstraintMetaData> revise(final String tableName, final Collection<ConstraintMetaData> originalMetaDataList) {
+ Optional<? extends ConstraintReviser<T>> reviser = reviseEntry.getConstraintReviser(rule, tableName);
+ return reviser.isPresent()
+ ? originalMetaDataList.stream()
+ .map(each -> reviser.get().revise(tableName, each, rule)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toCollection(LinkedHashSet::new))
+ : originalMetaDataList;
}
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviser.java
index 0e2ab344360..36a7f9f6526 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviser.java
@@ -19,8 +19,6 @@ package org.apache.shardingsphere.infra.metadata.database.schema.decorator.revis
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ConstraintMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
import java.util.Optional;
@@ -29,8 +27,7 @@ import java.util.Optional;
*
* @param <T> type of rule
*/
-@SingletonSPI
-public interface ConstraintReviser<T extends ShardingSphereRule> extends TypedSPI {
+public interface ConstraintReviser<T extends ShardingSphereRule> {
/**
* Revise constraint meta data.
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviseEngine.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviseEngine.java
index 88d0188334b..e3186412362 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviseEngine.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviseEngine.java
@@ -17,40 +17,40 @@
package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index;
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Optional;
+import java.util.stream.Collectors;
/**
* Index revise engine.
*
* @param <T> type of rule
*/
+@RequiredArgsConstructor
public final class IndexReviseEngine<T extends ShardingSphereRule> {
+ private final T rule;
+
+ private final TableMetaDataReviseEntry<T> reviseEntry;
+
/**
* Revise index meta data.
*
* @param tableName table name
* @param originalMetaDataList original index meta data list
- * @param rule rule
* @return revised index meta data
*/
- @SuppressWarnings({"rawtypes", "unchecked"})
- public Collection<IndexMetaData> revise(final String tableName, final Collection<IndexMetaData> originalMetaDataList, final T rule) {
- Optional<IndexReviser> reviser = TypedSPILoader.findService(IndexReviser.class, rule.getClass().getSimpleName());
- if (!reviser.isPresent()) {
- return originalMetaDataList;
- }
- Collection<IndexMetaData> result = new LinkedHashSet<>();
- for (IndexMetaData each : originalMetaDataList) {
- Optional<IndexMetaData> indexMetaData = reviser.get().revise(tableName, each, rule);
- indexMetaData.ifPresent(result::add);
- }
- return result;
+ public Collection<IndexMetaData> revise(final String tableName, final Collection<IndexMetaData> originalMetaDataList) {
+ Optional<? extends IndexReviser<T>> reviser = reviseEntry.getIndexReviser(rule, tableName);
+ return reviser.isPresent()
+ ? originalMetaDataList.stream()
+ .map(each -> reviser.get().revise(tableName, each, rule)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toCollection(LinkedHashSet::new))
+ : originalMetaDataList;
}
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviser.java
index 2852dcadfc6..4880c9af68d 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviser.java
@@ -19,8 +19,6 @@ package org.apache.shardingsphere.infra.metadata.database.schema.decorator.revis
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
import java.util.Optional;
@@ -29,8 +27,7 @@ import java.util.Optional;
*
* @param <T> type of rule
*/
-@SingletonSPI
-public interface IndexReviser<T extends ShardingSphereRule> extends TypedSPI {
+public interface IndexReviser<T extends ShardingSphereRule> {
/**
* Revise index meta data.
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableMetaDataReviseEngine.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableMetaDataReviseEngine.java
index 7f368da195f..ade5a624f77 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableMetaDataReviseEngine.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableMetaDataReviseEngine.java
@@ -22,11 +22,13 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnReviseEngine;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.constraint.ConstraintReviseEngine;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviseEngine;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import javax.sql.DataSource;
+import java.util.Optional;
/**
* Table meta data revise engine.
@@ -44,16 +46,22 @@ public final class TableMetaDataReviseEngine<T extends ShardingSphereRule> {
/**
* Revise table meta data.
- *
+ *
* @param originalMetaData original table meta data
* @return revised table meta data
*/
@SuppressWarnings("unchecked")
public TableMetaData revise(final TableMetaData originalMetaData) {
- String revisedTableName = TypedSPILoader.findService(TableNameReviser.class, rule.getClass().getSimpleName())
- .map(optional -> optional.revise(originalMetaData.getName(), rule)).orElse(originalMetaData.getName());
- return new TableMetaData(revisedTableName, new ColumnReviseEngine<>(rule, databaseType, dataSource).revise(originalMetaData.getName(), originalMetaData.getColumns()),
- new IndexReviseEngine<>().revise(revisedTableName, originalMetaData.getIndexes(), rule),
- new ConstraintReviseEngine<>().revise(revisedTableName, originalMetaData.getConstrains(), rule));
+ @SuppressWarnings("rawtypes")
+ Optional<TableMetaDataReviseEntry> reviseEntry = TypedSPILoader.findService(TableMetaDataReviseEntry.class, rule.getClass().getSimpleName());
+ return reviseEntry.map(optional -> revise(originalMetaData, optional)).orElse(originalMetaData);
+ }
+
+ private TableMetaData revise(final TableMetaData originalMetaData, final TableMetaDataReviseEntry<T> reviseEntry) {
+ Optional<? extends TableNameReviser<T>> tableNameReviser = reviseEntry.getTableNameReviser();
+ String revisedTableName = tableNameReviser.map(optional -> optional.revise(originalMetaData.getName(), rule)).orElse(originalMetaData.getName());
+ return new TableMetaData(revisedTableName, new ColumnReviseEngine<>(rule, databaseType, dataSource, reviseEntry).revise(originalMetaData.getName(), originalMetaData.getColumns()),
+ new IndexReviseEngine<>(rule, reviseEntry).revise(revisedTableName, originalMetaData.getIndexes()),
+ new ConstraintReviseEngine<>(rule, reviseEntry).revise(revisedTableName, originalMetaData.getConstrains()));
}
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableNameReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableNameReviser.java
index 267c88d41d5..1ee8e73f907 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableNameReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/table/TableNameReviser.java
@@ -18,16 +18,13 @@
package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.table;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.util.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
/**
* Table name reviser.
*
* @param <T> type of rule
*/
-@SingletonSPI
-public interface TableNameReviser<T extends ShardingSphereRule> extends TypedSPI {
+public interface TableNameReviser<T extends ShardingSphereRule> {
/**
* Revise table meta data.
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/spi/TableMetaDataReviseEntry.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/spi/TableMetaDataReviseEntry.java
new file mode 100644
index 00000000000..9138232191a
--- /dev/null
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/spi/TableMetaDataReviseEntry.java
@@ -0,0 +1,101 @@
+/*
+ * 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.metadata.database.schema.decorator.spi;
+
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnDataTypeReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnGeneratedReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnNameReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.constraint.ConstraintReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.table.TableNameReviser;
+import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
+
+import java.util.Optional;
+
+/**
+ * Table name revise entry.
+ *
+ * @param <T> type of rule
+ */
+public interface TableMetaDataReviseEntry<T extends ShardingSphereRule> extends TypedSPI {
+
+ /**
+ * Get table name reviser.
+ *
+ * @return table name reviser
+ */
+ default Optional<? extends TableNameReviser<T>> getTableNameReviser() {
+ return Optional.empty();
+ }
+
+ /**
+ * Get column name reviser.
+ *
+ * @param rule rule
+ * @param tableName table name
+ * @return column name reviser
+ */
+ default Optional<? extends ColumnNameReviser<T>> getColumnNameReviser(final T rule, final String tableName) {
+ return Optional.empty();
+ }
+
+ /**
+ * Get column data type reviser.
+ *
+ * @param rule rule
+ * @param tableName table name
+ * @return column data type reviser
+ */
+ default Optional<? extends ColumnDataTypeReviser<T>> getColumnDataTypeReviser(final T rule, final String tableName) {
+ return Optional.empty();
+ }
+
+ /**
+ * Get column generated reviser.
+ *
+ * @param rule rule
+ * @param tableName table name
+ * @return column generated reviser
+ */
+ default Optional<? extends ColumnGeneratedReviser<T>> getColumnGeneratedReviser(final T rule, final String tableName) {
+ return Optional.empty();
+ }
+
+ /**
+ * Get index reviser.
+ *
+ * @param rule rule
+ * @param tableName table name
+ * @return index reviser
+ */
+ default Optional<? extends IndexReviser<T>> getIndexReviser(final T rule, final String tableName) {
+ return Optional.empty();
+ }
+
+ /**
+ * Get constraint reviser.
+ *
+ * @param rule rule
+ * @param tableName table name
+ * @return constraint reviser
+ */
+ default Optional<? extends ConstraintReviser<T>> getConstraintReviser(final T rule, final String tableName) {
+ return Optional.empty();
+ }
+}
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleConstraintReviser.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleConstraintReviser.java
index 975a8e96321..bc343362948 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleConstraintReviser.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleConstraintReviser.java
@@ -33,9 +33,4 @@ public final class SingleConstraintReviser implements ConstraintReviser<SingleRu
public Optional<ConstraintMetaData> revise(final String tableName, final ConstraintMetaData originalMetaData, final SingleRule rule) {
return Optional.of(new ConstraintMetaData(IndexMetaDataUtil.getLogicIndexName(originalMetaData.getName(), tableName), originalMetaData.getReferencedTableName()));
}
-
- @Override
- public String getType() {
- return SingleRule.class.getSimpleName();
- }
}
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
index 58f1b64dab1..feab783b632 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
@@ -33,9 +33,4 @@ public final class SingleIndexReviser implements IndexReviser<SingleRule> {
public Optional<IndexMetaData> revise(final String tableName, final IndexMetaData originalMetaData, final SingleRule singleRule) {
return Optional.of(new IndexMetaData(IndexMetaDataUtil.getLogicIndexName(originalMetaData.getName(), tableName)));
}
-
- @Override
- public String getType() {
- return SingleRule.class.getSimpleName();
- }
}
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleTableMetaDataReviseEntry.java
similarity index 66%
copy from kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
copy to kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleTableMetaDataReviseEntry.java
index 58f1b64dab1..626fb9b9992 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleTableMetaDataReviseEntry.java
@@ -17,21 +17,24 @@
package org.apache.shardingsphere.single.metadata.reviser;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser;
-import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
-import org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtil;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry;
import org.apache.shardingsphere.single.rule.SingleRule;
import java.util.Optional;
/**
- * Single index reviser.
+ * Single table meta data revise entry.
*/
-public final class SingleIndexReviser implements IndexReviser<SingleRule> {
+public final class SingleTableMetaDataReviseEntry implements TableMetaDataReviseEntry<SingleRule> {
@Override
- public Optional<IndexMetaData> revise(final String tableName, final IndexMetaData originalMetaData, final SingleRule singleRule) {
- return Optional.of(new IndexMetaData(IndexMetaDataUtil.getLogicIndexName(originalMetaData.getName(), tableName)));
+ public Optional<SingleIndexReviser> getIndexReviser(final SingleRule rule, final String tableName) {
+ return Optional.of(new SingleIndexReviser());
+ }
+
+ @Override
+ public Optional<SingleConstraintReviser> getConstraintReviser(final SingleRule rule, final String tableName) {
+ return Optional.of(new SingleConstraintReviser());
}
@Override
diff --git a/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser b/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser
deleted file mode 100644
index 10c6bd237d0..00000000000
--- a/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.single.metadata.reviser.SingleIndexReviser
diff --git a/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnNameReviser b/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
similarity index 90%
rename from features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnNameReviser
rename to kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
index 3c6af3f2ad5..aa936b0634a 100644
--- a/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnNameReviser
+++ b/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.TableMetaDataReviseEntry
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.encrypt.metadata.reviser.EncryptColumnNameReviser
+org.apache.shardingsphere.single.metadata.reviser.SingleTableMetaDataReviseEntry