summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java8
-rw-r--r--hosted-api/src/main/java/ai/vespa/hosted/api/Submission.java25
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java13
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/SubmitMojo.java18
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()));
}