This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new a002c5840d2 Refactor ProxyBackendHandlerChecker (#32348)
a002c5840d2 is described below
commit a002c5840d29e371032343fbfaf93b6972ea2504
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Aug 1 00:49:24 2024 +0800
Refactor ProxyBackendHandlerChecker (#32348)
* Refactor ProxyBackendHandlerChecker
* Refactor ProxyBackendHandlerChecker
---
.../proxy/backend/handler/ProxyBackendHandlerFactory.java | 8 +++++++-
.../handler/checker/AuditProxyBackendHandlerChecker.java | 8 ++++----
.../handler/checker/AuthorityProxyBackendHandlerChecker.java | 10 +++++-----
.../backend/handler/checker/ProxyBackendHandlerChecker.java | 8 +++++---
4 files changed, 21 insertions(+), 13 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
index 34bb5e5dd53..0eab1fa72e4 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
@@ -31,6 +31,9 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
import org.apache.shardingsphere.infra.hint.HintValueContext;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
@@ -141,8 +144,11 @@ public final class ProxyBackendHandlerFactory {
if (null == databaseName) {
return DatabaseBackendHandlerFactory.newInstance(queryContext,
connectionSession, preferPreparedStatement);
}
+ Grantee grantee =
connectionSession.getConnectionContext().getGrantee();
+ ShardingSphereMetaData metaData =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData();
+ ShardingSphereDatabase database = metaData.getDatabase(databaseName);
for (ProxyBackendHandlerChecker each :
ShardingSphereServiceLoader.getServiceInstances(ProxyBackendHandlerChecker.class))
{
- each.check(connectionSession, queryContext,
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(databaseName));
+ each.check(metaData, grantee, queryContext, database);
}
return DatabaseAdminBackendHandlerFactory.newInstance(databaseType,
sqlStatementContext, connectionSession)
.orElseGet(() ->
DatabaseBackendHandlerFactory.newInstance(queryContext, connectionSession,
preferPreparedStatement));
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuditProxyBackendHandlerChecker.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuditProxyBackendHandlerChecker.java
index 445a8b77b35..c7123b9f1d9 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuditProxyBackendHandlerChecker.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuditProxyBackendHandlerChecker.java
@@ -18,10 +18,10 @@
package org.apache.shardingsphere.proxy.backend.handler.checker;
import org.apache.shardingsphere.infra.executor.audit.SQLAuditEngine;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
/**
* Audit proxy backend handler checker.
@@ -29,7 +29,7 @@ import
org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
public final class AuditProxyBackendHandlerChecker implements
ProxyBackendHandlerChecker {
@Override
- public void check(final ConnectionSession connectionSession, final
QueryContext queryContext, final ShardingSphereDatabase database) {
- SQLAuditEngine.audit(queryContext,
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData(),
database);
+ public void check(final ShardingSphereMetaData metaData, final Grantee
grantee, final QueryContext queryContext, final ShardingSphereDatabase
database) {
+ SQLAuditEngine.audit(queryContext, metaData.getGlobalRuleMetaData(),
database);
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuthorityProxyBackendHandlerChecker.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuthorityProxyBackendHandlerChecker.java
index 2d0aaef7689..490b7ae413e 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuthorityProxyBackendHandlerChecker.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/AuthorityProxyBackendHandlerChecker.java
@@ -21,10 +21,10 @@ import
org.apache.shardingsphere.authority.checker.AuthorityChecker;
import org.apache.shardingsphere.authority.rule.AuthorityRule;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
/**
* Authority proxy backend handler checker.
@@ -32,9 +32,9 @@ import
org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
public final class AuthorityProxyBackendHandlerChecker implements
ProxyBackendHandlerChecker {
@Override
- public void check(final ConnectionSession connectionSession, final
QueryContext queryContext, final ShardingSphereDatabase database) {
- AuthorityRule authorityRule =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
- ShardingSpherePreconditions.checkState(new
AuthorityChecker(authorityRule,
connectionSession.getConnectionContext().getGrantee()).isAuthorized(database.getName()),
+ public void check(final ShardingSphereMetaData metaData, final Grantee
grantee, final QueryContext queryContext, final ShardingSphereDatabase
database) {
+ AuthorityRule authorityRule =
metaData.getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
+ ShardingSpherePreconditions.checkState(new
AuthorityChecker(authorityRule, grantee).isAuthorized(database.getName()),
() -> new UnknownDatabaseException(database.getName()));
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/ProxyBackendHandlerChecker.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/ProxyBackendHandlerChecker.java
index b1220b4ff4b..24c7a4babf7 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/ProxyBackendHandlerChecker.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/checker/ProxyBackendHandlerChecker.java
@@ -17,10 +17,11 @@
package org.apache.shardingsphere.proxy.backend.handler.checker;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
/**
* Proxy backend handler checker.
@@ -31,9 +32,10 @@ public interface ProxyBackendHandlerChecker {
/**
* Check.
*
- * @param connectionSession connection session
+ * @param metaData ShardingSphere meta data
+ * @param grantee grantee
* @param queryContext query context
* @param database database
*/
- void check(ConnectionSession connectionSession, QueryContext queryContext,
ShardingSphereDatabase database);
+ void check(ShardingSphereMetaData metaData, Grantee grantee, QueryContext
queryContext, ShardingSphereDatabase database);
}