package org.handwerkszeug.mvnhack.repository.impl;
import java.util.logging.Level;
import org.handwerkszeug.common.util.StringUtil;
import org.handwerkszeug.common.util.UrlUtil;
import org.handwerkszeug.mvnhack.Constants;
import org.yaml.snakeyaml.nodes.MappingNode;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.NodeId;
import org.yaml.snakeyaml.nodes.NodeTuple;
import org.yaml.snakeyaml.nodes.ScalarNode;
import org.yaml.snakeyaml.nodes.SequenceNode;
public class YamlConfiguration extends AbstractConfiguration {
public YamlConfiguration() {
}
public YamlConfiguration(MappingNode node) {
load();
load(node);
}
public void load(MappingNode node) {
for (NodeTuple nt : node.getValue()) {
Node kn = nt.getKeyNode();
Node vn = nt.getValueNode();
if (NodeId.scalar.equals(kn.getNodeId())) {
ScalarNode ksn = (ScalarNode) kn;
if (Constants.NODE_REPOSITORIES.equals(ksn.getValue())) {
if (NodeId.scalar.equals(vn.getNodeId())) {
ScalarNode vsn = (ScalarNode) vn;
addRepository(vsn);
} else if (NodeId.sequence.equals(vn.getNodeId())) {
SequenceNode vsn = (SequenceNode) vn;
for (Node n : vsn.getValue()) {
if (NodeId.scalar.equals(n.getNodeId())) {
ScalarNode sn = (ScalarNode) n;
addRepository(sn);
}
}
}
} else if (Constants.PROP_PROXY.equals(ksn.getValue())) {
if (NodeId.scalar.equals(vn.getNodeId())) {
ScalarNode vsn = (ScalarNode) vn;
UrlUtil.setUpProxy(vsn.getValue());
} else {
Constants.LOG.log(Level.WARNING, nt.toString());
}
} else if (Constants.PROP_NONPROXY.equals(ksn.getValue())
&& StringUtil.isEmpty(System
.getProperty(Constants.PROP_NONPROXY))) {
if (NodeId.scalar.equals(vn.getNodeId())) {
ScalarNode vsn = (ScalarNode) vn;
String v = vsn.getValue();
if (StringUtil.isEmpty(v) == false) {
System.setProperty(Constants.PROP_NONPROXY, v);
}
} else if (NodeId.sequence.equals(vn.getNodeId())) {
SequenceNode vsn = (SequenceNode) vn;
StringBuilder stb = new StringBuilder();
for (Node n : vsn.getValue()) {
if (NodeId.scalar.equals(n.getNodeId())) {
ScalarNode sn = (ScalarNode) n;
stb.append(sn.getValue());
stb.append(',');
}
}
System.setProperty(Constants.PROP_NONPROXY,
stb.toString());
}
}
}
}
}
public void addRepository(ScalarNode sn) {
String s = sn.getValue();
if (validateURL(s)) {
addRepository(new RemoteRepository(s, builder));
} else {
Constants.LOG.log(Level.SEVERE, "invalid url " + s);
}
}
}