blob: 3b41f1c8baf45374861a08d180b7236a69d36d4a [file] [log] [blame]
// Copyright (C) 2017 Google Inc
//
// 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 com.googlesource.gerrit.plugins.supermanifest;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.commons.lang.StringUtils;
/** Refer https://fuchsia.googlesource.com/jiri/+/HEAD/manifest.md for manifest specification. */
@XmlRootElement(name = "manifest")
class JiriManifest {
@XmlElement public Imports imports;
@XmlElement public JiriProjects projects;
public JiriManifest() {
imports = new Imports();
projects = new JiriProjects();
}
@Override
public String toString() {
StringBuffer buf = new StringBuffer("\nmanifest:\n");
buf.append(StringUtil.addTab(imports.toString()));
buf.append(StringUtil.addTab(projects.toString()));
return buf.toString();
}
static class LocalImport {
@XmlAttribute(required = true)
private String file;
@Override
public String toString() {
return file;
}
/** @return the file */
public String getFile() {
return file;
}
}
static class Import {
@XmlAttribute(required = true)
String manifest;
@XmlAttribute(required = true)
String name;
@XmlAttribute(required = true)
String remote;
@XmlAttribute
String revision;
@XmlAttribute
String remotebranch;
public Import() {
manifest = "";
name = "";
remote = "";
revision = "";
remotebranch = "";
}
public void fillDefault() {
if (remotebranch.isEmpty()) {
remotebranch = "master";
}
}
public String Key() {
return name + "=" + StringUtils.strip(remote, "/");
}
/** @return the manifest */
public String getManifest() {
return manifest;
}
/** @return the name */
public String getName() {
return name;
}
/** @return the remote */
public String getRemote() {
return remote;
}
/** @return the revision */
public String getRevision() {
return revision;
}
/** @return the remotebranch */
public String getRemotebranch() {
return remotebranch;
}
}
static class Imports {
@XmlElement(name = "import")
private Import[] imports;
@XmlElement(name = "localimport")
private LocalImport[] localImports;
public Imports() {
this.imports = new Import[0];
this.localImports = new LocalImport[0];
}
@Override
public String toString() {
StringBuffer buf = new StringBuffer("");
if (imports.length > 0) {
buf.append("import: " + imports.length + "\n");
}
if (localImports.length > 0) {
buf.append("localImports:\n");
for (LocalImport l : localImports) {
buf.append(StringUtil.addTab(l.toString()));
}
}
return buf.toString();
}
/** @return the imports */
public Import[] getImports() {
return imports;
}
/** @return the localImports */
public LocalImport[] getLocalImports() {
return localImports;
}
}
}