Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
9df8a1dc
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
9df8a1dc
编写于
6月 07, 2020
作者:
J
Juan Pan(Trista)
提交者:
GitHub
6月 07, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Create ShardingAutoTableRuleConfiguration (#5939)
* Create ShardingAutoTableRuleConfiguration * check style
上级
91a03307
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
246 addition
and
1 deletion
+246
-1
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/ShardingAutoTableRuleConfiguration.java
...arding/api/config/ShardingAutoTableRuleConfiguration.java
+51
-0
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/ShardingRuleConfiguration.java
...sphere/sharding/api/config/ShardingRuleConfiguration.java
+3
-1
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/yaml/config/YamlShardingAutoTableRuleConfiguration.java
...g/yaml/config/YamlShardingAutoTableRuleConfiguration.java
+38
-0
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/ShardingAutoTableRuleConfigurationYamlSwapper.java
...wapper/ShardingAutoTableRuleConfigurationYamlSwapper.java
+60
-0
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/ShardingAutoTableRuleConfigurationYamlSwapperTest.java
...er/ShardingAutoTableRuleConfigurationYamlSwapperTest.java
+94
-0
未找到文件。
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/ShardingAutoTableRuleConfiguration.java
0 → 100644
浏览文件 @
9df8a1dc
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.shardingsphere.sharding.api.config
;
import
com.google.common.base.Preconditions
;
import
com.google.common.base.Strings
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.apache.shardingsphere.sharding.api.config.strategy.ShardingStrategyConfiguration
;
/**
* Sharding auto table rule configuration.
*
*/
@Getter
@Setter
public
class
ShardingAutoTableRuleConfiguration
{
private
final
String
logicTable
;
private
final
String
actualDataSources
;
private
ShardingStrategyConfiguration
shardingStrategy
;
private
KeyGeneratorConfiguration
keyGenerator
;
public
ShardingAutoTableRuleConfiguration
(
final
String
logicTable
)
{
this
(
logicTable
,
null
);
}
public
ShardingAutoTableRuleConfiguration
(
final
String
logicTable
,
final
String
actualDataSources
)
{
Preconditions
.
checkArgument
(!
Strings
.
isNullOrEmpty
(
logicTable
),
"LogicTable is required."
);
this
.
logicTable
=
logicTable
;
this
.
actualDataSources
=
actualDataSources
;
}
}
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-api/src/main/java/org/apache/shardingsphere/sharding/api/config/ShardingRuleConfiguration.java
浏览文件 @
9df8a1dc
...
...
@@ -33,7 +33,9 @@ import java.util.LinkedList;
public
final
class
ShardingRuleConfiguration
implements
RuleConfiguration
{
private
Collection
<
ShardingTableRuleConfiguration
>
tables
=
new
LinkedList
<>();
private
Collection
<
ShardingAutoTableRuleConfiguration
>
autoTables
=
new
LinkedList
<>();
private
Collection
<
String
>
bindingTableGroups
=
new
LinkedList
<>();
private
Collection
<
String
>
broadcastTables
=
new
LinkedList
<>();
...
...
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/yaml/config/YamlShardingAutoTableRuleConfiguration.java
0 → 100644
浏览文件 @
9df8a1dc
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.shardingsphere.sharding.yaml.config
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.apache.shardingsphere.infra.yaml.config.YamlConfiguration
;
/**
* Sharding auto table rule configuration for YAML.
*/
@Getter
@Setter
public
final
class
YamlShardingAutoTableRuleConfiguration
implements
YamlConfiguration
{
private
String
logicTable
;
private
String
actualDataSources
;
private
YamlShardingStrategyConfiguration
shardingStrategy
;
private
YamlKeyGeneratorConfiguration
keyGenerator
;
}
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/ShardingAutoTableRuleConfigurationYamlSwapper.java
0 → 100644
浏览文件 @
9df8a1dc
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.shardingsphere.sharding.yaml.swapper
;
import
com.google.common.base.Preconditions
;
import
org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper
;
import
org.apache.shardingsphere.sharding.api.config.ShardingAutoTableRuleConfiguration
;
import
org.apache.shardingsphere.sharding.yaml.config.YamlShardingAutoTableRuleConfiguration
;
/**
* Sharding auto table rule configuration YAML swapper.
*/
public
final
class
ShardingAutoTableRuleConfigurationYamlSwapper
implements
YamlSwapper
<
YamlShardingAutoTableRuleConfiguration
,
ShardingAutoTableRuleConfiguration
>
{
private
final
ShardingStrategyConfigurationYamlSwapper
shardingStrategyConfigurationYamlSwapper
=
new
ShardingStrategyConfigurationYamlSwapper
();
private
final
KeyGeneratorConfigurationYamlSwapper
keyGeneratorConfigurationYamlSwapper
=
new
KeyGeneratorConfigurationYamlSwapper
();
@Override
public
YamlShardingAutoTableRuleConfiguration
swap
(
final
ShardingAutoTableRuleConfiguration
data
)
{
YamlShardingAutoTableRuleConfiguration
result
=
new
YamlShardingAutoTableRuleConfiguration
();
result
.
setLogicTable
(
data
.
getLogicTable
());
result
.
setActualDataSources
(
data
.
getActualDataSources
());
if
(
null
!=
data
.
getShardingStrategy
())
{
result
.
setShardingStrategy
(
shardingStrategyConfigurationYamlSwapper
.
swap
(
data
.
getShardingStrategy
()));
}
if
(
null
!=
data
.
getKeyGenerator
())
{
result
.
setKeyGenerator
(
keyGeneratorConfigurationYamlSwapper
.
swap
(
data
.
getKeyGenerator
()));
}
return
result
;
}
@Override
public
ShardingAutoTableRuleConfiguration
swap
(
final
YamlShardingAutoTableRuleConfiguration
yamlConfiguration
)
{
Preconditions
.
checkNotNull
(
yamlConfiguration
.
getLogicTable
(),
"Logic table cannot be null."
);
ShardingAutoTableRuleConfiguration
result
=
new
ShardingAutoTableRuleConfiguration
(
yamlConfiguration
.
getLogicTable
(),
yamlConfiguration
.
getActualDataSources
());
if
(
null
!=
yamlConfiguration
.
getShardingStrategy
())
{
result
.
setShardingStrategy
(
shardingStrategyConfigurationYamlSwapper
.
swap
(
yamlConfiguration
.
getShardingStrategy
()));
}
if
(
null
!=
yamlConfiguration
.
getKeyGenerator
())
{
result
.
setKeyGenerator
(
keyGeneratorConfigurationYamlSwapper
.
swap
(
yamlConfiguration
.
getKeyGenerator
()));
}
return
result
;
}
}
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/ShardingAutoTableRuleConfigurationYamlSwapperTest.java
0 → 100644
浏览文件 @
9df8a1dc
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.shardingsphere.sharding.yaml.swapper
;
import
org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper
;
import
org.apache.shardingsphere.sharding.api.config.KeyGeneratorConfiguration
;
import
org.apache.shardingsphere.sharding.api.config.ShardingAutoTableRuleConfiguration
;
import
org.apache.shardingsphere.sharding.api.config.strategy.ShardingStrategyConfiguration
;
import
org.apache.shardingsphere.sharding.api.config.strategy.StandardShardingStrategyConfiguration
;
import
org.apache.shardingsphere.sharding.yaml.config.YamlKeyGeneratorConfiguration
;
import
org.apache.shardingsphere.sharding.yaml.config.YamlShardingAutoTableRuleConfiguration
;
import
org.apache.shardingsphere.sharding.yaml.config.YamlShardingStrategyConfiguration
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.ArgumentMatchers
;
import
org.mockito.Mock
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
java.lang.reflect.Field
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertNull
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
when
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
final
class
ShardingAutoTableRuleConfigurationYamlSwapperTest
{
@Mock
private
ShardingStrategyConfigurationYamlSwapper
shardingStrategyConfigurationYamlSwapper
;
@Mock
private
KeyGeneratorConfigurationYamlSwapper
keyGeneratorConfigurationYamlSwapper
;
private
final
ShardingAutoTableRuleConfigurationYamlSwapper
tableRuleConfigurationYamlSwapper
=
new
ShardingAutoTableRuleConfigurationYamlSwapper
();
@Before
public
void
setUp
()
throws
ReflectiveOperationException
{
setSwapper
(
"shardingStrategyConfigurationYamlSwapper"
,
shardingStrategyConfigurationYamlSwapper
);
when
(
shardingStrategyConfigurationYamlSwapper
.
swap
(
ArgumentMatchers
.<
ShardingStrategyConfiguration
>
any
())).
thenReturn
(
mock
(
YamlShardingStrategyConfiguration
.
class
));
setSwapper
(
"keyGeneratorConfigurationYamlSwapper"
,
keyGeneratorConfigurationYamlSwapper
);
when
(
keyGeneratorConfigurationYamlSwapper
.
swap
(
ArgumentMatchers
.<
KeyGeneratorConfiguration
>
any
())).
thenReturn
(
mock
(
YamlKeyGeneratorConfiguration
.
class
));
}
private
void
setSwapper
(
final
String
swapperFieldName
,
final
YamlSwapper
swapperFieldValue
)
throws
ReflectiveOperationException
{
Field
field
=
ShardingAutoTableRuleConfigurationYamlSwapper
.
class
.
getDeclaredField
(
swapperFieldName
);
field
.
setAccessible
(
true
);
field
.
set
(
tableRuleConfigurationYamlSwapper
,
swapperFieldValue
);
}
@Test
public
void
assertSwapToYamlWithMinProperties
()
{
YamlShardingAutoTableRuleConfiguration
actual
=
tableRuleConfigurationYamlSwapper
.
swap
(
new
ShardingAutoTableRuleConfiguration
(
"tbl"
,
"ds0,ds1"
));
assertThat
(
actual
.
getLogicTable
(),
is
(
"tbl"
));
assertThat
(
actual
.
getActualDataSources
(),
is
(
"ds0,ds1"
));
assertNull
(
actual
.
getShardingStrategy
());
assertNull
(
actual
.
getKeyGenerator
());
}
@Test
public
void
assertSwapToYamlWithMaxProperties
()
{
ShardingAutoTableRuleConfiguration
shardingTableRuleConfiguration
=
new
ShardingAutoTableRuleConfiguration
(
"tbl"
,
"ds0,ds1"
);
shardingTableRuleConfiguration
.
setShardingStrategy
(
mock
(
StandardShardingStrategyConfiguration
.
class
));
shardingTableRuleConfiguration
.
setKeyGenerator
(
mock
(
KeyGeneratorConfiguration
.
class
));
YamlShardingAutoTableRuleConfiguration
actual
=
tableRuleConfigurationYamlSwapper
.
swap
(
shardingTableRuleConfiguration
);
assertThat
(
actual
.
getLogicTable
(),
is
(
"tbl"
));
assertThat
(
actual
.
getActualDataSources
(),
is
(
"ds0,ds1"
));
assertNotNull
(
actual
.
getShardingStrategy
());
assertNotNull
(
actual
.
getKeyGenerator
());
}
@Test
(
expected
=
NullPointerException
.
class
)
public
void
assertSwapToObjectWithoutLogicTable
()
{
new
ShardingAutoTableRuleConfigurationYamlSwapper
().
swap
(
new
YamlShardingAutoTableRuleConfiguration
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录