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.sql.SQLException;
28 import java.util.Collection;
29
30
31
32
33 public final class RawSQLExecutorCallback implements ExecutorCallback<RawSQLExecutionUnit, ExecuteResult> {
34
35 @SuppressWarnings("rawtypes")
36 private final Collection<RawExecutorCallback> callbacks;
37
38 private final ProcessEngine processEngine = new ProcessEngine();
39
40 public RawSQLExecutorCallback() {
41 callbacks = ShardingSphereServiceLoader.getServiceInstances(RawExecutorCallback.class);
42 Preconditions.checkState(!callbacks.isEmpty(), "No raw executor callback implementation found.");
43 }
44
45 @SuppressWarnings("unchecked")
46 @Override
47 public Collection<ExecuteResult> execute(final Collection<RawSQLExecutionUnit> inputs, final boolean isTrunkThread, final String processId) throws SQLException {
48 Collection<ExecuteResult> result = callbacks.iterator().next().execute(inputs, isTrunkThread);
49 for (RawSQLExecutionUnit each : inputs) {
50 processEngine.completeSQLUnitExecution(each, processId);
51 }
52 return result;
53 }
54 }