1 package org.kuali.common.jute.project.maven;
2
3 import static com.google.common.base.Optional.absent;
4 import static org.kuali.common.jute.reflect.Reflection.checkNoNulls;
5
6 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
7 import com.google.common.base.Optional;
8
9 @JsonDeserialize(builder = MavenScm.Builder.class)
10 public final class MavenScm {
11
12 private final Optional<String> connection;
13 private final Optional<String> developerConnection;
14 private final Optional<String> tag;
15 private final Optional<String> url;
16
17 private MavenScm(Builder builder) {
18 this.connection = builder.connection;
19 this.developerConnection = builder.developerConnection;
20 this.tag = builder.tag;
21 this.url = builder.url;
22 }
23
24 public static Builder builder() {
25 return new Builder();
26 }
27
28 public static class Builder implements org.apache.commons.lang3.builder.Builder<MavenScm> {
29
30 private Optional<String> connection = absent();
31 private Optional<String> developerConnection = absent();
32 private Optional<String> tag = absent();
33 private Optional<String> url = absent();
34
35 public Builder withConnection(Optional<String> connection) {
36 this.connection = connection;
37 return this;
38 }
39
40 public Builder withDeveloperConnection(Optional<String> developerConnection) {
41 this.developerConnection = developerConnection;
42 return this;
43 }
44
45 public Builder withTag(Optional<String> tag) {
46 this.tag = tag;
47 return this;
48 }
49
50 public Builder withUrl(Optional<String> url) {
51 this.url = url;
52 return this;
53 }
54
55 @Override
56 public MavenScm build() {
57 return checkNoNulls(new MavenScm(this));
58 }
59 }
60
61 public Optional<String> getConnection() {
62 return connection;
63 }
64
65 public Optional<String> getDeveloperConnection() {
66 return developerConnection;
67 }
68
69 public Optional<String> getTag() {
70 return tag;
71 }
72
73 public Optional<String> getUrl() {
74 return url;
75 }
76
77 }