![JAR search and dependency download from the Maven repository](/logo.png)
net.hasor.cobble.setting.provider.yaml.YamlSettingsReader Maven / Gradle / Ivy
The newest version!
/*
*
* * Copyright 2008-2016 the original author or authors.
* *
* * Licensed 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 net.hasor.cobble.setting.provider.yaml;
import net.hasor.cobble.setting.SettingNode;
import net.hasor.cobble.setting.Settings;
import net.hasor.cobble.setting.data.TreeNode;
import net.hasor.cobble.setting.provider.SettingsReader;
import org.yaml.snakeyaml.Yaml;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* @version : 2021-02-01
* @author 赵永春 ([email protected])
*/
public class YamlSettingsReader implements SettingsReader {
@Override
public void readSetting(Reader reader, Settings readTo) throws IOException {
Object yamlConfig = new Yaml().load(reader);
loadYaml(readTo, yamlConfig);
}
protected void loadYaml(Settings readTo, Object yamlConfig) throws IOException {
if (!(yamlConfig instanceof Map)) {
throw new IOException("The first level of YAML must be Map.");
}
String namespace = Settings.DefaultNameSpace;
TreeNode parentNode = new TreeNode("", namespace);
TreeNode loadMap = loadMap((Map) yamlConfig);
copyTreeNode(loadMap, parentNode);
for (SettingNode node : parentNode.getSubNodes()) {
readTo.addSetting(node.getName(), node, namespace);
}
}
protected List loadList(List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy