1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.shadow.route;
19
20 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
21 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
22 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
23 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
24 import org.apache.shardingsphere.infra.route.SQLRouter;
25 import org.apache.shardingsphere.infra.route.context.RouteContext;
26 import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
27 import org.apache.shardingsphere.infra.session.query.QueryContext;
28 import org.apache.shardingsphere.shadow.constant.ShadowOrder;
29 import org.apache.shardingsphere.shadow.route.engine.ShadowRouteEngineFactory;
30 import org.apache.shardingsphere.shadow.rule.ShadowRule;
31
32
33
34
35 @HighFrequencyInvocation
36 public final class ShadowSQLRouter implements SQLRouter<ShadowRule> {
37
38 @Override
39 public RouteContext createRouteContext(final QueryContext queryContext, final RuleMetaData globalRuleMetaData, final ShardingSphereDatabase database,
40 final ShadowRule rule, final ConfigurationProperties props, final ConnectionContext connectionContext) {
41
42 return new RouteContext();
43 }
44
45 @Override
46 public void decorateRouteContext(final RouteContext routeContext, final QueryContext queryContext, final ShardingSphereDatabase database,
47 final ShadowRule rule, final ConfigurationProperties props, final ConnectionContext connectionContext) {
48 ShadowRouteEngineFactory.newInstance(queryContext).route(routeContext, rule);
49 }
50
51 @Override
52 public int getOrder() {
53 return ShadowOrder.ORDER;
54 }
55
56 @Override
57 public Class<ShadowRule> getTypeClass() {
58 return ShadowRule.class;
59 }
60 }