1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.yaml.config.swapper.mode;
19
20 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
21 import org.apache.shardingsphere.infra.config.mode.PersistRepositoryConfiguration;
22 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
23 import org.apache.shardingsphere.infra.util.yaml.swapper.YamlConfigurationSwapper;
24 import org.apache.shardingsphere.infra.yaml.config.pojo.mode.YamlModeConfiguration;
25
26
27
28
29 @SuppressWarnings("unchecked")
30 public final class YamlModeConfigurationSwapper implements YamlConfigurationSwapper<YamlModeConfiguration, ModeConfiguration> {
31
32 @Override
33 public YamlModeConfiguration swapToYamlConfiguration(final ModeConfiguration data) {
34 YamlModeConfiguration result = new YamlModeConfiguration();
35 result.setType(data.getType());
36 if (null != data.getRepository()) {
37 YamlPersistRepositoryConfigurationSwapper<PersistRepositoryConfiguration> swapper = TypedSPILoader.getService(
38 YamlPersistRepositoryConfigurationSwapper.class, data.getType());
39 result.setRepository(swapper.swapToYamlConfiguration(data.getRepository()));
40 }
41 return result;
42 }
43
44 @Override
45 public ModeConfiguration swapToObject(final YamlModeConfiguration yamlConfig) {
46 if (null == yamlConfig.getRepository()) {
47 return new ModeConfiguration(yamlConfig.getType(), null);
48 }
49 YamlPersistRepositoryConfigurationSwapper<PersistRepositoryConfiguration> swapper = TypedSPILoader.getService(
50 YamlPersistRepositoryConfigurationSwapper.class, yamlConfig.getType());
51 return new ModeConfiguration(yamlConfig.getType(), swapper.swapToObject(yamlConfig.getRepository()));
52 }
53 }