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 }