Skip to content

Commit 848bce9

Browse files
authored
Merge pull request #5 from shardingjdbc/dev
合并最新的代码
2 parents 53bae4a + b241cad commit 848bce9

File tree

208 files changed

+3426
-2000
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

208 files changed

+3426
-2000
lines changed

pom.xml

+32
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<module>sharding-jdbc-transaction-parent</module>
1414
<module>sharding-jdbc-orchestration</module>
1515
<module>sharding-jdbc-orchestration-spring</module>
16+
<module>sharding-opentracing</module>
1617
<module>sharding-proxy</module>
1718
<module>sharding-sql-test</module>
1819
</modules>
@@ -50,6 +51,8 @@
5051
<protobuf.version>3.4.0</protobuf.version>
5152
<guava-retrying.version>2.0.0</guava-retrying.version>
5253
<quartz.version>2.3.0</quartz.version>
54+
<opentracing.version>0.30.0</opentracing.version>
55+
<powermock.version>1.7.1</powermock.version>
5356

5457
<maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
5558
<maven-assembly-plugin.version>3.1.0</maven-assembly-plugin.version>
@@ -74,6 +77,7 @@
7477
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
7578
<protobuf-maven-plugin.version>0.5.0</protobuf-maven-plugin.version>
7679
<os-maven-plugin.version>1.5.0.Final</os-maven-plugin.version>
80+
<coveralls-maven-plugin.version>4.1.0</coveralls-maven-plugin.version>
7781

7882
<javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
7983
</properties>
@@ -96,6 +100,11 @@
96100
<artifactId>slf4j-api</artifactId>
97101
<version>${slf4j.version}</version>
98102
</dependency>
103+
<dependency>
104+
<groupId>org.slf4j</groupId>
105+
<artifactId>jcl-over-slf4j</artifactId>
106+
<version>${slf4j.version}</version>
107+
</dependency>
99108
<dependency>
100109
<groupId>org.codehaus.groovy</groupId>
101110
<artifactId>groovy</artifactId>
@@ -158,6 +167,11 @@
158167
<artifactId>guava-retrying</artifactId>
159168
<version>${guava-retrying.version}</version>
160169
</dependency>
170+
<dependency>
171+
<groupId>io.opentracing</groupId>
172+
<artifactId>opentracing-util</artifactId>
173+
<version>${opentracing.version}</version>
174+
</dependency>
161175
<dependency>
162176
<groupId>org.apache.curator</groupId>
163177
<artifactId>curator-test</artifactId>
@@ -295,6 +309,24 @@
295309
<version>${spring-boot.version}</version>
296310
<scope>test</scope>
297311
</dependency>
312+
<dependency>
313+
<groupId>org.powermock</groupId>
314+
<artifactId>powermock-module-junit4</artifactId>
315+
<version>${powermock.version}</version>
316+
<scope>test</scope>
317+
</dependency>
318+
<dependency>
319+
<groupId>org.powermock</groupId>
320+
<artifactId>powermock-api-mockito2</artifactId>
321+
<version>${powermock.version}</version>
322+
<scope>test</scope>
323+
</dependency>
324+
<dependency>
325+
<groupId>io.opentracing</groupId>
326+
<artifactId>opentracing-mock</artifactId>
327+
<version>${opentracing.version}</version>
328+
<scope>test</scope>
329+
</dependency>
298330
</dependencies>
299331
</dependencyManagement>
300332

sharding-core/src/main/java/io/shardingjdbc/core/api/config/MasterSlaveRuleConfiguration.java

+9-56
Original file line numberDiff line numberDiff line change
@@ -17,75 +17,28 @@
1717

1818
package io.shardingjdbc.core.api.config;
1919

20-
import com.google.common.base.Preconditions;
21-
import com.google.common.base.Strings;
2220
import io.shardingjdbc.core.api.algorithm.masterslave.MasterSlaveLoadBalanceAlgorithm;
23-
import io.shardingjdbc.core.api.algorithm.masterslave.MasterSlaveLoadBalanceAlgorithmType;
24-
import io.shardingjdbc.core.exception.ShardingJdbcException;
25-
import io.shardingjdbc.core.rule.MasterSlaveRule;
21+
import lombok.AllArgsConstructor;
2622
import lombok.Getter;
27-
import lombok.Setter;
23+
import lombok.RequiredArgsConstructor;
2824

2925
import java.util.Collection;
30-
import java.util.LinkedList;
3126

3227
/**
3328
* Master-slave rule configuration.
3429
*
3530
* @author zhangliang
3631
*/
32+
@AllArgsConstructor
33+
@RequiredArgsConstructor
3734
@Getter
38-
@Setter
39-
public class MasterSlaveRuleConfiguration {
35+
public final class MasterSlaveRuleConfiguration {
4036

41-
private String name;
37+
private final String name;
4238

43-
private String masterDataSourceName;
39+
private final String masterDataSourceName;
4440

45-
private Collection<String> slaveDataSourceNames = new LinkedList<>();
41+
private final Collection<String> slaveDataSourceNames;
4642

47-
private MasterSlaveLoadBalanceAlgorithmType loadBalanceAlgorithmType;
48-
49-
private String loadBalanceAlgorithmClassName;
50-
51-
/**
52-
* Build master-slave rule.
53-
*
54-
* @return sharding rule
55-
*/
56-
public MasterSlaveRule build() {
57-
Preconditions.checkNotNull(name, "name cannot be null.");
58-
Preconditions.checkNotNull(masterDataSourceName, "masterDataSourceName cannot be null.");
59-
Preconditions.checkNotNull(slaveDataSourceNames, "slaveDataSourceNames cannot be null.");
60-
Preconditions.checkArgument(!slaveDataSourceNames.isEmpty(), "slaveDataSourceNames cannot be empty.");
61-
return new MasterSlaveRule(name, masterDataSourceName, slaveDataSourceNames, getLoadBalanceAlgorithm());
62-
}
63-
64-
private MasterSlaveLoadBalanceAlgorithm getLoadBalanceAlgorithm() {
65-
MasterSlaveLoadBalanceAlgorithm result;
66-
if (null != loadBalanceAlgorithmType) {
67-
result = loadBalanceAlgorithmType.getAlgorithm();
68-
} else {
69-
result = Strings.isNullOrEmpty(loadBalanceAlgorithmClassName) ? null : newInstance(loadBalanceAlgorithmClassName);
70-
}
71-
return result;
72-
}
73-
74-
/**
75-
* New instance.
76-
*
77-
* @param masterSlaveLoadBalanceAlgorithmClassName master-slave load balance algorithm class name
78-
* @return master-slave load balance algorithm
79-
*/
80-
public MasterSlaveLoadBalanceAlgorithm newInstance(final String masterSlaveLoadBalanceAlgorithmClassName) {
81-
try {
82-
Class<?> result = Class.forName(masterSlaveLoadBalanceAlgorithmClassName);
83-
if (!MasterSlaveLoadBalanceAlgorithm.class.isAssignableFrom(result)) {
84-
throw new ShardingJdbcException("Class %s should be implement %s", masterSlaveLoadBalanceAlgorithmClassName, MasterSlaveLoadBalanceAlgorithm.class.getName());
85-
}
86-
return (MasterSlaveLoadBalanceAlgorithm) result.newInstance();
87-
} catch (final ReflectiveOperationException ex) {
88-
throw new ShardingJdbcException("Class %s should have public privilege and no argument constructor", masterSlaveLoadBalanceAlgorithmClassName);
89-
}
90-
}
43+
private MasterSlaveLoadBalanceAlgorithm loadBalanceAlgorithm;
9144
}

sharding-core/src/main/java/io/shardingjdbc/core/api/config/ShardingRuleConfiguration.java

+2-30
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,13 @@
1717

1818
package io.shardingjdbc.core.api.config;
1919

20-
import com.google.common.base.Preconditions;
2120
import io.shardingjdbc.core.api.config.strategy.ShardingStrategyConfiguration;
22-
import io.shardingjdbc.core.keygen.DefaultKeyGenerator;
2321
import io.shardingjdbc.core.keygen.KeyGenerator;
24-
import io.shardingjdbc.core.keygen.KeyGeneratorFactory;
25-
import io.shardingjdbc.core.routing.strategy.ShardingStrategy;
26-
import io.shardingjdbc.core.rule.ShardingRule;
27-
import io.shardingjdbc.core.rule.TableRule;
2822
import lombok.Getter;
2923
import lombok.Setter;
3024

3125
import java.util.Collection;
32-
import java.util.LinkedHashSet;
3326
import java.util.LinkedList;
34-
import java.util.Set;
3527

3628
/**
3729
* Sharding rule configuration.
@@ -40,7 +32,7 @@
4032
*/
4133
@Getter
4234
@Setter
43-
public class ShardingRuleConfiguration {
35+
public final class ShardingRuleConfiguration {
4436

4537
private String defaultDataSourceName;
4638

@@ -52,27 +44,7 @@ public class ShardingRuleConfiguration {
5244

5345
private ShardingStrategyConfiguration defaultTableShardingStrategyConfig;
5446

55-
private String defaultKeyGeneratorClass;
47+
private KeyGenerator defaultKeyGenerator;
5648

5749
private Collection<MasterSlaveRuleConfiguration> masterSlaveRuleConfigs = new LinkedList<>();
58-
59-
/**
60-
* Build sharding rule.
61-
*
62-
* @param dataSourceNames data source names
63-
* @return sharding rule
64-
*/
65-
public ShardingRule build(final Collection<String> dataSourceNames) {
66-
Preconditions.checkNotNull(dataSourceNames, "dataSources cannot be null.");
67-
Preconditions.checkArgument(!dataSourceNames.isEmpty(), "dataSources cannot be null.");
68-
Set<String> dataSourceNameSet = new LinkedHashSet<>(dataSourceNames);
69-
Collection<TableRule> tableRules = new LinkedList<>();
70-
for (TableRuleConfiguration each : tableRuleConfigs) {
71-
tableRules.add(each.build(dataSourceNameSet));
72-
}
73-
ShardingStrategy defaultDatabaseShardingStrategy = null == defaultDatabaseShardingStrategyConfig ? null : defaultDatabaseShardingStrategyConfig.build();
74-
ShardingStrategy defaultTableShardingStrategy = null == defaultTableShardingStrategyConfig ? null : defaultTableShardingStrategyConfig.build();
75-
KeyGenerator keyGenerator = KeyGeneratorFactory.newInstance(null == defaultKeyGeneratorClass ? DefaultKeyGenerator.class.getName() : defaultKeyGeneratorClass);
76-
return new ShardingRule(dataSourceNameSet, defaultDataSourceName, tableRules, bindingTableGroups, defaultDatabaseShardingStrategy, defaultTableShardingStrategy, keyGenerator);
77-
}
7850
}

sharding-core/src/main/java/io/shardingjdbc/core/api/config/TableRuleConfiguration.java

+2-26
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,19 @@
1717

1818
package io.shardingjdbc.core.api.config;
1919

20-
import com.google.common.base.Preconditions;
21-
import com.google.common.base.Strings;
2220
import io.shardingjdbc.core.api.config.strategy.ShardingStrategyConfiguration;
2321
import io.shardingjdbc.core.keygen.KeyGenerator;
24-
import io.shardingjdbc.core.keygen.KeyGeneratorFactory;
25-
import io.shardingjdbc.core.routing.strategy.ShardingStrategy;
26-
import io.shardingjdbc.core.rule.TableRule;
27-
import io.shardingjdbc.core.util.InlineExpressionParser;
2822
import lombok.Getter;
2923
import lombok.Setter;
3024

31-
import java.util.Collection;
32-
import java.util.List;
33-
3425
/**
3526
* Table rule configuration.
3627
*
3728
* @author zhangiang
3829
*/
3930
@Getter
4031
@Setter
41-
public class TableRuleConfiguration {
32+
public final class TableRuleConfiguration {
4233

4334
private String logicTable;
4435

@@ -50,22 +41,7 @@ public class TableRuleConfiguration {
5041

5142
private String keyGeneratorColumnName;
5243

53-
private String keyGeneratorClass;
44+
private KeyGenerator keyGenerator;
5445

5546
private String logicIndex;
56-
57-
/**
58-
* Build table rule.
59-
*
60-
* @param dataSourceNames data source names
61-
* @return table rule
62-
*/
63-
public TableRule build(final Collection<String> dataSourceNames) {
64-
Preconditions.checkNotNull(logicTable, "Logic table cannot be null.");
65-
List<String> actualDataNodes = new InlineExpressionParser(this.actualDataNodes).evaluate();
66-
ShardingStrategy databaseShardingStrategy = null == databaseShardingStrategyConfig ? null : databaseShardingStrategyConfig.build();
67-
ShardingStrategy tableShardingStrategy = null == tableShardingStrategyConfig ? null : tableShardingStrategyConfig.build();
68-
KeyGenerator keyGenerator = !Strings.isNullOrEmpty(keyGeneratorColumnName) && !Strings.isNullOrEmpty(keyGeneratorClass) ? KeyGeneratorFactory.newInstance(keyGeneratorClass) : null;
69-
return new TableRule(logicTable, actualDataNodes, dataSourceNames, databaseShardingStrategy, tableShardingStrategy, keyGeneratorColumnName, keyGenerator, logicIndex);
70-
}
7147
}

sharding-core/src/main/java/io/shardingjdbc/core/api/config/strategy/ComplexShardingStrategyConfiguration.java

+1-13
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,7 @@
1717

1818
package io.shardingjdbc.core.api.config.strategy;
1919

20-
import com.google.common.base.Preconditions;
2120
import io.shardingjdbc.core.api.algorithm.sharding.complex.ComplexKeysShardingAlgorithm;
22-
import io.shardingjdbc.core.routing.strategy.ShardingAlgorithmFactory;
23-
import io.shardingjdbc.core.routing.strategy.ShardingStrategy;
24-
import io.shardingjdbc.core.routing.strategy.complex.ComplexShardingStrategy;
25-
import io.shardingjdbc.core.util.StringUtil;
2621
import lombok.Getter;
2722
import lombok.RequiredArgsConstructor;
2823

@@ -37,12 +32,5 @@ public final class ComplexShardingStrategyConfiguration implements ShardingStrat
3732

3833
private final String shardingColumns;
3934

40-
private final String algorithmClassName;
41-
42-
@Override
43-
public ShardingStrategy build() {
44-
Preconditions.checkNotNull(shardingColumns, "Sharding columns cannot be null.");
45-
Preconditions.checkNotNull(algorithmClassName, "Algorithm class cannot be null.");
46-
return new ComplexShardingStrategy(StringUtil.splitWithComma(shardingColumns), ShardingAlgorithmFactory.newInstance(algorithmClassName, ComplexKeysShardingAlgorithm.class));
47-
}
35+
private final ComplexKeysShardingAlgorithm shardingAlgorithm;
4836
}

sharding-core/src/main/java/io/shardingjdbc/core/api/config/strategy/HintShardingStrategyConfiguration.java

+1-11
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,7 @@
1717

1818
package io.shardingjdbc.core.api.config.strategy;
1919

20-
import com.google.common.base.Preconditions;
2120
import io.shardingjdbc.core.api.algorithm.sharding.hint.HintShardingAlgorithm;
22-
import io.shardingjdbc.core.routing.strategy.ShardingAlgorithmFactory;
23-
import io.shardingjdbc.core.routing.strategy.ShardingStrategy;
24-
import io.shardingjdbc.core.routing.strategy.hint.HintShardingStrategy;
2521
import lombok.Getter;
2622
import lombok.RequiredArgsConstructor;
2723

@@ -34,11 +30,5 @@
3430
@Getter
3531
public final class HintShardingStrategyConfiguration implements ShardingStrategyConfiguration {
3632

37-
private final String algorithmClassName;
38-
39-
@Override
40-
public ShardingStrategy build() {
41-
Preconditions.checkNotNull(algorithmClassName, "Algorithm class cannot be null.");
42-
return new HintShardingStrategy(ShardingAlgorithmFactory.newInstance(algorithmClassName, HintShardingAlgorithm.class));
43-
}
33+
private final HintShardingAlgorithm shardingAlgorithm;
4434
}

sharding-core/src/main/java/io/shardingjdbc/core/api/config/strategy/InlineShardingStrategyConfiguration.java

-10
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717

1818
package io.shardingjdbc.core.api.config.strategy;
1919

20-
import com.google.common.base.Preconditions;
21-
import io.shardingjdbc.core.routing.strategy.ShardingStrategy;
22-
import io.shardingjdbc.core.routing.strategy.inline.InlineShardingStrategy;
2320
import lombok.Getter;
2421
import lombok.RequiredArgsConstructor;
2522

@@ -35,11 +32,4 @@ public final class InlineShardingStrategyConfiguration implements ShardingStrate
3532
private final String shardingColumn;
3633

3734
private final String algorithmExpression;
38-
39-
@Override
40-
public ShardingStrategy build() {
41-
Preconditions.checkNotNull(shardingColumn, "Sharding column cannot be null.");
42-
Preconditions.checkNotNull(algorithmExpression, "Algorithm inline expression cannot be null.");
43-
return new InlineShardingStrategy(shardingColumn, algorithmExpression);
44-
}
4535
}

sharding-core/src/main/java/io/shardingjdbc/core/api/config/strategy/NoneShardingStrategyConfiguration.java

-8
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,10 @@
1717

1818
package io.shardingjdbc.core.api.config.strategy;
1919

20-
import io.shardingjdbc.core.routing.strategy.ShardingStrategy;
21-
import io.shardingjdbc.core.routing.strategy.none.NoneShardingStrategy;
22-
2320
/**
2421
* None sharding strategy configuration.
2522
*
2623
* @author zhangliang
2724
*/
2825
public final class NoneShardingStrategyConfiguration implements ShardingStrategyConfiguration {
29-
30-
@Override
31-
public ShardingStrategy build() {
32-
return new NoneShardingStrategy();
33-
}
3426
}

sharding-core/src/main/java/io/shardingjdbc/core/api/config/strategy/ShardingStrategyConfiguration.java

-9
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,10 @@
1717

1818
package io.shardingjdbc.core.api.config.strategy;
1919

20-
import io.shardingjdbc.core.routing.strategy.ShardingStrategy;
21-
2220
/**
2321
* Sharding strategy configuration.
2422
*
2523
* @author zhangliang
2624
*/
2725
public interface ShardingStrategyConfiguration {
28-
29-
/**
30-
* Build sharding strategy.
31-
*
32-
* @return sharding strategy
33-
*/
34-
ShardingStrategy build();
3526
}

0 commit comments

Comments
 (0)