[DEV] new mode of parsing configs ==> based on introspections...
This commit is contained in:
parent
1351757c48
commit
ea883353e1
10
.classpath
10
.classpath
@ -35,6 +35,16 @@
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="lib/slf4j-api-1.7.31.jar">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="lib/slf4j-simple-1.7.31.jar">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
|
||||
<attributes>
|
||||
<attribute name="test" value="true"/>
|
||||
|
BIN
lib/log4j-1.2.17.jar
Normal file
BIN
lib/log4j-1.2.17.jar
Normal file
Binary file not shown.
BIN
lib/slf4j-api-1.7.31.jar
Normal file
BIN
lib/slf4j-api-1.7.31.jar
Normal file
Binary file not shown.
BIN
lib/slf4j-log4j12-1.7.31.jar
Normal file
BIN
lib/slf4j-log4j12-1.7.31.jar
Normal file
Binary file not shown.
BIN
lib/slf4j-simple-1.7.31.jar
Normal file
BIN
lib/slf4j-simple-1.7.31.jar
Normal file
Binary file not shown.
@ -2,7 +2,7 @@ package org.atriasoft.island;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
class IncludeConfig {
|
||||
public class IncludeConfig {
|
||||
private String name;
|
||||
private Path path;
|
||||
private Manifest manifest;
|
||||
|
@ -4,24 +4,19 @@ import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.atriasoft.exml.Exml;
|
||||
import org.atriasoft.exml.exception.ExmlBuilderException;
|
||||
import org.atriasoft.exml.exception.ExmlParserErrorMulti;
|
||||
import org.atriasoft.exml.model.XmlAttribute;
|
||||
import org.atriasoft.exml.model.XmlElement;
|
||||
import org.atriasoft.exml.model.XmlNode;
|
||||
import org.atriasoft.exml.model.XmlNodeType;
|
||||
import org.atriasoft.island.internal.Log;
|
||||
import org.atriasoft.island.model.Link;
|
||||
import org.atriasoft.island.model.MirrorConfig;
|
||||
import org.atriasoft.island.model.ProjectConfig;
|
||||
import org.atriasoft.island.model.RemoteConfig;
|
||||
import org.atriasoft.island.model.RepositoryConfig;
|
||||
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.RemoteListCommand;
|
||||
import org.atriasoft.island.model.manifest.ManifestFile;
|
||||
|
||||
public class Manifest {
|
||||
public static boolean isInit() {
|
||||
@ -47,17 +42,29 @@ public class Manifest {
|
||||
}
|
||||
}
|
||||
|
||||
private String deliver_master = "master";
|
||||
private String deliver_develop = "develop";
|
||||
private String deliver_mode = "merge";
|
||||
private final Path manifestXml;
|
||||
|
||||
private String rootManifest;
|
||||
private final Map<String,ManifestFile> manifests = new HashMap<>();
|
||||
@Deprecated
|
||||
private final String deliver_master = "master";
|
||||
@Deprecated
|
||||
private final String deliver_develop = "develop";
|
||||
@Deprecated
|
||||
private final String deliver_mode = "merge";
|
||||
@Deprecated
|
||||
List<ProjectConfig> projects = new ArrayList<>();
|
||||
@Deprecated
|
||||
RepositoryConfig defaultWhat = null;
|
||||
RepositoryConfig default_base = new RepositoryConfig();
|
||||
@Deprecated
|
||||
RepositoryConfig defaultBase = new RepositoryConfig();
|
||||
@Deprecated
|
||||
List<RemoteConfig> remotes = new ArrayList<>();
|
||||
@Deprecated
|
||||
List<IncludeConfig> includes = new ArrayList<>();
|
||||
@Deprecated
|
||||
List<Link> links = new ArrayList<>();
|
||||
|
||||
public Manifest(final Path manifestXml) throws IOException {
|
||||
this.manifestXml = manifestXml;
|
||||
// load the manifest
|
||||
@ -84,7 +91,22 @@ public class Manifest {
|
||||
}
|
||||
|
||||
public void load() throws ExmlParserErrorMulti, ExmlBuilderException, IOException {
|
||||
XmlElement rootNode = Exml.parse(this.manifestXml);
|
||||
|
||||
Path rootDirectory = this.manifestXml.toAbsolutePath();
|
||||
this.rootManifest = rootDirectory.getFileName().toString();
|
||||
rootDirectory = rootDirectory.getParent();
|
||||
|
||||
ManifestFile parsedElements = Exml.parseOne(this.manifestXml, ManifestFile.class, "manifest");
|
||||
parsedElements.setFileRealPath(this.manifestXml);
|
||||
this.manifests.put(this.rootManifest, parsedElements);
|
||||
for (String includeElem : parsedElements.getIncludes()) {
|
||||
Path maniPath = rootDirectory.resolve(includeElem);
|
||||
ManifestFile tmpManifest = Exml.parseOne(maniPath, ManifestFile.class, "manifest");
|
||||
tmpManifest.setFileRealPath(maniPath);
|
||||
this.manifests.put(includeElem, tmpManifest);
|
||||
}
|
||||
/*
|
||||
XmlElement rootNode = Exml.parse(this.manifestXml).getNodes().get(0).toElement();
|
||||
Log.debug("manifest : '" + this.manifestXml + "'");
|
||||
if (!rootNode.getValue().equals("manifest")) {
|
||||
Log.error(" in '" + this.manifestXml + "' have not main xml node='manifest'");
|
||||
@ -258,17 +280,17 @@ public class Manifest {
|
||||
Log.error("Parsing the manifest: Unknow '" + child.getValue() + "' attibute : '" + attr + "', availlable:[type,value]");
|
||||
}
|
||||
}
|
||||
if (type_option.equals("deliver_master")) {
|
||||
if (type_option.equals("deliver-master")) {
|
||||
this.deliver_master = value_option;
|
||||
} else if (type_option.equals("deliver_develop")) {
|
||||
} else if (type_option.equals("deliver-develop")) {
|
||||
this.deliver_develop = value_option;
|
||||
} else if (type_option.equals("deliver_mode")) {
|
||||
} else if (type_option.equals("deliver-mode")) {
|
||||
this.deliver_mode = value_option;
|
||||
if (this.deliver_mode.equals("merge") || this.deliver_mode.equals("fast_forward")) {
|
||||
Log.critical("Parsing the manifest: option 'deliver_mode' value availlable: [merge,fast_forward]");
|
||||
if (!this.deliver_mode.equals("merge") && !this.deliver_mode.equals("fast-forward")) {
|
||||
Log.critical("Parsing the manifest: option 'deliver-mode' value availlable: [merge,fast-forward]");
|
||||
}
|
||||
} else {
|
||||
Log.critical("Parsing the manifest: Unknow 'type' value availlable: [deliver_master,deliver_develop,deliver_mode]");
|
||||
Log.critical("Parsing the manifest: Unknow 'type' value availlable: [deliver-master,deliver-develop,deliver-mode]");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@ -302,6 +324,7 @@ public class Manifest {
|
||||
for (IncludeConfig elem : this.includes) {
|
||||
elem.setManifest(new Manifest(elem.getPath()));
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -337,7 +360,7 @@ public class Manifest {
|
||||
if (this.defaultWhat != null) {
|
||||
defaultPlouf = this.defaultWhat.clone();
|
||||
} else {
|
||||
defaultPlouf = this.default_base.clone();
|
||||
defaultPlouf = this.defaultBase.clone();
|
||||
}
|
||||
}
|
||||
// Log.error(" this.default=" + str(this.default))
|
||||
|
@ -6,6 +6,8 @@ import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
|
||||
import org.atriasoft.exml.Exml;
|
||||
import org.atriasoft.exml.annotation.XmlList;
|
||||
import org.atriasoft.exml.annotation.XmlName;
|
||||
import org.atriasoft.exml.exception.ExmlBuilderException;
|
||||
import org.atriasoft.island.Env;
|
||||
import org.atriasoft.island.internal.Log;
|
||||
@ -15,7 +17,7 @@ public class ConfigManifest {
|
||||
private String branch = "master";
|
||||
private String manifestName = "default.xml";
|
||||
private List<Volatile> volatiles = new ArrayList<>();
|
||||
private List<Link> curentLink = new ArrayList<>();
|
||||
private List<Link> links = new ArrayList<>();
|
||||
|
||||
public ConfigManifest() {
|
||||
}
|
||||
@ -32,12 +34,14 @@ public class ConfigManifest {
|
||||
public void setBranch(final String branch) {
|
||||
this.branch = branch;
|
||||
}
|
||||
@XmlName(value="manifest-name")
|
||||
public String getManifestName() {
|
||||
return this.manifestName;
|
||||
}
|
||||
public void setManifestName(final String manifestName) {
|
||||
this.manifestName = manifestName;
|
||||
}
|
||||
@XmlList(value="volatile")
|
||||
public List<Volatile> getVolatiles() {
|
||||
return this.volatiles;
|
||||
}
|
||||
@ -57,18 +61,19 @@ public class ConfigManifest {
|
||||
}
|
||||
}
|
||||
}
|
||||
public List<Link> getCurentLink() {
|
||||
return this.curentLink;
|
||||
@XmlList(value="link")
|
||||
public List<Link> getLinks() {
|
||||
return this.links;
|
||||
}
|
||||
public void setCurentLink(final List<Link> curentLink) {
|
||||
this.curentLink = curentLink;
|
||||
public void setLinks(final List<Link> curentLink) {
|
||||
this.links = curentLink;
|
||||
}
|
||||
public void addLink(final String source, final String destination) {
|
||||
rmLink(destination);
|
||||
this.curentLink.add(new Link(source, destination));
|
||||
this.links.add(new Link(source, destination));
|
||||
}
|
||||
private void rmLink(final String destination) {
|
||||
ListIterator<Link> it = this.curentLink.listIterator();
|
||||
ListIterator<Link> it = this.links.listIterator();
|
||||
while (it.hasNext()) {
|
||||
Link elem = it.next();
|
||||
if (elem.getDestination().equals(destination)) {
|
||||
|
@ -1,5 +1,8 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
import org.atriasoft.exml.annotation.XmlDefaultAttibute;
|
||||
|
||||
@XmlDefaultAttibute
|
||||
public class Link {
|
||||
private String source;
|
||||
private String destination;
|
||||
|
@ -1,5 +1,8 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
import org.atriasoft.exml.annotation.XmlDefaultAttibute;
|
||||
|
||||
@XmlDefaultAttibute
|
||||
public class MirrorConfig {
|
||||
private String name;
|
||||
private String fetch;
|
||||
|
@ -3,6 +3,9 @@ package org.atriasoft.island.model;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.atriasoft.exml.annotation.XmlManaged;
|
||||
import org.atriasoft.exml.annotation.XmlOptional;
|
||||
|
||||
public class ProjectConfig {
|
||||
private String name;
|
||||
private String path;
|
||||
@ -10,6 +13,13 @@ public class ProjectConfig {
|
||||
private boolean volatileElement = false;
|
||||
private List<RemoteConfig> remotes = new ArrayList<>();
|
||||
RemoteConfig selectRemotes = null;
|
||||
|
||||
// TODO remove this when Xml parser is ready ...
|
||||
public ProjectConfig() {
|
||||
this.name = null;
|
||||
this.path = null;
|
||||
this.tag = null;
|
||||
}
|
||||
public ProjectConfig(final String name, final String path, final String tag) {
|
||||
this.name = name;
|
||||
this.path = path;
|
||||
@ -27,27 +37,35 @@ public class ProjectConfig {
|
||||
public void setPath(final String path) {
|
||||
this.path = path;
|
||||
}
|
||||
@XmlOptional
|
||||
public String getTag() {
|
||||
return this.tag;
|
||||
}
|
||||
public void setTag(final String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
@XmlManaged(false)
|
||||
public void setBranch(final String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
@XmlManaged(false)
|
||||
public List<RemoteConfig> getRemotes() {
|
||||
return this.remotes;
|
||||
}
|
||||
public void setRemotes(final List<RemoteConfig> remotes) {
|
||||
this.remotes = remotes;
|
||||
}
|
||||
|
||||
@XmlManaged(false)
|
||||
public RemoteConfig getSelectRemotes() {
|
||||
return this.selectRemotes;
|
||||
}
|
||||
public void setSelectRemotes(final RemoteConfig selectRemotes) {
|
||||
this.selectRemotes = selectRemotes;
|
||||
}
|
||||
@XmlManaged(false)
|
||||
public boolean isVolatile() {
|
||||
return this.volatileElement;
|
||||
}
|
||||
|
@ -3,6 +3,8 @@ package org.atriasoft.island.model;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.atriasoft.exml.annotation.XmlAttribute;
|
||||
|
||||
public class RemoteConfig {
|
||||
private String name;
|
||||
private String fetch;
|
||||
@ -13,18 +15,23 @@ public class RemoteConfig {
|
||||
this.fetch = fetch;
|
||||
this.mirror = mirror;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getFetch() {
|
||||
return this.fetch;
|
||||
}
|
||||
public void setFetch(final String fetch) {
|
||||
this.fetch = fetch;
|
||||
}
|
||||
|
||||
public List<MirrorConfig> getMirror() {
|
||||
return this.mirror;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
@Deprecated
|
||||
public class RepositoryConfig {
|
||||
private String remote = "origin";
|
||||
private String revision = "master";
|
||||
|
6
src/org/atriasoft/island/model/manifest/DeliverMode.java
Normal file
6
src/org/atriasoft/island/model/manifest/DeliverMode.java
Normal file
@ -0,0 +1,6 @@
|
||||
package org.atriasoft.island.model.manifest;
|
||||
|
||||
public enum DeliverMode {
|
||||
MERGE,
|
||||
FAST_FORWARD;
|
||||
}
|
79
src/org/atriasoft/island/model/manifest/ManifestFile.java
Normal file
79
src/org/atriasoft/island/model/manifest/ManifestFile.java
Normal file
@ -0,0 +1,79 @@
|
||||
package org.atriasoft.island.model.manifest;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.atriasoft.exml.annotation.XmlList;
|
||||
import org.atriasoft.exml.annotation.XmlManaged;
|
||||
import org.atriasoft.exml.annotation.XmlName;
|
||||
import org.atriasoft.island.model.Link;
|
||||
import org.atriasoft.island.model.ProjectConfig;
|
||||
import org.atriasoft.island.model.RemoteConfig;
|
||||
|
||||
public class ManifestFile {
|
||||
private Path fileRealPath = null;
|
||||
private List<ProjectConfig> projects = new ArrayList<>();
|
||||
private List<RemoteConfig> remotes = new ArrayList<>();
|
||||
private List<String> includes = new ArrayList<>();
|
||||
private List<MavenDependency> mavenDependency = new ArrayList<>();
|
||||
private OptionRepository options = null;
|
||||
private List<Link> links = new ArrayList<>();
|
||||
|
||||
@XmlName(value="project")
|
||||
public List<ProjectConfig> getProjects() {
|
||||
return this.projects;
|
||||
}
|
||||
public void setProjects(final List<ProjectConfig> projects) {
|
||||
this.projects = projects;
|
||||
}
|
||||
|
||||
@XmlName(value="remote")
|
||||
public List<RemoteConfig> getRemotes() {
|
||||
return this.remotes;
|
||||
}
|
||||
public void setRemotes(final List<RemoteConfig> remotes) {
|
||||
this.remotes = remotes;
|
||||
}
|
||||
|
||||
@XmlName(value="include")
|
||||
public List<String> getIncludes() {
|
||||
return this.includes;
|
||||
}
|
||||
public void setIncludes(final List<String> includes) {
|
||||
this.includes = includes;
|
||||
}
|
||||
|
||||
@XmlName(value="maven")
|
||||
@XmlList(value="dependency")
|
||||
public List<MavenDependency> getMavenDependency() {
|
||||
return this.mavenDependency;
|
||||
}
|
||||
public void setMavenDependency(final List<MavenDependency> mavenDependency) {
|
||||
this.mavenDependency = mavenDependency;
|
||||
}
|
||||
|
||||
public OptionRepository getOptions() {
|
||||
return this.options;
|
||||
}
|
||||
public void setOptions(final OptionRepository options) {
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
@XmlName(value="link")
|
||||
public List<Link> getLinks() {
|
||||
return this.links;
|
||||
}
|
||||
public void setLinks(final List<Link> links) {
|
||||
this.links = links;
|
||||
}
|
||||
|
||||
@XmlManaged(false)
|
||||
public Path getFileRealPath() {
|
||||
return this.fileRealPath;
|
||||
}
|
||||
public void setFileRealPath(final Path fileRealPath) {
|
||||
this.fileRealPath = fileRealPath;
|
||||
}
|
||||
|
||||
}
|
34
src/org/atriasoft/island/model/manifest/MavenDependency.java
Normal file
34
src/org/atriasoft/island/model/manifest/MavenDependency.java
Normal file
@ -0,0 +1,34 @@
|
||||
package org.atriasoft.island.model.manifest;
|
||||
|
||||
import org.atriasoft.exml.annotation.XmlDefaultAttibute;
|
||||
import org.atriasoft.exml.annotation.XmlName;
|
||||
|
||||
@XmlDefaultAttibute
|
||||
public class MavenDependency {
|
||||
private String org = null;
|
||||
private String name = null;
|
||||
private String revision = null;
|
||||
|
||||
public String getOrg() {
|
||||
return this.org;
|
||||
}
|
||||
public void setOrg(final String org) {
|
||||
this.org = org;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@XmlName(value="rev")
|
||||
public String getRevision() {
|
||||
return this.revision;
|
||||
}
|
||||
public void setRevision(final String revision) {
|
||||
this.revision = revision;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package org.atriasoft.island.model.manifest;
|
||||
|
||||
import org.atriasoft.exml.annotation.XmlName;
|
||||
|
||||
public class OptionRepository {
|
||||
private String branchRelease = "master";
|
||||
private String branchDevelop = "dev";
|
||||
private DeliverMode deliverMode = DeliverMode.MERGE;
|
||||
private String defaultBranch = "master";
|
||||
private String defaultRemote = "origin";
|
||||
private boolean synchronizeSubmodule = false;
|
||||
|
||||
@XmlName(value="branch-release")
|
||||
public String getBranchRelease() {
|
||||
return this.branchRelease;
|
||||
}
|
||||
public void setBranchRelease(final String branchRelease) {
|
||||
this.branchRelease = branchRelease;
|
||||
}
|
||||
|
||||
@XmlName(value="branch-develop")
|
||||
public String getBranchDevelop() {
|
||||
return this.branchDevelop;
|
||||
}
|
||||
public void setBranchDevelop(final String branchDevelop) {
|
||||
this.branchDevelop = branchDevelop;
|
||||
}
|
||||
|
||||
@XmlName(value="deliver-mode")
|
||||
public DeliverMode getDeliverMode() {
|
||||
return this.deliverMode;
|
||||
}
|
||||
public void setDeliverMode(final DeliverMode deliverMode) {
|
||||
this.deliverMode = deliverMode;
|
||||
}
|
||||
|
||||
@XmlName(value="default-branch")
|
||||
public String getDefaultBranch() {
|
||||
return this.defaultBranch;
|
||||
}
|
||||
public void setDefaultBranch(final String defaultBranch) {
|
||||
this.defaultBranch = defaultBranch;
|
||||
}
|
||||
|
||||
@XmlName(value="default-remote")
|
||||
public String getDefaultRemote() {
|
||||
return this.defaultRemote;
|
||||
}
|
||||
public void setDefaultRemote(final String defaultRemote) {
|
||||
this.defaultRemote = defaultRemote;
|
||||
}
|
||||
|
||||
@XmlName(value="synchronize-submodule")
|
||||
public boolean isSynchronizeSubmodule() {
|
||||
return this.synchronizeSubmodule;
|
||||
}
|
||||
public void setSynchronizeSubmodule(final boolean downloadSubmodule) {
|
||||
this.synchronizeSubmodule = downloadSubmodule;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user