package org.wildfly.swarm.bootstrap.env; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import org.yaml.snakeyaml.Yaml; /** * @author Bob McWhirter */ public class FractionManifest { public static final String CLASSPATH_LOCATION = "META-INF/fraction-manifest.yaml"; private String name; private String module; private String groupId; private String artifactId; private String version; private int stabilityIndex; private String stabilityLevel; private boolean internal; private List<String> dependencies = new ArrayList<>(); public FractionManifest() { } public FractionManifest(URL url) throws IOException { read(url); } public FractionManifest(InputStream in) throws IOException { read(in); } protected void read(URL url) throws IOException { try (InputStream in = url.openStream()) { read(in); } } @SuppressWarnings("unchecked") protected void read(InputStream in) throws IOException { Yaml yaml = new Yaml(); Map data = (Map) yaml.load(in); setName((String) data.get("name")); setModule((String) data.get("module")); setGroupId((String) data.get("groupId")); setArtifactId((String) data.get("artifactId")); setVersion((String) data.get("version")); setDependencies((Collection<String>) data.get("dependencies")); Object internal = data.get("internal"); if (internal != null) { setInternal((Boolean) internal); } Map stability = (Map) data.get("stability"); if (stability != null) { setStabilityIndex((Integer) stability.get("index")); setStabilityLevel((String) stability.get("level")); } } public void setModule(String module) { this.module = module; } public String getModule() { return this.module; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getStabilityIndex() { return stabilityIndex; } public void setStabilityIndex(int stabilityIndex) { this.stabilityIndex = stabilityIndex; } public String getStabilityLevel() { return stabilityLevel; } public void setStabilityLevel(String stabilityLevel) { this.stabilityLevel = stabilityLevel; } public boolean isInternal() { return internal; } public void setInternal(boolean internal) { this.internal = internal; } public void setDependencies(Collection<String> dependencies) { this.dependencies.clear(); if (dependencies != null) { this.dependencies.addAll(dependencies); } } public List<String> getDependencies() { return this.dependencies; } public String getGroupId() { return groupId; } public void setGroupId(String groupId) { this.groupId = groupId; } public String getArtifactId() { return artifactId; } public void setArtifactId(String artifactId) { this.artifactId = artifactId; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } }