diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-01-20 12:07:11 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-01-20 12:07:11 +0100 |
commit | 115a3b242be1e6043d927bcd7570de5c6efefa44 (patch) | |
tree | adb71bdb5ebe71d9e4c7185b46f7e67ba09ede3f | |
parent | 0c6b28ef310bb5714b8c2ba10651ae87068e9b59 (diff) |
Make mojo send only specified data, and make it all optional
4 files changed, 39 insertions, 25 deletions
diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java index caabdfa1479..f1486ae7117 100644 --- a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java +++ b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java @@ -288,11 +288,11 @@ public abstract class ControllerHttpClient { private static String metaToJson(Submission submission) { Slime slime = new Slime(); Cursor rootObject = slime.setObject(); - rootObject.setString("repository", submission.repository()); - rootObject.setString("branch", submission.branch()); - rootObject.setString("commit", submission.commit()); + submission.repository().ifPresent(repository -> rootObject.setString("repository", repository)); + submission.branch().ifPresent(branch -> rootObject.setString("branch", branch)); + submission.commit().ifPresent(commit -> rootObject.setString("commit", commit)); submission.sourceUrl().ifPresent(url -> rootObject.setString("sourceUrl", url)); - rootObject.setString("authorEmail", submission.authorEmail()); + submission.authorEmail().ifPresent(email -> rootObject.setString("authorEmail", email)); submission.projectId().ifPresent(projectId -> rootObject.setLong("projectId", projectId)); return toJson(slime); } diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/Submission.java b/hosted-api/src/main/java/ai/vespa/hosted/api/Submission.java index 6f392de86e7..22b0c619acc 100644 --- a/hosted-api/src/main/java/ai/vespa/hosted/api/Submission.java +++ b/hosted-api/src/main/java/ai/vespa/hosted/api/Submission.java @@ -12,17 +12,18 @@ import java.util.OptionalLong; */ public class Submission { - private final String repository; - private final String branch; - private final String commit; + private final Optional<String> repository; + private final Optional<String> branch; + private final Optional<String> commit; private final Optional<String> sourceUrl; - private final String authorEmail; + private final Optional<String> authorEmail; private final Path applicationZip; private final Path applicationTestZip; - private final OptionalLong projectId; + private final Optional<Long> projectId; - public Submission(String repository, String branch, String commit, Optional<String> sourceUrl, String authorEmail, - Path applicationZip, Path applicationTestZip, OptionalLong projectId) { + public Submission(Optional<String> repository, Optional<String> branch, Optional<String> commit, + Optional<String> sourceUrl, Optional<String> authorEmail, + Path applicationZip, Path applicationTestZip, Optional<Long> projectId) { this.repository = repository; this.branch = branch; this.commit = commit; @@ -33,13 +34,13 @@ public class Submission { this.projectId = projectId; } - public String repository() { return repository; } - public String branch() { return branch; } - public String commit() { return commit; } + public Optional<String> repository() { return repository; } + public Optional<String> branch() { return branch; } + public Optional<String> commit() { return commit; } public Optional<String> sourceUrl() { return sourceUrl; } - public String authorEmail() { return authorEmail; } + public Optional<String> authorEmail() { return authorEmail; } public Path applicationZip() { return applicationZip; } public Path applicationTestZip() { return applicationTestZip; } - public OptionalLong projectId() { return projectId; } + public Optional<Long> projectId() { return projectId; } } diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java index 1dae2b76711..8602d89c90c 100644 --- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java +++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java @@ -15,6 +15,8 @@ import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Optional; +import java.util.function.Function; /** * Base class for hosted Vespa plugin mojos. @@ -98,4 +100,15 @@ public abstract class AbstractVespaMojo extends AbstractMojo { throw new IllegalArgumentException("No valid value given"); } + protected static Optional<String> optionalOf(String value) { + return Optional.ofNullable(value) + .filter(data -> ! data.isBlank()); + } + + protected static <T> Optional<T> optionalOf(String value, Function<String, T> mapper) { + return Optional.ofNullable(value) + .filter(data -> ! data.isBlank()) + .map(mapper); + } + } diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/SubmitMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/SubmitMojo.java index 80655cf1d36..6669f771a0e 100644 --- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/SubmitMojo.java +++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/SubmitMojo.java @@ -23,32 +23,32 @@ public class SubmitMojo extends AbstractVespaMojo { @Parameter(property = "applicationTestZip") private String applicationTestZip; - @Parameter(property = "authorEmail", required = true) + @Parameter(property = "authorEmail") private String authorEmail; - @Parameter(property = "repository", defaultValue = "unknown") + @Parameter(property = "repository") private String repository; - @Parameter(property = "branch", defaultValue = "unknown") + @Parameter(property = "branch") private String branch; - @Parameter(property = "commit", defaultValue = "unknown") + @Parameter(property = "commit") private String commit; @Parameter(property = "sourceUrl") private String sourceUrl; @Parameter(property = "projectId") - private Long projectId; + private String projectId; @Override public void doExecute() { applicationZip = firstNonBlank(applicationZip, projectPathOf("target", "application.zip")); applicationTestZip = firstNonBlank(applicationTestZip, projectPathOf("target", "application-test.zip")); - Submission submission = new Submission(repository, branch, commit, Optional.ofNullable(sourceUrl), authorEmail, - Paths.get(applicationZip), - Paths.get(applicationTestZip), - projectId == null ? OptionalLong.empty() : OptionalLong.of(projectId)); + Submission submission = new Submission(optionalOf(repository), optionalOf(branch), optionalOf(commit), + optionalOf(sourceUrl), optionalOf(authorEmail), + Paths.get(applicationZip), Paths.get(applicationTestZip), + optionalOf(projectId, Long::parseLong)); getLog().info(controller.submit(submission, id.tenant(), id.application())); } |