This is an automated email from the ASF dual-hosted git repository.
panjuan 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 12bcb2f3300 Optimize error code for encrypt. (#23335)
12bcb2f3300 is described below
commit 12bcb2f3300dba1314586b996fbb0a2196b1b78a
Author: Chuxin Chen <[email protected]>
AuthorDate: Thu Jan 5 11:42:06 2023 +0800
Optimize error code for encrypt. (#23335)
* Optimize error code for encrypt.
* Optimize error code for encrypt.
---
.../checker/EncryptRuleConfigurationChecker.java | 41 ++++++++++++----------
...ncryptAssistedQueryColumnNotFoundException.java | 37 +++++++++++++++++++
...yptAssistedQueryEncryptorNotFoundException.java | 33 +++++++++++++++++
.../EncryptCipherColumnNotFoundException.java | 33 +++++++++++++++++
.../EncryptEncryptorNotFoundException.java | 33 +++++++++++++++++
.../EncryptLikeQueryColumnNotFoundException.java | 37 +++++++++++++++++++
...EncryptLikeQueryEncryptorNotFoundException.java | 33 +++++++++++++++++
.../metadata/EncryptTableNotFoundException.java | 33 +++++++++++++++++
.../dal/show/EncryptShowColumnsMergedResult.java | 6 ++--
.../show/EncryptShowCreateTableMergedResult.java | 6 ++--
.../EncryptInsertValueParameterRewriter.java | 8 +++--
...ptForUseDefaultInsertColumnsTokenGenerator.java | 8 +++--
.../shardingsphere/encrypt/rule/EncryptRule.java | 14 +++++---
.../EncryptRuleConfigurationCheckerTest.java | 7 ++--
14 files changed, 293 insertions(+), 36 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationChecker.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationChecker.java
index f5d504ba70b..84dbdd314eb 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationChecker.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationChecker.java
@@ -17,14 +17,20 @@
package org.apache.shardingsphere.encrypt.checker;
-import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
import org.apache.shardingsphere.encrypt.constant.EncryptOrder;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptAssistedQueryColumnNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptAssistedQueryEncryptorNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptCipherColumnNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptEncryptorNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptLikeQueryColumnNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptLikeQueryEncryptorNotFoundException;
import
org.apache.shardingsphere.infra.config.rule.checker.RuleConfigurationChecker;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import javax.sql.DataSource;
import java.util.Collection;
@@ -51,36 +57,33 @@ public final class EncryptRuleConfigurationChecker
implements RuleConfigurationC
}
private void checkCipherColumnConfiguration(final String databaseName,
final Collection<String> encryptors, final EncryptColumnRuleConfiguration
column) {
-
Preconditions.checkState(!Strings.isNullOrEmpty(column.getCipherColumn()),
- "Cipher column of `%s` can not be null in database `%s`.",
column.getLogicColumn(), databaseName);
-
Preconditions.checkState(!Strings.isNullOrEmpty(column.getEncryptorName()),
- "Encryptor name of `%s` can not be null in database `%s`.",
column.getLogicColumn(), databaseName);
-
Preconditions.checkState(encryptors.contains(column.getEncryptorName()),
- "Can not find encryptor `%s` in database `%s`.",
column.getEncryptorName(), databaseName);
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(column.getCipherColumn()),
() -> new EncryptCipherColumnNotFoundException(column.getLogicColumn(),
databaseName));
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(column.getEncryptorName()),
+ () -> new
EncryptEncryptorNotFoundException(String.format("Encryptor name of `%s` can not
be null in database `%s`.", column.getLogicColumn(), databaseName)));
+
ShardingSpherePreconditions.checkState(encryptors.contains(column.getEncryptorName()),
+ () -> new EncryptEncryptorNotFoundException(String.format("Can
not find encryptor `%s` in database `%s`.", column.getEncryptorName(),
databaseName)));
}
private void checkAssistColumnConfiguration(final String databaseName,
final Collection<String> encryptors, final EncryptColumnRuleConfiguration
column) {
if (Strings.isNullOrEmpty(column.getAssistedQueryColumn()) &&
Strings.isNullOrEmpty(column.getAssistedQueryEncryptorName())) {
return;
}
-
Preconditions.checkState(!Strings.isNullOrEmpty(column.getAssistedQueryColumn()),
- "Assisted query column of `%s` can not be null in database
`%s`.", column.getLogicColumn(), databaseName);
-
Preconditions.checkState(!Strings.isNullOrEmpty(column.getAssistedQueryEncryptorName()),
- "Assisted query encryptor name of `%s` can not be null in
database `%s`.", column.getLogicColumn(), databaseName);
-
Preconditions.checkState(encryptors.contains(column.getAssistedQueryEncryptorName()),
- "Can not find assisted query encryptor `%s` in database
`%s`.", column.getAssistedQueryEncryptorName(), databaseName);
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(column.getAssistedQueryColumn()),
() -> new EncryptAssistedQueryColumnNotFoundException(column.getLogicColumn(),
databaseName));
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(column.getAssistedQueryEncryptorName()),
() -> new EncryptAssistedQueryEncryptorNotFoundException(
+ String.format("Assisted query encryptor name of `%s` can not
be null in database `%s`.", column.getLogicColumn(), databaseName)));
+
ShardingSpherePreconditions.checkState(encryptors.contains(column.getAssistedQueryEncryptorName()),
() -> new EncryptAssistedQueryEncryptorNotFoundException(
+ String.format("Can not find assisted query encryptor `%s` in
database `%s`.", column.getAssistedQueryEncryptorName(), databaseName)));
}
private void checkLikeColumnConfiguration(final String databaseName, final
Collection<String> encryptors, final EncryptColumnRuleConfiguration column) {
if (Strings.isNullOrEmpty(column.getLikeQueryColumn()) &&
Strings.isNullOrEmpty(column.getLikeQueryEncryptorName())) {
return;
}
-
Preconditions.checkState(!Strings.isNullOrEmpty(column.getLikeQueryColumn()),
- "Like query column of `%s` can not be null in database `%s`.",
column.getLogicColumn(), databaseName);
-
Preconditions.checkState(!Strings.isNullOrEmpty(column.getLikeQueryEncryptorName()),
- "Like query encryptor name of `%s` can not be null in database
`%s`.", column.getLogicColumn(), databaseName);
-
Preconditions.checkState(encryptors.contains(column.getLikeQueryEncryptorName()),
- "Can not find like query encryptor `%s` in database `%s`.",
column.getLikeQueryEncryptorName(), databaseName);
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(column.getLikeQueryColumn()),
() -> new EncryptLikeQueryColumnNotFoundException(column.getLogicColumn(),
databaseName));
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(column.getLikeQueryEncryptorName()),
+ () -> new
EncryptLikeQueryEncryptorNotFoundException(String.format("Like query encryptor
name of `%s` can not be null in database `%s`.", column.getLogicColumn(),
databaseName)));
+
ShardingSpherePreconditions.checkState(encryptors.contains(column.getLikeQueryEncryptorName()),
+ () -> new
EncryptLikeQueryEncryptorNotFoundException(String.format("Can not find like
query encryptor `%s` in database `%s`.", column.getLikeQueryEncryptorName(),
databaseName)));
}
@Override
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptAssistedQueryColumnNotFoundException.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptAssistedQueryColumnNotFoundException.java
new file mode 100644
index 00000000000..528ba69bcdd
--- /dev/null
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptAssistedQueryColumnNotFoundException.java
@@ -0,0 +1,37 @@
+/*
+ * 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.exception.metadata;
+
+import org.apache.shardingsphere.encrypt.exception.EncryptSQLException;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+
+/**
+ * Encrypt assisted query column not found exception.
+ */
+public final class EncryptAssistedQueryColumnNotFoundException extends
EncryptSQLException {
+
+ private static final long serialVersionUID = -4958403725374225598L;
+
+ public EncryptAssistedQueryColumnNotFoundException(final String
logicColumnName, final String databaseName) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, "Assisted query column
of `%s` can not be null in database `%s`.", logicColumnName, databaseName);
+ }
+
+ public EncryptAssistedQueryColumnNotFoundException() {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, "Can not find assisted
query column Name.");
+ }
+}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptAssistedQueryEncryptorNotFoundException.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptAssistedQueryEncryptorNotFoundException.java
new file mode 100644
index 00000000000..9f8b7b7525b
--- /dev/null
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptAssistedQueryEncryptorNotFoundException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.exception.metadata;
+
+import org.apache.shardingsphere.encrypt.exception.EncryptSQLException;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+
+/**
+ * Encrypt assisted query encryptor not found exception.
+ */
+public final class EncryptAssistedQueryEncryptorNotFoundException extends
EncryptSQLException {
+
+ private static final long serialVersionUID = -8700683634804933320L;
+
+ public EncryptAssistedQueryEncryptorNotFoundException(final String reason)
{
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 6, reason);
+ }
+}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptCipherColumnNotFoundException.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptCipherColumnNotFoundException.java
new file mode 100644
index 00000000000..1ace836944e
--- /dev/null
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptCipherColumnNotFoundException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.exception.metadata;
+
+import org.apache.shardingsphere.encrypt.exception.EncryptSQLException;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+
+/**
+ * Encrypt cipher column not found exception.
+ */
+public final class EncryptCipherColumnNotFoundException extends
EncryptSQLException {
+
+ private static final long serialVersionUID = -6765795304282762539L;
+
+ public EncryptCipherColumnNotFoundException(final String logicColumnName,
final String databaseName) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 3, "Cipher column of `%s`
can not be null in database `%s`.", logicColumnName, databaseName);
+ }
+}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptEncryptorNotFoundException.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptEncryptorNotFoundException.java
new file mode 100644
index 00000000000..146b3fd226d
--- /dev/null
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptEncryptorNotFoundException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.exception.metadata;
+
+import org.apache.shardingsphere.encrypt.exception.EncryptSQLException;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+
+/**
+ * Encrypt encryptor not found exception.
+ */
+public final class EncryptEncryptorNotFoundException extends
EncryptSQLException {
+
+ private static final long serialVersionUID = -4847495252826650747L;
+
+ public EncryptEncryptorNotFoundException(final String reason) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 4, reason);
+ }
+}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptLikeQueryColumnNotFoundException.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptLikeQueryColumnNotFoundException.java
new file mode 100644
index 00000000000..3530317828d
--- /dev/null
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptLikeQueryColumnNotFoundException.java
@@ -0,0 +1,37 @@
+/*
+ * 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.exception.metadata;
+
+import org.apache.shardingsphere.encrypt.exception.EncryptSQLException;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+
+/**
+ * Encrypt like query column not found exception.
+ */
+public final class EncryptLikeQueryColumnNotFoundException extends
EncryptSQLException {
+
+ private static final long serialVersionUID = -1628043793867162797L;
+
+ public EncryptLikeQueryColumnNotFoundException(final String
logicColumnName, final String databaseName) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 7, "Like query column of
`%s` can not be null in database `%s`.", logicColumnName, databaseName);
+ }
+
+ public EncryptLikeQueryColumnNotFoundException() {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 7, "Can not find like
query column Name.");
+ }
+}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptLikeQueryEncryptorNotFoundException.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptLikeQueryEncryptorNotFoundException.java
new file mode 100644
index 00000000000..aac5019c3d8
--- /dev/null
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptLikeQueryEncryptorNotFoundException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.exception.metadata;
+
+import org.apache.shardingsphere.encrypt.exception.EncryptSQLException;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+
+/**
+ * Encrypt like query encryptor not found exception.
+ */
+public final class EncryptLikeQueryEncryptorNotFoundException extends
EncryptSQLException {
+
+ private static final long serialVersionUID = 1620586484949188815L;
+
+ public EncryptLikeQueryEncryptorNotFoundException(final String reason) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 8, reason);
+ }
+}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptTableNotFoundException.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptTableNotFoundException.java
new file mode 100644
index 00000000000..053d0158161
--- /dev/null
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/exception/metadata/EncryptTableNotFoundException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.exception.metadata;
+
+import org.apache.shardingsphere.encrypt.exception.EncryptSQLException;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+
+/**
+ * Encrypt table not found exception.
+ */
+public final class EncryptTableNotFoundException extends EncryptSQLException {
+
+ private static final long serialVersionUID = 8909641495852822938L;
+
+ public EncryptTableNotFoundException(final String tableName) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 9, "Can not find encrypt
table: %s", tableName);
+ }
+}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
index 7f4734822bb..fb4631a1640 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
@@ -17,12 +17,13 @@
package org.apache.shardingsphere.encrypt.merge.dal.show;
-import com.google.common.base.Preconditions;
+import
org.apache.shardingsphere.encrypt.exception.syntax.UnsupportedEncryptSQLException;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import java.io.InputStream;
import java.sql.SQLException;
@@ -42,7 +43,8 @@ public abstract class EncryptShowColumnsMergedResult
implements MergedResult {
private final EncryptRule encryptRule;
protected EncryptShowColumnsMergedResult(final SQLStatementContext<?>
sqlStatementContext, final EncryptRule encryptRule) {
- Preconditions.checkState(sqlStatementContext instanceof TableAvailable
&& 1 == ((TableAvailable) sqlStatementContext).getAllTables().size());
+ ShardingSpherePreconditions.checkState(sqlStatementContext instanceof
TableAvailable && 1 == ((TableAvailable)
sqlStatementContext).getAllTables().size(),
+ () -> new UnsupportedEncryptSQLException("SHOW COLUMNS FOR
MULTI TABLE"));
tableName = ((TableAvailable)
sqlStatementContext).getAllTables().iterator().next().getTableName().getIdentifier().getValue();
this.encryptRule = encryptRule;
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
index a1af5d0ce3b..ea2e32460c8 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
@@ -17,13 +17,14 @@
package org.apache.shardingsphere.encrypt.merge.dal.show;
-import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
+import
org.apache.shardingsphere.encrypt.exception.syntax.UnsupportedEncryptSQLException;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import java.io.InputStream;
import java.sql.SQLException;
@@ -48,7 +49,8 @@ public abstract class EncryptShowCreateTableMergedResult
implements MergedResult
private final EncryptRule encryptRule;
protected EncryptShowCreateTableMergedResult(final SQLStatementContext<?>
sqlStatementContext, final EncryptRule encryptRule) {
- Preconditions.checkState(sqlStatementContext instanceof TableAvailable
&& 1 == ((TableAvailable) sqlStatementContext).getAllTables().size());
+ ShardingSpherePreconditions.checkState(sqlStatementContext instanceof
TableAvailable && 1 == ((TableAvailable)
sqlStatementContext).getAllTables().size(),
+ () -> new UnsupportedEncryptSQLException("SHOW CREATE TABLE
FOR MULTI TABLE"));
tableName = ((TableAvailable)
sqlStatementContext).getAllTables().iterator().next().getTableName().getIdentifier().getValue();
this.encryptRule = encryptRule;
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptInsertValueParameterRewriter.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptInsertValueParameterRewriter.java
index b073829045b..7430324ec97 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptInsertValueParameterRewriter.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptInsertValueParameterRewriter.java
@@ -17,11 +17,12 @@
package org.apache.shardingsphere.encrypt.rewrite.parameter.rewriter;
-import com.google.common.base.Preconditions;
import lombok.Setter;
import org.apache.shardingsphere.encrypt.api.encrypt.like.LikeEncryptAlgorithm;
import
org.apache.shardingsphere.encrypt.api.encrypt.standard.StandardEncryptAlgorithm;
import org.apache.shardingsphere.encrypt.context.EncryptContextBuilder;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptAssistedQueryColumnNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptLikeQueryColumnNotFoundException;
import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
@@ -33,6 +34,7 @@ import
org.apache.shardingsphere.infra.rewrite.parameter.builder.ParameterBuilde
import
org.apache.shardingsphere.infra.rewrite.parameter.builder.impl.GroupedParameterBuilder;
import
org.apache.shardingsphere.infra.rewrite.parameter.builder.impl.StandardParameterBuilder;
import
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;
@@ -114,12 +116,12 @@ public final class EncryptInsertValueParameterRewriter
implements ParameterRewri
Collection<Object> addedParams = new LinkedList<>();
if (null != assistEncryptor) {
Optional<String> assistedColumnName =
encryptRule.findAssistedQueryColumn(encryptContext.getTableName(),
encryptContext.getColumnName());
- Preconditions.checkArgument(assistedColumnName.isPresent(), "Can
not find assisted query Column Name");
+
ShardingSpherePreconditions.checkState(assistedColumnName.isPresent(),
EncryptAssistedQueryColumnNotFoundException::new);
addedParams.add(assistEncryptor.encrypt(originalValue,
encryptContext));
}
if (null != likeEncryptor) {
Optional<String> likeColumnName =
encryptRule.findLikeQueryColumn(encryptContext.getTableName(),
encryptContext.getColumnName());
- Preconditions.checkArgument(likeColumnName.isPresent(), "Can not
find like query column Name");
+ ShardingSpherePreconditions.checkState(likeColumnName.isPresent(),
EncryptLikeQueryColumnNotFoundException::new);
addedParams.add(likeEncryptor.encrypt(originalValue,
encryptContext));
}
if (encryptRule.findPlainColumn(encryptContext.getTableName(),
encryptContext.getColumnName()).isPresent()) {
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptForUseDefaultInsertColumnsTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptForUseDefaultInsertColumnsTokenGenerator.java
index 754bbd5bd72..7a3958c5336 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptForUseDefaultInsertColumnsTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptForUseDefaultInsertColumnsTokenGenerator.java
@@ -19,15 +19,17 @@ package
org.apache.shardingsphere.encrypt.rewrite.token.generator;
import com.google.common.base.Preconditions;
import lombok.Setter;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptTableNotFoundException;
+import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
-import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import
org.apache.shardingsphere.infra.rewrite.sql.token.generator.OptionalSQLTokenGenerator;
import
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.PreviousSQLTokensAware;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
import
org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.UseDefaultInsertColumnsToken;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.InsertColumnsSegment;
import java.util.Iterator;
@@ -72,7 +74,7 @@ public final class
EncryptForUseDefaultInsertColumnsTokenGenerator implements Op
private void processPreviousSQLToken(final UseDefaultInsertColumnsToken
previousSQLToken, final InsertStatementContext insertStatementContext, final
String tableName) {
Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
- Preconditions.checkState(encryptTable.isPresent());
+ ShardingSpherePreconditions.checkState(encryptTable.isPresent(), () ->
new EncryptTableNotFoundException(tableName));
List<String> columnNames = getColumnNames(insertStatementContext,
encryptTable.get(), previousSQLToken.getColumns());
previousSQLToken.getColumns().clear();
previousSQLToken.getColumns().addAll(columnNames);
@@ -82,7 +84,7 @@ public final class
EncryptForUseDefaultInsertColumnsTokenGenerator implements Op
Optional<InsertColumnsSegment> insertColumnsSegment =
insertStatementContext.getSqlStatement().getInsertColumns();
Preconditions.checkState(insertColumnsSegment.isPresent());
Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
- Preconditions.checkState(encryptTable.isPresent());
+ ShardingSpherePreconditions.checkState(encryptTable.isPresent(), () ->
new EncryptTableNotFoundException(tableName));
return new
UseDefaultInsertColumnsToken(insertColumnsSegment.get().getStopIndex(),
getColumnNames(insertStatementContext, encryptTable.get(),
insertStatementContext.getColumnNames()));
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
index 37b9a3d027f..deb8ba4876f 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
@@ -17,12 +17,14 @@
package org.apache.shardingsphere.encrypt.rule;
-import com.google.common.base.Preconditions;
import lombok.Getter;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.encrypt.like.LikeEncryptAlgorithm;
import
org.apache.shardingsphere.encrypt.api.encrypt.standard.StandardEncryptAlgorithm;
import org.apache.shardingsphere.encrypt.context.EncryptContextBuilder;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptAssistedQueryEncryptorNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptEncryptorNotFoundException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptLikeQueryEncryptorNotFoundException;
import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
import org.apache.shardingsphere.encrypt.spi.context.EncryptContext;
import
org.apache.shardingsphere.infra.algorithm.ShardingSphereAlgorithmFactory;
@@ -31,6 +33,7 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.
import
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
import org.apache.shardingsphere.infra.rule.identifier.scope.DatabaseRule;
import org.apache.shardingsphere.infra.rule.identifier.type.TableContainedRule;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import java.util.Collection;
import java.util.Collections;
@@ -143,7 +146,8 @@ public final class EncryptRule implements DatabaseRule,
TableContainedRule {
public List<Object> getEncryptValues(final String databaseName, final
String schemaName, final String logicTable, final String logicColumn, final
List<Object> originalValues) {
Optional<StandardEncryptAlgorithm> encryptor =
findEncryptor(logicTable, logicColumn);
EncryptContext encryptContext =
EncryptContextBuilder.build(databaseName, schemaName, logicTable, logicColumn);
- Preconditions.checkArgument(encryptor.isPresent(), "Can not find
StandardEncryptAlgorithm by %s.%s.", logicTable, logicColumn);
+ ShardingSpherePreconditions.checkState(encryptor.isPresent(),
+ () -> new EncryptEncryptorNotFoundException(String.format("Can
not find StandardEncryptAlgorithm by %s.%s.", logicTable, logicColumn)));
return getEncryptValues(encryptor.get(), originalValues,
encryptContext);
}
@@ -235,7 +239,8 @@ public final class EncryptRule implements DatabaseRule,
TableContainedRule {
public List<Object> getEncryptAssistedQueryValues(final String
databaseName, final String schemaName, final String logicTable, final String
logicColumn, final List<Object> originalValues) {
Optional<StandardEncryptAlgorithm> encryptor =
findAssistedQueryEncryptor(logicTable, logicColumn);
EncryptContext encryptContext =
EncryptContextBuilder.build(databaseName, schemaName, logicTable, logicColumn);
- Preconditions.checkArgument(encryptor.isPresent(), "Can not find
assist encryptor by %s.%s.", logicTable, logicColumn);
+ ShardingSpherePreconditions.checkState(encryptor.isPresent(),
+ () -> new
EncryptAssistedQueryEncryptorNotFoundException(String.format("Can not find
assist encryptor by %s.%s.", logicTable, logicColumn)));
return getEncryptAssistedQueryValues(encryptor.get(), originalValues,
encryptContext);
}
@@ -260,7 +265,8 @@ public final class EncryptRule implements DatabaseRule,
TableContainedRule {
public List<Object> getEncryptLikeQueryValues(final String databaseName,
final String schemaName, final String logicTable, final String logicColumn,
final List<Object> originalValues) {
Optional<LikeEncryptAlgorithm> encryptor =
findLikeQueryEncryptor(logicTable, logicColumn);
EncryptContext encryptContext =
EncryptContextBuilder.build(databaseName, schemaName, logicTable, logicColumn);
- Preconditions.checkArgument(encryptor.isPresent(), "Can not find like
encryptor by %s.%s.", logicTable, logicColumn);
+ ShardingSpherePreconditions.checkState(encryptor.isPresent(),
+ () -> new
EncryptLikeQueryEncryptorNotFoundException(String.format("Can not find like
encryptor by %s.%s.", logicTable, logicColumn)));
return getEncryptLikeQueryValues(encryptor.get(), originalValues,
encryptContext);
}
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationCheckerTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationCheckerTest.java
index 7694ba82182..64532a6c513 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationCheckerTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/checker/EncryptRuleConfigurationCheckerTest.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.encrypt.checker;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
+import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptEncryptorNotFoundException;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
import
org.apache.shardingsphere.infra.config.rule.checker.RuleConfigurationChecker;
import
org.apache.shardingsphere.infra.util.spi.type.ordered.OrderedSPIRegistry;
@@ -50,7 +51,7 @@ public final class EncryptRuleConfigurationCheckerTest {
}
@SuppressWarnings({"rawtypes", "unchecked"})
- @Test(expected = IllegalStateException.class)
+ @Test(expected = EncryptEncryptorNotFoundException.class)
public void assertCheckWhenConfigInvalidCipherColumn() {
EncryptRuleConfiguration config = createInvalidCipherColumnConfig();
RuleConfigurationChecker checker =
OrderedSPIRegistry.getRegisteredServicesByClass(RuleConfigurationChecker.class,
Collections.singleton(config.getClass())).get(config.getClass());
@@ -66,7 +67,7 @@ public final class EncryptRuleConfigurationCheckerTest {
}
@SuppressWarnings({"rawtypes", "unchecked"})
- @Test(expected = IllegalStateException.class)
+ @Test(expected = EncryptEncryptorNotFoundException.class)
public void assertCheckWhenConfigInvalidAssistColumn() {
EncryptRuleConfiguration config = createInvalidAssistColumnConfig();
RuleConfigurationChecker checker =
OrderedSPIRegistry.getRegisteredServicesByClass(RuleConfigurationChecker.class,
Collections.singleton(config.getClass())).get(config.getClass());
@@ -83,7 +84,7 @@ public final class EncryptRuleConfigurationCheckerTest {
}
@SuppressWarnings({"rawtypes", "unchecked"})
- @Test(expected = IllegalStateException.class)
+ @Test(expected = EncryptEncryptorNotFoundException.class)
public void assertCheckWhenConfigInvalidLikeColumn() {
EncryptRuleConfiguration config = createInvalidLikeColumnConfig();
RuleConfigurationChecker checker =
OrderedSPIRegistry.getRegisteredServicesByClass(RuleConfigurationChecker.class,
Collections.singleton(config.getClass())).get(config.getClass());