diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-12-18 13:40:37 +0100 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-12-19 11:27:41 +0100 |
commit | f816fb18daad6ac5180d331c3fe041f0e33a253e (patch) | |
tree | 9c2cad4363824150d66fe8da329a1c4c168fd31f /controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java | |
parent | c6dd8b5a3c1c9aff65df402f0fd7c77bd3de74e9 (diff) |
Add author email to ApplicationVersion, and store it with submissions
Diffstat (limited to 'controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java')
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java index 0e14be29fc5..eaa105875d1 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java @@ -17,30 +17,41 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> { * Used in cases where application version cannot be determined, such as manual deployments (e.g. in dev * environment) */ - public static final ApplicationVersion unknown = new ApplicationVersion(Optional.empty(), OptionalLong.empty()); + public static final ApplicationVersion unknown = new ApplicationVersion(Optional.empty(), OptionalLong.empty(), Optional.empty()); // This never changes and is only used to create a valid semantic version number, as required by application bundles private static final String majorVersion = "1.0"; private final Optional<SourceRevision> source; + private final Optional<String> authorEmail; private final OptionalLong buildNumber; - private ApplicationVersion(Optional<SourceRevision> source, OptionalLong buildNumber) { + private ApplicationVersion(Optional<SourceRevision> source, OptionalLong buildNumber, Optional<String> authorEmail) { Objects.requireNonNull(source, "source cannot be null"); Objects.requireNonNull(buildNumber, "buildNumber cannot be null"); + Objects.requireNonNull(authorEmail, "author cannot be null"); if (source.isPresent() != buildNumber.isPresent()) { throw new IllegalArgumentException("both buildNumber and source must be set together"); } if (buildNumber.isPresent() && buildNumber.getAsLong() <= 0) { throw new IllegalArgumentException("buildNumber must be > 0"); } + if (authorEmail.isPresent() && ! authorEmail.get().matches("[^@]+@[^@]+")) { + throw new IllegalArgumentException("Invalid author email '" + authorEmail.get() + "'."); + } this.source = source; this.buildNumber = buildNumber; + this.authorEmail = authorEmail; } - /** Create an application package version from a completed build */ + /** Create an application package version from a completed build, without an author email */ public static ApplicationVersion from(SourceRevision source, long buildNumber) { - return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber)); + return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.empty()); + } + + /** Create an application package version from a completed build, with an author email */ + public static ApplicationVersion from(SourceRevision source, long buildNumber, String authorEmail) { + return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.of(authorEmail)); } /** Returns an unique identifier for this version or "unknown" if version is not known */ @@ -60,6 +71,9 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> { /** Returns the build number that built this version */ public OptionalLong buildNumber() { return buildNumber; } + /** Returns the email of the author of commit of this version, if known */ + public Optional<String> authorEmail() { return authorEmail; } + /** Returns whether this is unknown */ public boolean isUnknown() { return this.equals(unknown); @@ -68,7 +82,7 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (!(o instanceof ApplicationVersion)) return false; ApplicationVersion that = (ApplicationVersion) o; return Objects.equals(source, that.source) && Objects.equals(buildNumber, that.buildNumber); @@ -81,7 +95,9 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> { @Override public String toString() { - return "Application package version: " + id() + source.map(s -> ", " + s.toString()).orElse(""); + return "Application package version: " + id() + + source.map(s -> ", " + s.toString()).orElse("") + + authorEmail.map(e -> ", " + e).orElse(""); } /** Abbreviate given commit hash to 9 characters */ |