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 20ebec9  Refactor KernelProcessor (#8715)
20ebec9 is described below

commit 20ebec9f7af020c883d52296b9a47d2224fd58cd
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Dec 22 14:52:46 2020 +0800

    Refactor KernelProcessor (#8715)
---
 .../infra/context/kernel/KernelProcessor.java      | 34 +++++++++++++---------
 1 file changed, 21 insertions(+), 13 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
index eda1c25..d336713 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
@@ -19,22 +19,18 @@ package org.apache.shardingsphere.infra.context.kernel;
 
 import org.apache.shardingsphere.infra.audit.SQLAuditEngine;
 import org.apache.shardingsphere.infra.binder.LogicSQL;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import 
org.apache.shardingsphere.infra.executor.sql.context.ExecutionContextBuilder;
-import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
 import org.apache.shardingsphere.infra.executor.sql.log.SQLLogger;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry;
 import org.apache.shardingsphere.infra.rewrite.engine.result.SQLRewriteResult;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
 import org.apache.shardingsphere.infra.route.engine.SQLRouteEngine;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
 import java.sql.SQLException;
-import java.util.Collection;
 
 /**
  * Kernel processor.
@@ -51,19 +47,31 @@ public final class KernelProcessor {
      * @throws SQLException SQL exception
      */
     public ExecutionContext generateExecutionContext(final LogicSQL logicSQL, 
final ShardingSphereMetaData metaData, final ConfigurationProperties props) 
throws SQLException {
-        Collection<ShardingSphereRule> rules = 
metaData.getRuleMetaData().getRules();
-        new 
SQLAuditEngine().audit(logicSQL.getSqlStatementContext().getSqlStatement(), 
logicSQL.getParameters(), metaData.getName(), rules);
-        SQLRouteEngine sqlRouteEngine = new SQLRouteEngine(rules, props);
-        SQLStatementContext<?> sqlStatementContext = 
logicSQL.getSqlStatementContext();
-        RouteContext routeContext = sqlRouteEngine.route(logicSQL, metaData);
-        SQLRewriteEntry rewriteEntry = new 
SQLRewriteEntry(metaData.getSchema(), props, rules);
-        SQLRewriteResult rewriteResult = 
rewriteEntry.rewrite(logicSQL.getSql(), logicSQL.getParameters(), 
sqlStatementContext, routeContext);
-        Collection<ExecutionUnit> executionUnits = 
ExecutionContextBuilder.build(metaData, rewriteResult, sqlStatementContext);
-        ExecutionContext result = new ExecutionContext(sqlStatementContext, 
executionUnits, routeContext);
+        audit(logicSQL, metaData);
+        RouteContext routeContext = route(logicSQL, metaData, props);
+        SQLRewriteResult rewriteResult = rewrite(logicSQL, metaData, props, 
routeContext);
+        ExecutionContext result = createExecutionContext(logicSQL, metaData, 
routeContext, rewriteResult);
         logSQL(logicSQL, props, result);
         return result;
     }
     
+    private void audit(final LogicSQL logicSQL, final ShardingSphereMetaData 
metaData) throws SQLException {
+        new 
SQLAuditEngine().audit(logicSQL.getSqlStatementContext().getSqlStatement(), 
logicSQL.getParameters(), metaData.getName(), 
metaData.getRuleMetaData().getRules());
+    }
+    
+    private RouteContext route(final LogicSQL logicSQL, final 
ShardingSphereMetaData metaData, final ConfigurationProperties props) {
+        return new SQLRouteEngine(metaData.getRuleMetaData().getRules(), 
props).route(logicSQL, metaData);
+    }
+    
+    private SQLRewriteResult rewrite(final LogicSQL logicSQL, final 
ShardingSphereMetaData metaData, final ConfigurationProperties props, final 
RouteContext routeContext) {
+        return new SQLRewriteEntry(
+                metaData.getSchema(), props, 
metaData.getRuleMetaData().getRules()).rewrite(logicSQL.getSql(), 
logicSQL.getParameters(), logicSQL.getSqlStatementContext(), routeContext);
+    }
+    
+    private ExecutionContext createExecutionContext(final LogicSQL logicSQL, 
final ShardingSphereMetaData metaData, final RouteContext routeContext, final 
SQLRewriteResult rewriteResult) {
+        return new ExecutionContext(logicSQL.getSqlStatementContext(), 
ExecutionContextBuilder.build(metaData, rewriteResult, 
logicSQL.getSqlStatementContext()), routeContext);
+    }
+    
     private void logSQL(final LogicSQL logicSQL, final ConfigurationProperties 
props, final ExecutionContext executionContext) {
         if (props.<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW)) {
             SQLLogger.logSQL(logicSQL, 
props.<Boolean>getValue(ConfigurationPropertyKey.SQL_SIMPLE), executionContext);

Reply via email to