1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.callback;
19
20 import com.google.common.base.Preconditions;
21 import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorCallback;
22 import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawSQLExecutionUnit;
23 import org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
24 import org.apache.shardingsphere.infra.executor.sql.process.ProcessEngine;
25 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
26
27 import java.util.Collection;
28
29
30
31
32 public final class RawSQLExecutorCallback implements ExecutorCallback<RawSQLExecutionUnit, ExecuteResult> {
33
34 @SuppressWarnings("rawtypes")
35 private final Collection<RawExecutorCallback> callbacks;
36
37 private final ProcessEngine processEngine = new ProcessEngine();
38
39 public RawSQLExecutorCallback() {
40 callbacks = ShardingSphereServiceLoader.getServiceInstances(RawExecutorCallback.class);
41 Preconditions.checkState(!callbacks.isEmpty(), "No raw executor callback implementation found.");
42 }
43
44 @SuppressWarnings("unchecked")
45 @Override
46 public Collection<ExecuteResult> execute(final Collection<RawSQLExecutionUnit> inputs, final boolean isTrunkThread, final String processId) {
47 Collection<ExecuteResult> result = callbacks.iterator().next().execute(inputs, isTrunkThread);
48 for (RawSQLExecutionUnit each : inputs) {
49 processEngine.completeSQLUnitExecution(each, processId);
50 }
51 return result;
52 }
53 }