1 package org.kuali.common.jute.project.maven;
2
3 import static org.kuali.common.jute.base.Precondition.checkNotBlank;
4
5 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
6
7 @JsonDeserialize(builder = ProjectCoordinates.Builder.class)
8 public final class ProjectCoordinates {
9
10 private final String groupId;
11 private final String artifactId;
12 private final String version;
13
14 private ProjectCoordinates(Builder builder) {
15 this.groupId = builder.groupId;
16 this.artifactId = builder.artifactId;
17 this.version = builder.version;
18 }
19
20 public static Builder builder() {
21 return new Builder();
22 }
23
24 public static class Builder implements org.apache.commons.lang3.builder.Builder<ProjectCoordinates> {
25
26 private String groupId;
27 private String artifactId;
28 private String version;
29
30 public Builder withGroupId(String groupId) {
31 this.groupId = groupId;
32 return this;
33 }
34
35 public Builder withArtifactId(String artifactId) {
36 this.artifactId = artifactId;
37 return this;
38 }
39
40 public Builder withVersion(String version) {
41 this.version = version;
42 return this;
43 }
44
45 @Override
46 public ProjectCoordinates build() {
47 return validate(new ProjectCoordinates(this));
48 }
49
50 private static ProjectCoordinates validate(ProjectCoordinates instance) {
51 checkNotBlank(instance.groupId, "groupId");
52 checkNotBlank(instance.artifactId, "artifactId");
53 checkNotBlank(instance.version, "version");
54 return instance;
55 }
56 }
57
58 public String getGroupId() {
59 return groupId;
60 }
61
62 public String getArtifactId() {
63 return artifactId;
64 }
65
66 public String getVersion() {
67 return version;
68 }
69
70 }