You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/06/28 12:25:00 UTC
[shardingsphere] branch master updated: Refactor UniqueRuleItemChangedEventCreator and NamedRuleItemChangedEventCreator (#26655)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 c8f8098e55b Refactor UniqueRuleItemChangedEventCreator and NamedRuleItemChangedEventCreator (#26655)
c8f8098e55b is described below
commit c8f8098e55b984a8ca727f3586650c5a399ea05c
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Jun 28 20:24:52 2023 +0800
Refactor UniqueRuleItemChangedEventCreator and NamedRuleItemChangedEventCreator (#26655)
* Refactor ShardingRuleChangedEventCreator
* Refactor UniqueRuleItemChangedEventCreator and NamedRuleItemChangedEventCreator
---
.../event/BroadcastRuleChangedEventCreator.java | 24 +--
.../BroadcastTableEventCreator.java} | 29 +--
.../CompatibleEncryptRuleChangedEventCreator.java | 34 +---
.../event/EncryptRuleChangedEventCreator.java | 34 +---
.../CompatibleEncryptorEventCreator.java} | 27 ++-
.../table/CompatibleEncryptTableEventCreator.java | 40 +++++
.../event/encryptor/EncryptorEventCreator.java} | 27 ++-
.../event/table/EncryptTableEventCreator.java | 40 +++++
.../mask/event/MaskRuleChangedEventCreator.java | 34 +---
.../mask/event/algorithm/MaskEventCreator.java} | 27 ++-
.../mask/event/table/MaskTableCreator.java} | 30 ++--
.../ReadwriteSplittingRuleChangedEventCreator.java | 34 +---
.../ReadwriteSplittingDataSourceEventCreator.java | 40 +++++
...lanceEvent.java => AlterLoadBalancerEvent.java} | 4 +-
...anceEvent.java => DeleteLoadBalancerEvent.java} | 4 +-
...eadwriteSplittingLoadBalancerEventCreator.java} | 25 ++-
.../ReadwriteSplittingLoadBalanceSubscriber.java | 8 +-
.../event/ShadowRuleChangedEventCreator.java | 73 +++-----
.../DefaultShadowAlgorithmEventCreator.java} | 27 ++-
.../algorithm/ShadowAlgorithmEventCreator.java} | 27 ++-
.../datasource/ShadowDataSourceEventCreator.java | 40 +++++
.../event/table/ShadowTableEventCreator.java | 40 +++++
.../event/ShardingRuleChangedEventCreator.java | 195 ++++-----------------
.../algorithm/auditor/AuditEventCreator.java} | 27 ++-
.../keygenerator/KeyGeneratorEventCreator.java} | 27 ++-
.../sharding/ShardingAlgorithmEventCreator.java} | 27 ++-
.../event/cache/ShardingCacheEventCreator.java | 40 +++++
.../audit/ShardingAuditorStrategyEventCreator.java | 40 +++++
.../DatabaseShardingStrategyEventCreator.java | 40 +++++
.../KeyGenerateStrategyEventCreator.java | 40 +++++
.../DefaultShardingColumnEventCreator.java | 40 +++++
.../table/TableShardingStrategyEventCreator.java | 40 +++++
.../table/auto/ShardingAutoTableEventCreator.java | 40 +++++
.../ShardingTableReferenceEventCreator.java | 40 +++++
.../table/sharding/ShardingTableEventCreator.java | 40 +++++
.../event/SingleRuleChangedEventCreator.java | 24 +--
.../SingleTableEventCreator.java} | 29 +--
.../event/NamedRuleItemChangedEventCreator.java | 26 ++-
.../event/UniqueRuleItemChangedEventCreator.java | 21 +--
39 files changed, 842 insertions(+), 562 deletions(-)
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleChangedEventCreator.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleChangedEventCreator.java
index 567113bf8fd..c40e16777af 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleChangedEventCreator.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleChangedEventCreator.java
@@ -17,13 +17,11 @@
package org.apache.shardingsphere.broadcast.event;
-import org.apache.shardingsphere.broadcast.event.config.AddBroadcastTableEvent;
-import org.apache.shardingsphere.broadcast.event.config.AlterBroadcastTableEvent;
-import org.apache.shardingsphere.broadcast.event.config.DeleteBroadcastTableEvent;
+import org.apache.shardingsphere.broadcast.event.config.BroadcastTableEventCreator;
import org.apache.shardingsphere.broadcast.metadata.nodepath.BroadcastRuleNodePathProvider;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
/**
@@ -31,27 +29,21 @@ import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
*/
public final class BroadcastRuleChangedEventCreator implements RuleChangedEventCreator {
- @SuppressWarnings("SwitchStatementWithTooFewBranches")
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
+ return getUniqueRuleItemChangedEventCreator(itemType).create(databaseName, event);
+ }
+
+ @SuppressWarnings("SwitchStatementWithTooFewBranches")
+ private UniqueRuleItemChangedEventCreator getUniqueRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case BroadcastRuleNodePathProvider.TABLES:
- return createTableEvent(databaseName, event);
+ return new BroadcastTableEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createTableEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddBroadcastTableEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterBroadcastTableEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteBroadcastTableEvent(databaseName);
- }
-
@Override
public String getType() {
return "broadcast";
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleChangedEventCreator.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/BroadcastTableEventCreator.java
similarity index 56%
copy from features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleChangedEventCreator.java
copy to features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/BroadcastTableEventCreator.java
index 567113bf8fd..ff4e7492f27 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleChangedEventCreator.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/BroadcastTableEventCreator.java
@@ -15,34 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.broadcast.event;
+package org.apache.shardingsphere.broadcast.event.config;
-import org.apache.shardingsphere.broadcast.event.config.AddBroadcastTableEvent;
-import org.apache.shardingsphere.broadcast.event.config.AlterBroadcastTableEvent;
-import org.apache.shardingsphere.broadcast.event.config.DeleteBroadcastTableEvent;
-import org.apache.shardingsphere.broadcast.metadata.nodepath.BroadcastRuleNodePathProvider;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
-import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
/**
- * Broadcast rule changed event creator.
+ * Broadcast table event creator.
*/
-public final class BroadcastRuleChangedEventCreator implements RuleChangedEventCreator {
+public final class BroadcastTableEventCreator implements UniqueRuleItemChangedEventCreator {
- @SuppressWarnings("SwitchStatementWithTooFewBranches")
@Override
- public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
- switch (itemType) {
- case BroadcastRuleNodePathProvider.TABLES:
- return createTableEvent(databaseName, event);
- default:
- throw new UnsupportedOperationException(itemType);
- }
- }
-
- private GovernanceEvent createTableEvent(final String databaseName, final DataChangedEvent event) {
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
if (Type.ADDED == event.getType()) {
return new AddBroadcastTableEvent(databaseName, event.getKey(), event.getValue());
}
@@ -51,9 +37,4 @@ public final class BroadcastRuleChangedEventCreator implements RuleChangedEventC
}
return new DeleteBroadcastTableEvent(databaseName);
}
-
- @Override
- public String getType() {
- return "broadcast";
- }
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleChangedEventCreator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleChangedEventCreator.java
index 017af48ab9e..8ad9239fc2f 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleChangedEventCreator.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleChangedEventCreator.java
@@ -17,15 +17,12 @@
package org.apache.shardingsphere.encrypt.event;
-import org.apache.shardingsphere.encrypt.event.compatible.encryptor.AlterCompatibleEncryptorEvent;
-import org.apache.shardingsphere.encrypt.event.compatible.encryptor.DeleteCompatibleEncryptorEvent;
-import org.apache.shardingsphere.encrypt.event.compatible.table.AddCompatibleEncryptTableEvent;
-import org.apache.shardingsphere.encrypt.event.compatible.table.AlterCompatibleEncryptTableEvent;
-import org.apache.shardingsphere.encrypt.event.compatible.table.DeleteCompatibleEncryptTableEvent;
+import org.apache.shardingsphere.encrypt.event.compatible.encryptor.CompatibleEncryptorEventCreator;
+import org.apache.shardingsphere.encrypt.event.compatible.table.CompatibleEncryptTableEventCreator;
import org.apache.shardingsphere.encrypt.metadata.nodepath.EncryptRuleNodePathProvider;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
/**
@@ -37,33 +34,20 @@ public final class CompatibleEncryptRuleChangedEventCreator implements RuleChang
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType, final String itemName) {
+ return getNamedRuleItemChangedEventCreator(itemType).create(databaseName, itemName, event);
+ }
+
+ private NamedRuleItemChangedEventCreator getNamedRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case EncryptRuleNodePathProvider.TABLES:
- return createTableEvent(databaseName, itemName, event);
+ return new CompatibleEncryptTableEventCreator();
case EncryptRuleNodePathProvider.ENCRYPTORS:
- return createEncryptorEvent(databaseName, itemName, event);
+ return new CompatibleEncryptorEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createTableEvent(final String databaseName, final String groupName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddCompatibleEncryptTableEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterCompatibleEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue());
- }
- return new DeleteCompatibleEncryptTableEvent(databaseName, groupName);
- }
-
- private GovernanceEvent createEncryptorEvent(final String databaseName, final String encryptorName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterCompatibleEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue());
- }
- return new DeleteCompatibleEncryptorEvent(databaseName, encryptorName);
- }
-
@Override
public String getType() {
return "compatible_encrypt";
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleChangedEventCreator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleChangedEventCreator.java
index 78edd849292..d1d19759517 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleChangedEventCreator.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleChangedEventCreator.java
@@ -17,15 +17,12 @@
package org.apache.shardingsphere.encrypt.event;
-import org.apache.shardingsphere.encrypt.event.encryptor.AlterEncryptorEvent;
-import org.apache.shardingsphere.encrypt.event.encryptor.DeleteEncryptorEvent;
-import org.apache.shardingsphere.encrypt.event.table.AddEncryptTableEvent;
-import org.apache.shardingsphere.encrypt.event.table.AlterEncryptTableEvent;
-import org.apache.shardingsphere.encrypt.event.table.DeleteEncryptTableEvent;
+import org.apache.shardingsphere.encrypt.event.encryptor.EncryptorEventCreator;
+import org.apache.shardingsphere.encrypt.event.table.EncryptTableEventCreator;
import org.apache.shardingsphere.encrypt.metadata.nodepath.EncryptRuleNodePathProvider;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
/**
@@ -35,33 +32,20 @@ public final class EncryptRuleChangedEventCreator implements RuleChangedEventCre
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType, final String itemName) {
+ return getNamedRuleItemChangedEventCreator(itemType).create(databaseName, itemName, event);
+ }
+
+ private NamedRuleItemChangedEventCreator getNamedRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case EncryptRuleNodePathProvider.TABLES:
- return createTableEvent(databaseName, itemName, event);
+ return new EncryptTableEventCreator();
case EncryptRuleNodePathProvider.ENCRYPTORS:
- return createEncryptorEvent(databaseName, itemName, event);
+ return new EncryptorEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createTableEvent(final String databaseName, final String groupName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddEncryptTableEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue());
- }
- return new DeleteEncryptTableEvent(databaseName, groupName);
- }
-
- private GovernanceEvent createEncryptorEvent(final String databaseName, final String encryptorName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue());
- }
- return new DeleteEncryptorEvent(databaseName, encryptorName);
- }
-
@Override
public String getType() {
return "encrypt";
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/encryptor/CompatibleEncryptorEventCreator.java
similarity index 51%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/encryptor/CompatibleEncryptorEventCreator.java
index d6904ccf7d4..80189b44d9a 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/encryptor/CompatibleEncryptorEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.encrypt.event.compatible.encryptor;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Compatible encryptor event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class CompatibleEncryptorEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String encryptorName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterCompatibleEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue());
+ }
+ return new DeleteCompatibleEncryptorEvent(databaseName, encryptorName);
+ }
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/table/CompatibleEncryptTableEventCreator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/table/CompatibleEncryptTableEventCreator.java
new file mode 100644
index 00000000000..22a2caa5845
--- /dev/null
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/table/CompatibleEncryptTableEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.encrypt.event.compatible.table;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Compatible encrypt table event creator.
+ */
+public final class CompatibleEncryptTableEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String groupName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddCompatibleEncryptTableEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterCompatibleEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue());
+ }
+ return new DeleteCompatibleEncryptTableEvent(databaseName, groupName);
+ }
+}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/EncryptorEventCreator.java
similarity index 52%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/EncryptorEventCreator.java
index d6904ccf7d4..694b143f94c 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/EncryptorEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.encrypt.event.encryptor;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Encryptor event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class EncryptorEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String encryptorName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue());
+ }
+ return new DeleteEncryptorEvent(databaseName, encryptorName);
+ }
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/table/EncryptTableEventCreator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/table/EncryptTableEventCreator.java
new file mode 100644
index 00000000000..82ec6598765
--- /dev/null
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/table/EncryptTableEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.encrypt.event.table;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Encrypt table event creator.
+ */
+public final class EncryptTableEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String groupName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddEncryptTableEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue());
+ }
+ return new DeleteEncryptTableEvent(databaseName, groupName);
+ }
+}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleChangedEventCreator.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleChangedEventCreator.java
index 713853bd245..3fae974ebc7 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleChangedEventCreator.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleChangedEventCreator.java
@@ -18,14 +18,11 @@
package org.apache.shardingsphere.mask.event;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import org.apache.shardingsphere.mask.event.algorithm.AlterMaskAlgorithmEvent;
-import org.apache.shardingsphere.mask.event.algorithm.DeleteMaskAlgorithmEvent;
-import org.apache.shardingsphere.mask.event.table.AddMaskTableEvent;
-import org.apache.shardingsphere.mask.event.table.AlterMaskTableEvent;
-import org.apache.shardingsphere.mask.event.table.DeleteMaskTableEvent;
+import org.apache.shardingsphere.mask.event.algorithm.MaskEventCreator;
+import org.apache.shardingsphere.mask.event.table.MaskTableCreator;
import org.apache.shardingsphere.mask.metadata.nodepath.MaskRuleNodePathProvider;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
/**
@@ -35,33 +32,20 @@ public final class MaskRuleChangedEventCreator implements RuleChangedEventCreato
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType, final String itemName) {
+ return getNamedRuleItemChangedEventCreator(itemType).create(databaseName, itemName, event);
+ }
+
+ private NamedRuleItemChangedEventCreator getNamedRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case MaskRuleNodePathProvider.TABLES:
- return createTableEvent(databaseName, itemName, event);
+ return new MaskTableCreator();
case MaskRuleNodePathProvider.ALGORITHMS:
- return createAlgorithmEvent(databaseName, itemName, event);
+ return new MaskEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createTableEvent(final String databaseName, final String tableName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddMaskTableEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterMaskTableEvent(databaseName, tableName, event.getKey(), event.getValue());
- }
- return new DeleteMaskTableEvent(databaseName, tableName);
- }
-
- private GovernanceEvent createAlgorithmEvent(final String databaseName, final String algorithmName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterMaskAlgorithmEvent(databaseName, algorithmName, event.getKey(), event.getValue());
- }
- return new DeleteMaskAlgorithmEvent(databaseName, algorithmName);
- }
-
@Override
public String getType() {
return "mask";
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/MaskEventCreator.java
similarity index 53%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/MaskEventCreator.java
index d6904ccf7d4..3c317a473af 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/MaskEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.mask.event.algorithm;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Mask event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class MaskEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String algorithmName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterMaskAlgorithmEvent(databaseName, algorithmName, event.getKey(), event.getValue());
+ }
+ return new DeleteMaskAlgorithmEvent(databaseName, algorithmName);
+ }
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/MaskTableCreator.java
similarity index 50%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/MaskTableCreator.java
index d6904ccf7d4..84662af2b8b 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/MaskTableCreator.java
@@ -15,24 +15,26 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.mask.event.table;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Mask table creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class MaskTableCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String tableName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddMaskTableEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterMaskTableEvent(databaseName, tableName, event.getKey(), event.getValue());
+ }
+ return new DeleteMaskTableEvent(databaseName, tableName);
+ }
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleChangedEventCreator.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleChangedEventCreator.java
index cc6fa5390cd..0f4651a43a7 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleChangedEventCreator.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleChangedEventCreator.java
@@ -19,13 +19,10 @@ package org.apache.shardingsphere.readwritesplitting.event;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
-import org.apache.shardingsphere.readwritesplitting.event.datasource.AddReadwriteSplittingDataSourceEvent;
-import org.apache.shardingsphere.readwritesplitting.event.datasource.AlterReadwriteSplittingDataSourceEvent;
-import org.apache.shardingsphere.readwritesplitting.event.datasource.DeleteReadwriteSplittingDataSourceEvent;
-import org.apache.shardingsphere.readwritesplitting.event.loadbalance.AlterLoadBalanceEvent;
-import org.apache.shardingsphere.readwritesplitting.event.loadbalance.DeleteLoadBalanceEvent;
+import org.apache.shardingsphere.readwritesplitting.event.datasource.ReadwriteSplittingDataSourceEventCreator;
+import org.apache.shardingsphere.readwritesplitting.event.loadbalance.ReadwriteSplittingLoadBalancerEventCreator;
import org.apache.shardingsphere.readwritesplitting.metadata.nodepath.ReadwriteSplittingRuleNodePathProvider;
/**
@@ -35,33 +32,20 @@ public final class ReadwriteSplittingRuleChangedEventCreator implements RuleChan
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType, final String itemName) {
+ return getNamedRuleItemChangedEventCreator(itemType).create(databaseName, itemName, event);
+ }
+
+ private NamedRuleItemChangedEventCreator getNamedRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case ReadwriteSplittingRuleNodePathProvider.DATA_SOURCES:
- return createDataSourceEvent(databaseName, itemName, event);
+ return new ReadwriteSplittingDataSourceEventCreator();
case ReadwriteSplittingRuleNodePathProvider.LOAD_BALANCERS:
- return createLoadBalanceEvent(databaseName, itemName, event);
+ return new ReadwriteSplittingLoadBalancerEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createDataSourceEvent(final String databaseName, final String groupName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddReadwriteSplittingDataSourceEvent(databaseName, groupName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterReadwriteSplittingDataSourceEvent(databaseName, groupName, event.getKey(), event.getValue());
- }
- return new DeleteReadwriteSplittingDataSourceEvent(databaseName, groupName);
- }
-
- private GovernanceEvent createLoadBalanceEvent(final String databaseName, final String loadBalancerName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterLoadBalanceEvent(databaseName, loadBalancerName, event.getKey(), event.getValue());
- }
- return new DeleteLoadBalanceEvent(databaseName, loadBalancerName);
- }
-
@Override
public String getType() {
return "readwrite_splitting";
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/ReadwriteSplittingDataSourceEventCreator.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/ReadwriteSplittingDataSourceEventCreator.java
new file mode 100644
index 00000000000..e87b3c8fc11
--- /dev/null
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/ReadwriteSplittingDataSourceEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.readwritesplitting.event.datasource;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Readwrite-splitting data source event creator.
+ */
+public final class ReadwriteSplittingDataSourceEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String groupName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddReadwriteSplittingDataSourceEvent(databaseName, groupName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterReadwriteSplittingDataSourceEvent(databaseName, groupName, event.getKey(), event.getValue());
+ }
+ return new DeleteReadwriteSplittingDataSourceEvent(databaseName, groupName);
+ }
+}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalancerEvent.java
similarity index 92%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalancerEvent.java
index d6904ccf7d4..3f10cdb56da 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalancerEvent.java
@@ -22,11 +22,11 @@ import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
/**
- * Alter load-balance event.
+ * Alter load-balancer event.
*/
@RequiredArgsConstructor
@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class AlterLoadBalancerEvent implements GovernanceEvent {
private final String databaseName;
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalancerEvent.java
similarity index 91%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
copy to features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalancerEvent.java
index 99397c8b4f0..9892b85e538 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalancerEvent.java
@@ -22,11 +22,11 @@ import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
/**
- * Delete load-balance event.
+ * Delete load-balancer event.
*/
@RequiredArgsConstructor
@Getter
-public final class DeleteLoadBalanceEvent implements GovernanceEvent {
+public final class DeleteLoadBalancerEvent implements GovernanceEvent {
private final String databaseName;
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/ReadwriteSplittingLoadBalancerEventCreator.java
similarity index 54%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/ReadwriteSplittingLoadBalancerEventCreator.java
index d6904ccf7d4..4483e12e5ae 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/ReadwriteSplittingLoadBalancerEventCreator.java
@@ -17,22 +17,21 @@
package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Readwrite-splitting load-balancer event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class ReadwriteSplittingLoadBalancerEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String loadBalancerName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterLoadBalancerEvent(databaseName, loadBalancerName, event.getKey(), event.getValue());
+ }
+ return new DeleteLoadBalancerEvent(databaseName, loadBalancerName);
+ }
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
index 56c06085603..3acbb3864a3 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
@@ -29,8 +29,8 @@ import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChan
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.subsciber.RuleChangedSubscriber;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import org.apache.shardingsphere.readwritesplitting.event.loadbalance.AlterLoadBalanceEvent;
-import org.apache.shardingsphere.readwritesplitting.event.loadbalance.DeleteLoadBalanceEvent;
+import org.apache.shardingsphere.readwritesplitting.event.loadbalance.AlterLoadBalancerEvent;
+import org.apache.shardingsphere.readwritesplitting.event.loadbalance.DeleteLoadBalancerEvent;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import java.util.LinkedHashMap;
@@ -55,7 +55,7 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleChange
* @param event alter load-balance event
*/
@Subscribe
- public synchronized void renew(final AlterLoadBalanceEvent event) {
+ public synchronized void renew(final AlterLoadBalancerEvent event) {
if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
@@ -71,7 +71,7 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleChange
* @param event delete load-balance event
*/
@Subscribe
- public synchronized void renew(final DeleteLoadBalanceEvent event) {
+ public synchronized void renew(final DeleteLoadBalancerEvent event) {
if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
return;
}
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleChangedEventCreator.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleChangedEventCreator.java
index cb0cb9e4ee8..af8399fc981 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleChangedEventCreator.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleChangedEventCreator.java
@@ -19,18 +19,13 @@ package org.apache.shardingsphere.shadow.event;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
-import org.apache.shardingsphere.shadow.event.algorithm.AlterDefaultShadowAlgorithmNameEvent;
-import org.apache.shardingsphere.shadow.event.algorithm.AlterShadowAlgorithmEvent;
-import org.apache.shardingsphere.shadow.event.algorithm.DeleteDefaultShadowAlgorithmNameEvent;
-import org.apache.shardingsphere.shadow.event.algorithm.DeleteShadowAlgorithmEvent;
-import org.apache.shardingsphere.shadow.event.datasource.AddShadowDataSourceEvent;
-import org.apache.shardingsphere.shadow.event.datasource.AlterShadowDataSourceEvent;
-import org.apache.shardingsphere.shadow.event.datasource.DeleteShadowDataSourceEvent;
-import org.apache.shardingsphere.shadow.event.table.AddShadowTableEvent;
-import org.apache.shardingsphere.shadow.event.table.AlterShadowTableEvent;
-import org.apache.shardingsphere.shadow.event.table.DeleteShadowTableEvent;
+import org.apache.shardingsphere.shadow.event.algorithm.DefaultShadowAlgorithmEventCreator;
+import org.apache.shardingsphere.shadow.event.algorithm.ShadowAlgorithmEventCreator;
+import org.apache.shardingsphere.shadow.event.datasource.ShadowDataSourceEventCreator;
+import org.apache.shardingsphere.shadow.event.table.ShadowTableEventCreator;
import org.apache.shardingsphere.shadow.metadata.nodepath.ShadowRuleNodePathProvider;
/**
@@ -40,63 +35,37 @@ public final class ShadowRuleChangedEventCreator implements RuleChangedEventCrea
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType, final String itemName) {
+ return getNamedRuleItemChangedEventCreator(itemType).create(databaseName, itemName, event);
+ }
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
+ return getUniqueRuleItemChangedEventCreator(itemType).create(databaseName, event);
+ }
+
+ private NamedRuleItemChangedEventCreator getNamedRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case ShadowRuleNodePathProvider.DATA_SOURCES:
- return createShadowDataSourceEvent(databaseName, itemName, event);
+ return new ShadowDataSourceEventCreator();
case ShadowRuleNodePathProvider.TABLES:
- return createShadowTableEvent(databaseName, itemName, event);
+ return new ShadowTableEventCreator();
case ShadowRuleNodePathProvider.ALGORITHMS:
- return createShadowAlgorithmEvent(databaseName, itemName, event);
+ return new ShadowAlgorithmEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
@SuppressWarnings("SwitchStatementWithTooFewBranches")
- @Override
- public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
+ private UniqueRuleItemChangedEventCreator getUniqueRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
- case ShadowRuleNodePathProvider.DEFAULT_ALGORITHM:
- return createDefaultShadowAlgorithmNameEvent(databaseName, event);
+ case ShadowRuleNodePathProvider.DATA_SOURCES:
+ return new DefaultShadowAlgorithmEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createShadowDataSourceEvent(final String databaseName, final String dataSourceName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddShadowDataSourceEvent(databaseName, dataSourceName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterShadowDataSourceEvent(databaseName, dataSourceName, event.getKey(), event.getValue());
- }
- return new DeleteShadowDataSourceEvent(databaseName, dataSourceName);
- }
-
- private GovernanceEvent createShadowTableEvent(final String databaseName, final String tableName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddShadowTableEvent(databaseName, tableName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterShadowTableEvent(databaseName, tableName, event.getKey(), event.getValue());
- }
- return new DeleteShadowTableEvent(databaseName, tableName);
- }
-
- private GovernanceEvent createShadowAlgorithmEvent(final String databaseName, final String algorithmName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterShadowAlgorithmEvent(databaseName, algorithmName, event.getKey(), event.getValue());
- }
- return new DeleteShadowAlgorithmEvent(databaseName, algorithmName);
- }
-
- private GovernanceEvent createDefaultShadowAlgorithmNameEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterDefaultShadowAlgorithmNameEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteDefaultShadowAlgorithmNameEvent(databaseName);
- }
-
@Override
public String getType() {
return "shadow";
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DefaultShadowAlgorithmEventCreator.java
similarity index 52%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DefaultShadowAlgorithmEventCreator.java
index d6904ccf7d4..16023c96d15 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DefaultShadowAlgorithmEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.shadow.event.algorithm;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Default shadow algorithm event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class DefaultShadowAlgorithmEventCreator implements UniqueRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterDefaultShadowAlgorithmNameEvent(databaseName, event.getKey(), event.getValue());
+ }
+ return new DeleteDefaultShadowAlgorithmNameEvent(databaseName);
+ }
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/ShadowAlgorithmEventCreator.java
similarity index 52%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/ShadowAlgorithmEventCreator.java
index d6904ccf7d4..96c8d5d312d 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/ShadowAlgorithmEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.shadow.event.algorithm;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Shadow algorithm event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class ShadowAlgorithmEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String algorithmName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterShadowAlgorithmEvent(databaseName, algorithmName, event.getKey(), event.getValue());
+ }
+ return new DeleteShadowAlgorithmEvent(databaseName, algorithmName);
+ }
}
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/datasource/ShadowDataSourceEventCreator.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/datasource/ShadowDataSourceEventCreator.java
new file mode 100644
index 00000000000..215369dbe20
--- /dev/null
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/datasource/ShadowDataSourceEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.shadow.event.datasource;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Shadow data source event creator.
+ */
+public final class ShadowDataSourceEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String dataSourceName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddShadowDataSourceEvent(databaseName, dataSourceName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterShadowDataSourceEvent(databaseName, dataSourceName, event.getKey(), event.getValue());
+ }
+ return new DeleteShadowDataSourceEvent(databaseName, dataSourceName);
+ }
+}
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/ShadowTableEventCreator.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/ShadowTableEventCreator.java
new file mode 100644
index 00000000000..003ef33f786
--- /dev/null
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/ShadowTableEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.shadow.event.table;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Shadow table event creator.
+ */
+public final class ShadowTableEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String tableName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddShadowTableEvent(databaseName, tableName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterShadowTableEvent(databaseName, tableName, event.getKey(), event.getValue());
+ }
+ return new DeleteShadowTableEvent(databaseName, tableName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleChangedEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleChangedEventCreator.java
index b445263c9b5..467b0561950 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleChangedEventCreator.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleChangedEventCreator.java
@@ -19,41 +19,21 @@ package org.apache.shardingsphere.sharding.event;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
-import org.apache.shardingsphere.sharding.event.algorithm.auditor.AlterAuditorEvent;
-import org.apache.shardingsphere.sharding.event.algorithm.auditor.DeleteAuditorEvent;
-import org.apache.shardingsphere.sharding.event.algorithm.keygenerator.AlterKeyGeneratorEvent;
-import org.apache.shardingsphere.sharding.event.algorithm.keygenerator.DeleteKeyGeneratorEvent;
-import org.apache.shardingsphere.sharding.event.algorithm.sharding.AlterShardingAlgorithmEvent;
-import org.apache.shardingsphere.sharding.event.algorithm.sharding.DeleteShardingAlgorithmEvent;
-import org.apache.shardingsphere.sharding.event.cache.AddShardingCacheConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.cache.AlterShardingCacheConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.cache.DeleteShardingCacheConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.audit.AddShardingAuditorStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.audit.AlterShardingAuditorStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.audit.DeleteShardingAuditorStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.database.AddDatabaseShardingStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.database.AlterDatabaseShardingStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.database.DeleteDatabaseShardingStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.keygenerate.AddKeyGenerateStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.keygenerate.AlterKeyGenerateStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.keygenerate.DeleteKeyGenerateStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.shardingcolumn.AddDefaultShardingColumnEvent;
-import org.apache.shardingsphere.sharding.event.strategy.shardingcolumn.AlterDefaultShardingColumnEvent;
-import org.apache.shardingsphere.sharding.event.strategy.shardingcolumn.DeleteDefaultShardingColumnEvent;
-import org.apache.shardingsphere.sharding.event.strategy.table.AddTableShardingStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.table.AlterTableShardingStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.strategy.table.DeleteTableShardingStrategyConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.auto.AddShardingAutoTableConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.auto.AlterShardingAutoTableConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.auto.DeleteShardingAutoTableConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.binding.AddShardingTableReferenceConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.binding.AlterShardingTableReferenceConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.binding.DeleteShardingTableReferenceConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.sharding.AddShardingTableConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.sharding.AlterShardingTableConfigurationEvent;
-import org.apache.shardingsphere.sharding.event.table.sharding.DeleteShardingTableConfigurationEvent;
+import org.apache.shardingsphere.sharding.event.algorithm.auditor.AuditEventCreator;
+import org.apache.shardingsphere.sharding.event.algorithm.keygenerator.KeyGeneratorEventCreator;
+import org.apache.shardingsphere.sharding.event.algorithm.sharding.ShardingAlgorithmEventCreator;
+import org.apache.shardingsphere.sharding.event.cache.ShardingCacheEventCreator;
+import org.apache.shardingsphere.sharding.event.strategy.audit.ShardingAuditorStrategyEventCreator;
+import org.apache.shardingsphere.sharding.event.strategy.database.DatabaseShardingStrategyEventCreator;
+import org.apache.shardingsphere.sharding.event.strategy.keygenerate.KeyGenerateStrategyEventCreator;
+import org.apache.shardingsphere.sharding.event.strategy.shardingcolumn.DefaultShardingColumnEventCreator;
+import org.apache.shardingsphere.sharding.event.strategy.table.TableShardingStrategyEventCreator;
+import org.apache.shardingsphere.sharding.event.table.auto.ShardingAutoTableEventCreator;
+import org.apache.shardingsphere.sharding.event.table.binding.ShardingTableReferenceEventCreator;
+import org.apache.shardingsphere.sharding.event.table.sharding.ShardingTableEventCreator;
import org.apache.shardingsphere.sharding.metadata.nodepath.ShardingRuleNodePathProvider;
/**
@@ -63,155 +43,52 @@ public final class ShardingRuleChangedEventCreator implements RuleChangedEventCr
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType, final String itemName) {
+ return getNamedRuleItemChangedEventCreator(itemType).create(databaseName, itemName, event);
+ }
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
+ return getUniqueRuleItemChangedEventCreator(itemType).create(databaseName, event);
+ }
+
+ private NamedRuleItemChangedEventCreator getNamedRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case ShardingRuleNodePathProvider.TABLES:
- return createShardingTableEvent(databaseName, itemName, event);
+ return new ShardingTableEventCreator();
case ShardingRuleNodePathProvider.AUTO_TABLES:
- return createShardingAutoTableEvent(databaseName, itemName, event);
+ return new ShardingAutoTableEventCreator();
case ShardingRuleNodePathProvider.BINDING_TABLES:
- return createShardingTableReferenceConfigEvent(databaseName, itemName, event);
+ return new ShardingTableReferenceEventCreator();
case ShardingRuleNodePathProvider.ALGORITHMS:
- return createShardingAlgorithmEvent(databaseName, itemName, event);
+ return new ShardingAlgorithmEventCreator();
case ShardingRuleNodePathProvider.KEY_GENERATORS:
- return createKeyGeneratorEvent(databaseName, itemName, event);
+ return new KeyGeneratorEventCreator();
case ShardingRuleNodePathProvider.AUDITORS:
- return createAuditorEvent(databaseName, itemName, event);
+ return new AuditEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- @Override
- public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
+ private UniqueRuleItemChangedEventCreator getUniqueRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case ShardingRuleNodePathProvider.DEFAULT_DATABASE_STRATEGY:
- return createDefaultDatabaseStrategyEvent(databaseName, event);
+ return new DatabaseShardingStrategyEventCreator();
case ShardingRuleNodePathProvider.DEFAULT_TABLE_STRATEGY:
- return createDefaultTableStrategyEvent(databaseName, event);
+ return new TableShardingStrategyEventCreator();
case ShardingRuleNodePathProvider.DEFAULT_KEY_GENERATE_STRATEGY:
- return createDefaultKeyGenerateStrategyEvent(databaseName, event);
+ return new KeyGenerateStrategyEventCreator();
case ShardingRuleNodePathProvider.DEFAULT_AUDIT_STRATEGY:
- return createDefaultShardingAuditorStrategyEvent(databaseName, event);
+ return new ShardingAuditorStrategyEventCreator();
case ShardingRuleNodePathProvider.DEFAULT_SHARDING_COLUMN:
- return createDefaultShardingColumnEvent(databaseName, event);
+ return new DefaultShardingColumnEventCreator();
case ShardingRuleNodePathProvider.SHARDING_CACHE:
- return createShardingCacheEvent(databaseName, event);
+ return new ShardingCacheEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createShardingTableEvent(final String databaseName, final String tableName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddShardingTableConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterShardingTableConfigurationEvent(databaseName, tableName, event.getKey(), event.getValue());
- }
- return new DeleteShardingTableConfigurationEvent(databaseName, tableName);
- }
-
- private GovernanceEvent createShardingAutoTableEvent(final String databaseName, final String tableName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddShardingAutoTableConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterShardingAutoTableConfigurationEvent(databaseName, tableName, event.getKey(), event.getValue());
- }
- return new DeleteShardingAutoTableConfigurationEvent(databaseName, tableName);
- }
-
- private GovernanceEvent createShardingTableReferenceConfigEvent(final String databaseName, final String tableName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddShardingTableReferenceConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterShardingTableReferenceConfigurationEvent(databaseName, tableName, event.getKey(), event.getValue());
- }
- return new DeleteShardingTableReferenceConfigurationEvent(databaseName, tableName);
- }
-
- private GovernanceEvent createShardingAlgorithmEvent(final String databaseName, final String algorithmName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterShardingAlgorithmEvent(databaseName, algorithmName, event.getKey(), event.getValue());
- }
- return new DeleteShardingAlgorithmEvent(databaseName, algorithmName);
- }
-
- private GovernanceEvent createKeyGeneratorEvent(final String databaseName, final String algorithmName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterKeyGeneratorEvent(databaseName, algorithmName, event.getKey(), event.getValue());
- }
- return new DeleteKeyGeneratorEvent(databaseName, algorithmName);
- }
-
- private GovernanceEvent createAuditorEvent(final String databaseName, final String algorithmName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return new AlterAuditorEvent(databaseName, algorithmName, event.getKey(), event.getValue());
- }
- return new DeleteAuditorEvent(databaseName, algorithmName);
- }
-
- private GovernanceEvent createDefaultDatabaseStrategyEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteDatabaseShardingStrategyConfigurationEvent(databaseName);
- }
-
- private GovernanceEvent createDefaultTableStrategyEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddTableShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterTableShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteTableShardingStrategyConfigurationEvent(databaseName);
- }
-
- private GovernanceEvent createDefaultKeyGenerateStrategyEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddKeyGenerateStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterKeyGenerateStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteKeyGenerateStrategyConfigurationEvent(databaseName);
- }
-
- private GovernanceEvent createDefaultShardingAuditorStrategyEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddShardingAuditorStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterShardingAuditorStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteShardingAuditorStrategyConfigurationEvent(databaseName);
- }
-
- private GovernanceEvent createDefaultShardingColumnEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddDefaultShardingColumnEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterDefaultShardingColumnEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteDefaultShardingColumnEvent(databaseName);
- }
-
- private GovernanceEvent createShardingCacheEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddShardingCacheConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterShardingCacheConfigurationEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteShardingCacheConfigurationEvent(databaseName);
- }
-
@Override
public String getType() {
return "sharding";
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AuditEventCreator.java
similarity index 53%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AuditEventCreator.java
index d6904ccf7d4..72ae118c3ee 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AuditEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.sharding.event.algorithm.auditor;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Audit event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class AuditEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String algorithmName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterAuditorEvent(databaseName, algorithmName, event.getKey(), event.getValue());
+ }
+ return new DeleteAuditorEvent(databaseName, algorithmName);
+ }
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/KeyGeneratorEventCreator.java
similarity index 52%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/KeyGeneratorEventCreator.java
index d6904ccf7d4..9865f16dffe 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/KeyGeneratorEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.sharding.event.algorithm.keygenerator;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Key generator event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class KeyGeneratorEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String algorithmName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterKeyGeneratorEvent(databaseName, algorithmName, event.getKey(), event.getValue());
+ }
+ return new DeleteKeyGeneratorEvent(databaseName, algorithmName);
+ }
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/ShardingAlgorithmEventCreator.java
similarity index 51%
copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
copy to features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/ShardingAlgorithmEventCreator.java
index d6904ccf7d4..c84a6ee8a83 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/ShardingAlgorithmEventCreator.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.sharding.event.algorithm.sharding;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
/**
- * Alter load-balance event.
+ * Sharding algorithm event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public final class ShardingAlgorithmEventCreator implements NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ @Override
+ public GovernanceEvent create(final String databaseName, final String algorithmName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
+ return new AlterShardingAlgorithmEvent(databaseName, algorithmName, event.getKey(), event.getValue());
+ }
+ return new DeleteShardingAlgorithmEvent(databaseName, algorithmName);
+ }
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/ShardingCacheEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/ShardingCacheEventCreator.java
new file mode 100644
index 00000000000..612e64d5b11
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/ShardingCacheEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.cache;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
+
+/**
+ * Sharding cache event creator.
+ */
+public final class ShardingCacheEventCreator implements UniqueRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddShardingCacheConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterShardingCacheConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ return new DeleteShardingCacheConfigurationEvent(databaseName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/ShardingAuditorStrategyEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/ShardingAuditorStrategyEventCreator.java
new file mode 100644
index 00000000000..0845200b979
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/ShardingAuditorStrategyEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.strategy.audit;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
+
+/**
+ * Sharding auditor strategy event creator.
+ */
+public final class ShardingAuditorStrategyEventCreator implements UniqueRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddShardingAuditorStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterShardingAuditorStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ return new DeleteShardingAuditorStrategyConfigurationEvent(databaseName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DatabaseShardingStrategyEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DatabaseShardingStrategyEventCreator.java
new file mode 100644
index 00000000000..65954ffc355
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DatabaseShardingStrategyEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.strategy.database;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
+
+/**
+ * Database sharding strategy event creator.
+ */
+public final class DatabaseShardingStrategyEventCreator implements UniqueRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ return new DeleteDatabaseShardingStrategyConfigurationEvent(databaseName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/KeyGenerateStrategyEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/KeyGenerateStrategyEventCreator.java
new file mode 100644
index 00000000000..98924370492
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/KeyGenerateStrategyEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.strategy.keygenerate;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
+
+/**
+ * Key generate strategy event creator.
+ */
+public final class KeyGenerateStrategyEventCreator implements UniqueRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddKeyGenerateStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterKeyGenerateStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ return new DeleteKeyGenerateStrategyConfigurationEvent(databaseName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DefaultShardingColumnEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DefaultShardingColumnEventCreator.java
new file mode 100644
index 00000000000..9243f4f820a
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DefaultShardingColumnEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.strategy.shardingcolumn;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
+
+/**
+ * Default sharding column event creator.
+ */
+public final class DefaultShardingColumnEventCreator implements UniqueRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddDefaultShardingColumnEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterDefaultShardingColumnEvent(databaseName, event.getKey(), event.getValue());
+ }
+ return new DeleteDefaultShardingColumnEvent(databaseName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/TableShardingStrategyEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/TableShardingStrategyEventCreator.java
new file mode 100644
index 00000000000..29c831476b3
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/TableShardingStrategyEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.strategy.table;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
+
+/**
+ * Table sharding strategy event creator.
+ */
+public final class TableShardingStrategyEventCreator implements UniqueRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddTableShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterTableShardingStrategyConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ return new DeleteTableShardingStrategyConfigurationEvent(databaseName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/ShardingAutoTableEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/ShardingAutoTableEventCreator.java
new file mode 100644
index 00000000000..e627d7f1bcc
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/ShardingAutoTableEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.table.auto;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Sharding auto table event creator.
+ */
+public final class ShardingAutoTableEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String tableName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddShardingAutoTableConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterShardingAutoTableConfigurationEvent(databaseName, tableName, event.getKey(), event.getValue());
+ }
+ return new DeleteShardingAutoTableConfigurationEvent(databaseName, tableName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/ShardingTableReferenceEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/ShardingTableReferenceEventCreator.java
new file mode 100644
index 00000000000..7438b133e68
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/ShardingTableReferenceEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.table.binding;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Sharding table reference creator.
+ */
+public final class ShardingTableReferenceEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String tableName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddShardingTableReferenceConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterShardingTableReferenceConfigurationEvent(databaseName, tableName, event.getKey(), event.getValue());
+ }
+ return new DeleteShardingTableReferenceConfigurationEvent(databaseName, tableName);
+ }
+}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/ShardingTableEventCreator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/ShardingTableEventCreator.java
new file mode 100644
index 00000000000..48d271cfc64
--- /dev/null
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/ShardingTableEventCreator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.sharding.event.table.sharding;
+
+import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
+
+/**
+ * Sharding table event creator.
+ */
+public final class ShardingTableEventCreator implements NamedRuleItemChangedEventCreator {
+
+ @Override
+ public GovernanceEvent create(final String databaseName, final String tableName, final DataChangedEvent event) {
+ if (Type.ADDED == event.getType()) {
+ return new AddShardingTableConfigurationEvent(databaseName, event.getKey(), event.getValue());
+ }
+ if (Type.UPDATED == event.getType()) {
+ return new AlterShardingTableConfigurationEvent(databaseName, tableName, event.getKey(), event.getValue());
+ }
+ return new DeleteShardingTableConfigurationEvent(databaseName, tableName);
+ }
+}
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleChangedEventCreator.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleChangedEventCreator.java
index 6fdeec2e278..f2e4d5e59df 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleChangedEventCreator.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleChangedEventCreator.java
@@ -19,11 +19,9 @@ package org.apache.shardingsphere.single.event;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
-import org.apache.shardingsphere.single.event.config.AddSingleTableEvent;
-import org.apache.shardingsphere.single.event.config.AlterSingleTableEvent;
-import org.apache.shardingsphere.single.event.config.DeleteSingleTableEvent;
+import org.apache.shardingsphere.single.event.config.SingleTableEventCreator;
import org.apache.shardingsphere.single.metadata.nodepath.SingleRuleNodePathProvider;
/**
@@ -31,27 +29,21 @@ import org.apache.shardingsphere.single.metadata.nodepath.SingleRuleNodePathProv
*/
public final class SingleRuleChangedEventCreator implements RuleChangedEventCreator {
- @SuppressWarnings("SwitchStatementWithTooFewBranches")
@Override
public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
+ return getUniqueRuleItemChangedEventCreator(itemType).create(databaseName, event);
+ }
+
+ @SuppressWarnings("SwitchStatementWithTooFewBranches")
+ private UniqueRuleItemChangedEventCreator getUniqueRuleItemChangedEventCreator(final String itemType) {
switch (itemType) {
case SingleRuleNodePathProvider.TABLES:
- return createTableEvent(databaseName, event);
+ return new SingleTableEventCreator();
default:
throw new UnsupportedOperationException(itemType);
}
}
- private GovernanceEvent createTableEvent(final String databaseName, final DataChangedEvent event) {
- if (Type.ADDED == event.getType()) {
- return new AddSingleTableEvent(databaseName, event.getKey(), event.getValue());
- }
- if (Type.UPDATED == event.getType()) {
- return new AlterSingleTableEvent(databaseName, event.getKey(), event.getValue());
- }
- return new DeleteSingleTableEvent(databaseName);
- }
-
@Override
public String getType() {
return "single";
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleChangedEventCreator.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/config/SingleTableEventCreator.java
similarity index 56%
copy from kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleChangedEventCreator.java
copy to kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/config/SingleTableEventCreator.java
index 6fdeec2e278..ebf402f44eb 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleChangedEventCreator.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/config/SingleTableEventCreator.java
@@ -15,34 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.single.event;
+package org.apache.shardingsphere.single.event.config;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
-import org.apache.shardingsphere.mode.spi.RuleChangedEventCreator;
-import org.apache.shardingsphere.single.event.config.AddSingleTableEvent;
-import org.apache.shardingsphere.single.event.config.AlterSingleTableEvent;
-import org.apache.shardingsphere.single.event.config.DeleteSingleTableEvent;
-import org.apache.shardingsphere.single.metadata.nodepath.SingleRuleNodePathProvider;
+import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
/**
- * Single rule changed event creator.
+ * Single table event creator.
*/
-public final class SingleRuleChangedEventCreator implements RuleChangedEventCreator {
+public final class SingleTableEventCreator implements UniqueRuleItemChangedEventCreator {
- @SuppressWarnings("SwitchStatementWithTooFewBranches")
@Override
- public GovernanceEvent create(final String databaseName, final DataChangedEvent event, final String itemType) {
- switch (itemType) {
- case SingleRuleNodePathProvider.TABLES:
- return createTableEvent(databaseName, event);
- default:
- throw new UnsupportedOperationException(itemType);
- }
- }
-
- private GovernanceEvent createTableEvent(final String databaseName, final DataChangedEvent event) {
+ public GovernanceEvent create(final String databaseName, final DataChangedEvent event) {
if (Type.ADDED == event.getType()) {
return new AddSingleTableEvent(databaseName, event.getKey(), event.getValue());
}
@@ -51,9 +37,4 @@ public final class SingleRuleChangedEventCreator implements RuleChangedEventCrea
}
return new DeleteSingleTableEvent(databaseName);
}
-
- @Override
- public String getType() {
- return "single";
- }
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/mode/api/src/main/java/org/apache/shardingsphere/mode/event/NamedRuleItemChangedEventCreator.java
similarity index 65%
rename from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
rename to mode/api/src/main/java/org/apache/shardingsphere/mode/event/NamedRuleItemChangedEventCreator.java
index d6904ccf7d4..9a060591b90 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/mode/api/src/main/java/org/apache/shardingsphere/mode/event/NamedRuleItemChangedEventCreator.java
@@ -15,24 +15,22 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.mode.event;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
/**
- * Alter load-balance event.
+ * Named rule item changed event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class AlterLoadBalanceEvent implements GovernanceEvent {
+public interface NamedRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
+ /**
+ * Create named rule item changed event.
+ *
+ * @param databaseName database name
+ * @param itemName item name
+ * @param event data changed event
+ * @return named rule item changed event
+ */
+ GovernanceEvent create(String databaseName, String itemName, DataChangedEvent event);
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java b/mode/api/src/main/java/org/apache/shardingsphere/mode/event/UniqueRuleItemChangedEventCreator.java
similarity index 68%
rename from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
rename to mode/api/src/main/java/org/apache/shardingsphere/mode/event/UniqueRuleItemChangedEventCreator.java
index 99397c8b4f0..65f4c561bff 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
+++ b/mode/api/src/main/java/org/apache/shardingsphere/mode/event/UniqueRuleItemChangedEventCreator.java
@@ -15,20 +15,21 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.event.loadbalance;
+package org.apache.shardingsphere.mode.event;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
/**
- * Delete load-balance event.
+ * Unique rule item changed event creator.
*/
-@RequiredArgsConstructor
-@Getter
-public final class DeleteLoadBalanceEvent implements GovernanceEvent {
+public interface UniqueRuleItemChangedEventCreator {
- private final String databaseName;
-
- private final String loadBalanceName;
+ /**
+ * Create named rule item changed event.
+ *
+ * @param databaseName database name
+ * @param event data changed event
+ * @return named rule item changed event
+ */
+ GovernanceEvent create(String databaseName, DataChangedEvent event);
}