use of com.hazelcast.internal.yaml.YamlNode in project hazelcast by hazelcast.
the class YamlClientConfigBuilder method parseAndBuildConfig.
private void parseAndBuildConfig(ClientConfig config) throws Exception {
YamlMapping yamlRootNode;
try {
yamlRootNode = ((YamlMapping) YamlLoader.load(in));
} catch (Exception ex) {
throw new InvalidConfigurationException("Invalid YAML configuration", ex);
}
YamlNode clientRoot = yamlRootNode.childAsMapping(ClientConfigSections.HAZELCAST_CLIENT.getName());
if (clientRoot == null) {
clientRoot = yamlRootNode;
}
YamlDomChecker.check(clientRoot);
Node w3cRootNode = asW3cNode(clientRoot);
replaceVariables(w3cRootNode);
importDocuments(clientRoot);
if (shouldValidateTheSchema()) {
new YamlConfigSchemaValidator().validate((YamlMapping) clientRoot.parent());
}
new YamlClientDomConfigProcessor(true, config).buildConfig(w3cRootNode);
}
use of com.hazelcast.internal.yaml.YamlNode in project hazelcast by hazelcast.
the class YamlConfigBuilder method parseAndBuildConfig.
private void parseAndBuildConfig(Config config) throws Exception {
YamlMapping yamlRootNode;
try {
yamlRootNode = ((YamlMapping) YamlLoader.load(in));
} catch (Exception ex) {
throw new InvalidConfigurationException("Invalid YAML configuration", ex);
}
YamlNode imdgRoot = yamlRootNode.childAsMapping(ConfigSections.HAZELCAST.getName());
if (imdgRoot == null) {
imdgRoot = yamlRootNode;
}
YamlDomChecker.check(imdgRoot);
Node w3cRootNode = asW3cNode(imdgRoot);
replaceVariables(w3cRootNode);
importDocuments(imdgRoot);
if (shouldValidateTheSchema()) {
new YamlConfigSchemaValidator().validate((YamlMapping) imdgRoot.parent());
}
new YamlMemberDomConfigProcessor(true, config).buildConfig(w3cRootNode);
}
use of com.hazelcast.internal.yaml.YamlNode in project hazelcast by hazelcast.
the class AbstractYamlConfigBuilder method fillReplacerProperties.
private void fillReplacerProperties(Node node, Properties properties) {
YamlMapping propertiesMapping = asMapping(((YamlElementAdapter) node).getYamlNode());
for (YamlNameNodePair childNodePair : propertiesMapping.childrenPairs()) {
String childName = childNodePair.nodeName();
YamlNode child = childNodePair.childNode();
Object nodeValue = asScalar(child).nodeValue();
properties.put(childName, nodeValue != null ? nodeValue.toString() : "");
}
}
use of com.hazelcast.internal.yaml.YamlNode in project hazelcast by hazelcast.
the class YamlClientFailoverConfigBuilder method parseAndBuildConfig.
private void parseAndBuildConfig(ClientFailoverConfig config) throws Exception {
YamlMapping yamlRootNode;
try {
yamlRootNode = ((YamlMapping) YamlLoader.load(in));
} catch (Exception ex) {
throw new InvalidConfigurationException("Invalid YAML configuration", ex);
}
String configRoot = getConfigRoot();
YamlNode clientFailoverRoot = yamlRootNode.childAsMapping(configRoot);
if (clientFailoverRoot == null) {
clientFailoverRoot = yamlRootNode;
}
YamlDomChecker.check(clientFailoverRoot);
Node w3cRootNode = asW3cNode(clientFailoverRoot);
replaceVariables(w3cRootNode);
importDocuments(clientFailoverRoot);
if (shouldValidateTheSchema()) {
new YamlConfigSchemaValidator().validate(yamlRootNode);
}
new YamlClientFailoverDomConfigProcessor(true, config).buildConfig(w3cRootNode);
}
use of com.hazelcast.internal.yaml.YamlNode in project hazelcast by hazelcast.
the class AbstractYamlConfigBuilder method importDocuments.
/**
* Imports external YAML documents into the provided main YAML document.
* <p>
* Since the YAML configuration uses mappings, in order to keep the
* configuration defined in the main YAML document the imported
* document (the source) will be actually merged into the main
* document (the target). An example to it is defining one map in the
* main document, and another map in the imported document. In this
* case the documents should be merged to include both map configurations
* under the {@code root/map} node.
*
* @param imdgRoot The root of the main YAML configuration document
* @throws Exception If a YAML document to be imported can't be loaded
* @see #merge(YamlNode, YamlNode)
*/
protected void importDocuments(YamlNode imdgRoot) throws Exception {
YamlMapping rootAsMapping = asMapping(imdgRoot);
YamlSequence importSeq = rootAsMapping.childAsSequence(ConfigSections.IMPORT.getName());
if (importSeq == null || importSeq.childCount() == 0) {
return;
}
for (YamlNode importNode : importSeq.children()) {
String resource = asScalar(importNode).nodeValue();
URL url = ConfigLoader.locateConfig(resource);
if (url == null) {
throw new InvalidConfigurationException("Failed to load resource: " + resource);
}
if (!currentlyImportedFiles.add(url.getPath())) {
throw new InvalidConfigurationException("Cyclic loading of resource '" + url.getPath() + "' detected!");
}
YamlNode rootLoaded;
try (InputStream inputStream = url.openStream()) {
rootLoaded = YamlLoader.load(inputStream);
} catch (Exception ex) {
throw new InvalidConfigurationException("Loading YAML document from resource " + url.getPath() + " failed", ex);
}
YamlNode imdgRootLoaded = asMapping(rootLoaded).child(getConfigRoot());
if (imdgRootLoaded == null) {
imdgRootLoaded = rootLoaded;
}
replaceVariables(asW3cNode(imdgRootLoaded));
importDocuments(imdgRootLoaded);
// we need to merge and not just substitute with the content of the imported document
// YAML documents define mappings where the name of the nodes should be unique
merge(imdgRootLoaded, imdgRoot);
}
replaceVariables(asW3cNode(imdgRoot));
((MutableYamlMapping) rootAsMapping).removeChild(ConfigSections.IMPORT.getName());
}
Aggregations