Skip to content

Commit

Permalink
for #720: refactor sharding-jdbc-core-spring-namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Apr 13, 2018
1 parent 3e3868e commit 3be8962
Show file tree
Hide file tree
Showing 17 changed files with 75 additions and 88 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ public final class ShardingStrategyBeanDefinitionParserTag {

public static final String SHARDING_COLUMNS_ATTRIBUTE = "sharding-columns";

public static final String ALGORITHM_CLASS_ATTRIBUTE = "algorithm-class";
public static final String ALGORITHM_REF_ATTRIBUTE = "algorithm-ref";

public static final String PRECISE_ALGORITHM_CLASS_ATTRIBUTE = "precise-algorithm-class";
public static final String PRECISE_ALGORITHM_REF_ATTRIBUTE = "precise-algorithm-ref";

public static final String RANGE_ALGORITHM_CLASS_ATTRIBUTE = "range-algorithm-class";
public static final String RANGE_ALGORITHM_REF_ATTRIBUTE = "range-algorithm-ref";

public static final String ALGORITHM_EXPRESSION_ATTRIBUTE = "algorithm-expression";
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,12 @@
package io.shardingjdbc.spring.namespace.parser;

import com.google.common.base.Strings;
import io.shardingjdbc.core.api.algorithm.sharding.complex.ComplexKeysShardingAlgorithm;
import io.shardingjdbc.core.api.algorithm.sharding.hint.HintShardingAlgorithm;
import io.shardingjdbc.core.api.algorithm.sharding.standard.PreciseShardingAlgorithm;
import io.shardingjdbc.core.api.algorithm.sharding.standard.RangeShardingAlgorithm;
import io.shardingjdbc.core.api.config.strategy.ComplexShardingStrategyConfiguration;
import io.shardingjdbc.core.api.config.strategy.HintShardingStrategyConfiguration;
import io.shardingjdbc.core.api.config.strategy.InlineShardingStrategyConfiguration;
import io.shardingjdbc.core.api.config.strategy.NoneShardingStrategyConfiguration;
import io.shardingjdbc.core.api.config.strategy.StandardShardingStrategyConfiguration;
import io.shardingjdbc.core.exception.ShardingJdbcException;
import io.shardingjdbc.core.routing.strategy.ShardingAlgorithmFactory;
import io.shardingjdbc.spring.namespace.constants.ShardingStrategyBeanDefinitionParserTag;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
Expand Down Expand Up @@ -65,20 +60,17 @@ static AbstractBeanDefinition getBeanDefinitionByElement(final Element element)
private static AbstractBeanDefinition getStandardShardingStrategyConfigBeanDefinition(final Element element) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(StandardShardingStrategyConfiguration.class);
factory.addConstructorArgValue(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.SHARDING_COLUMN_ATTRIBUTE));
factory.addConstructorArgValue(
ShardingAlgorithmFactory.newInstance(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.PRECISE_ALGORITHM_CLASS_ATTRIBUTE), PreciseShardingAlgorithm.class));
if (!Strings.isNullOrEmpty(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.RANGE_ALGORITHM_CLASS_ATTRIBUTE))) {
factory.addConstructorArgValue(
ShardingAlgorithmFactory.newInstance(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.RANGE_ALGORITHM_CLASS_ATTRIBUTE), RangeShardingAlgorithm.class));
factory.addConstructorArgReference(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.PRECISE_ALGORITHM_REF_ATTRIBUTE));
if (!Strings.isNullOrEmpty(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.RANGE_ALGORITHM_REF_ATTRIBUTE))) {
factory.addConstructorArgReference(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.RANGE_ALGORITHM_REF_ATTRIBUTE));
}
return factory.getBeanDefinition();
}

private static AbstractBeanDefinition getComplexShardingStrategyConfigBeanDefinition(final Element element) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(ComplexShardingStrategyConfiguration.class);
factory.addConstructorArgValue(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.SHARDING_COLUMNS_ATTRIBUTE));
factory.addConstructorArgValue(
ShardingAlgorithmFactory.newInstance(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.ALGORITHM_CLASS_ATTRIBUTE), ComplexKeysShardingAlgorithm.class));
factory.addConstructorArgReference(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.ALGORITHM_REF_ATTRIBUTE));
return factory.getBeanDefinition();
}

Expand All @@ -91,8 +83,7 @@ private static AbstractBeanDefinition getInlineShardingStrategyConfigBeanDefinit

private static AbstractBeanDefinition getHintShardingStrategyConfigBeanDefinition(final Element element) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(HintShardingStrategyConfiguration.class);
factory.addConstructorArgValue(
ShardingAlgorithmFactory.newInstance(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.ALGORITHM_CLASS_ATTRIBUTE), HintShardingAlgorithm.class));
factory.addConstructorArgReference(element.getAttribute(ShardingStrategyBeanDefinitionParserTag.ALGORITHM_REF_ATTRIBUTE));
return factory.getBeanDefinition();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,15 @@
<xsd:complexType>
<xsd:attribute name="id" type="xsd:string" use="required" />
<xsd:attribute name="sharding-column" type="xsd:string" use="required" />
<xsd:attribute name="precise-algorithm-class" type="xsd:string" use="required" />
<xsd:attribute name="range-algorithm-class" type="xsd:string" />
<xsd:attribute name="precise-algorithm-ref" type="xsd:string" use="required" />
<xsd:attribute name="range-algorithm-ref" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="complex-strategy">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:string" use="required" />
<xsd:attribute name="sharding-columns" type="xsd:string" use="required" />
<xsd:attribute name="algorithm-class" type="xsd:string" use="required" />
<xsd:attribute name="algorithm-ref" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="inline-strategy">
Expand All @@ -83,7 +83,7 @@
<xsd:element name="hint-strategy">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:string" use="required" />
<xsd:attribute name="algorithm-class" type="xsd:string" use="required" />
<xsd:attribute name="algorithm-ref" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="none-strategy">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,20 @@
">
<import resource="datasource/dataSource.xml" />

<sharding:standard-strategy id="standardStrategy" sharding-column="user_id"
precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />

<sharding:standard-strategy id="rangeStandardStrategy" sharding-column="order_id"
precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm"
range-algorithm-class="io.shardingjdbc.spring.algorithm.RangeModuloTableShardingAlgorithm"/>

<sharding:complex-strategy id="complexStrategy" sharding-columns="order_id,user_id"
algorithm-class="io.shardingjdbc.spring.algorithm.DefaultComplexKeysShardingAlgorithm"/>
<bean id="preciseModuloDatabaseShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="rangeModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.RangeModuloTableShardingAlgorithm" />
<bean id="defaultComplexKeysShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.DefaultComplexKeysShardingAlgorithm" />
<bean id="defaultHintShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.DefaultHintShardingAlgorithm" />
<bean id="keyGenerator" class="io.shardingjdbc.spring.fixture.IncrementKeyGenerator" />

<sharding:standard-strategy id="standardStrategy" sharding-column="user_id" precise-algorithm-ref="preciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="rangeStandardStrategy" sharding-column="order_id" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" range-algorithm-ref="rangeModuloTableShardingAlgorithm" />
<sharding:complex-strategy id="complexStrategy" sharding-columns="order_id,user_id" algorithm-ref="defaultComplexKeysShardingAlgorithm" />
<sharding:inline-strategy id="inlineStrategy" sharding-column="order_id" algorithm-expression="t_order_${order_id % 4}" />

<sharding:hint-strategy id="hintStrategy" algorithm-class="io.shardingjdbc.spring.algorithm.DefaultHintShardingAlgorithm" />

<sharding:hint-strategy id="hintStrategy" algorithm-ref="defaultHintShardingAlgorithm" />
<sharding:none-strategy id="noneStrategy" />

<bean id="keyGenerator" class="io.shardingjdbc.spring.fixture.IncrementKeyGenerator" />

<sharding:data-source id="simpleShardingDataSource">
<sharding:sharding-rule data-source-names="dbtbl_0">
<sharding:table-rules>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
">
<import resource="datasource/dataSource.xml" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="preciseModuloDatabaseShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-ref="preciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" />

<sharding:data-source id="shardingDataSource">
<sharding:sharding-rule data-source-names="dbtbl_0,dbtbl_1" default-data-source-name="dbtbl_0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
">
<import resource="datasource/dataSource.xml" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="preciseModuloDatabaseShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-ref="preciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" />

<sharding:data-source id="shardingDataSource">
<sharding:sharding-rule data-source-names="dbtbl_0,dbtbl_1" default-data-source-name="dbtbl_0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
">
<import resource="datasource/dataSource.xml" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="preciseModuloDatabaseShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-ref="preciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" />

<sharding:data-source id="shardingDatasource">
<sharding:sharding-rule data-source-names="dbtbl_0,dbtbl_1" default-data-source-name="dbtbl_0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
">
<import resource="datasource/dataSource.xml" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="preciseModuloDatabaseShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-ref="preciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" />

<sharding:data-source id="shardingDataSource">
<sharding:sharding-rule data-source-names="dbtbl_0,dbtbl_1" default-data-source-name="dbtbl_0" default-database-strategy-ref="databaseStrategy" default-table-strategy-ref="tableStrategy">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
">
<import resource="datasource/dataSource.xml" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="preciseModuloDatabaseShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-ref="preciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" />

<bean id="incrementKeyGenerator" class="io.shardingjdbc.spring.fixture.IncrementKeyGenerator" />
<bean id="decrementKeyGenerator" class="io.shardingjdbc.spring.fixture.DecrementKeyGenerator" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
">
<import resource="datasource/dataSource.xml" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />
<bean id="preciseModuloDatabaseShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloDatabaseShardingAlgorithm" />
<bean id="preciseModuloTableShardingAlgorithm" class="io.shardingjdbc.spring.algorithm.PreciseModuloTableShardingAlgorithm" />

<sharding:standard-strategy id="databaseStrategy" sharding-column="user_id" precise-algorithm-ref="preciseModuloDatabaseShardingAlgorithm" />
<sharding:standard-strategy id="tableStrategy" sharding-column="order_id" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" />

<sharding:data-source id="shardingDatasource">
<sharding:sharding-rule data-source-names="dbtbl_0,dbtbl_1" default-data-source-name="dbtbl_0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ public final class ShardingStrategyBeanDefinitionParserTag {

public static final String SHARDING_COLUMNS_ATTRIBUTE = "sharding-columns";

public static final String ALGORITHM_CLASS_ATTRIBUTE = "algorithm-class";
public static final String ALGORITHM_REF_ATTRIBUTE = "algorithm-ref";

public static final String PRECISE_ALGORITHM_CLASS_ATTRIBUTE = "precise-algorithm-class";
public static final String PRECISE_ALGORITHM_REF_ATTRIBUTE = "precise-algorithm-ref";

public static final String RANGE_ALGORITHM_CLASS_ATTRIBUTE = "range-algorithm-class";
public static final String RANGE_ALGORITHM_REF_ATTRIBUTE = "range-algorithm-ref";

public static final String ALGORITHM_EXPRESSION_ATTRIBUTE = "algorithm-expression";
}
Loading

0 comments on commit 3be8962

Please sign in to comment.