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(YamlPersistRepositoryConfigurationSwapper.class, data.getType());
38 result.setRepository(swapper.swapToYamlConfiguration(data.getRepository()));
39 }
40 return result;
41 }
42
43 @Override
44 public ModeConfiguration swapToObject(final YamlModeConfiguration yamlConfig) {
45 if (null == yamlConfig.getRepository()) {
46 return new ModeConfiguration(yamlConfig.getType(), null);
47 }
48 YamlPersistRepositoryConfigurationSwapper<PersistRepositoryConfiguration> swapper = TypedSPILoader.getService(YamlPersistRepositoryConfigurationSwapper.class, yamlConfig.getType());
49 return new ModeConfiguration(yamlConfig.getType(), swapper.swapToObject(yamlConfig.getRepository()));
50 }
51 }