1 package org.kuali.common.devops.jenkins.updates.model; 2 3 import static com.google.common.collect.Maps.newHashMap; 4 5 import java.util.Map; 6 7 import org.kuali.common.core.build.ValidatingBuilder; 8 import org.kuali.common.core.validate.annotation.IdiotProofImmutable; 9 10 import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 11 import com.google.common.collect.ImmutableMap; 12 13 @IdiotProofImmutable 14 @JsonDeserialize(builder = JenkinsUpdateCenter.Builder.class) 15 public final class JenkinsUpdateCenter { 16 17 private final String id; 18 private final String connectionCheckUrl; 19 private final JenkinsCore core; 20 private final JenkinsSignature signature; 21 private final ImmutableMap<String, JenkinsPlugin> plugins; 22 23 private JenkinsUpdateCenter(Builder builder) { 24 this.id = builder.id; 25 this.connectionCheckUrl = builder.connectionCheckUrl; 26 this.core = builder.core; 27 this.signature = builder.signature; 28 this.plugins = ImmutableMap.copyOf(builder.plugins); 29 } 30 31 public static Builder builder() { 32 return new Builder(); 33 } 34 35 public static class Builder extends ValidatingBuilder<JenkinsUpdateCenter> { 36 37 private String id; 38 private String connectionCheckUrl; 39 private JenkinsCore core; 40 private JenkinsSignature signature; 41 private Map<String, JenkinsPlugin> plugins = newHashMap(); 42 43 public Builder withId(String id) { 44 this.id = id; 45 return this; 46 } 47 48 public Builder withConnectionCheckUrl(String connectionCheckUrl) { 49 this.connectionCheckUrl = connectionCheckUrl; 50 return this; 51 } 52 53 public Builder withCore(JenkinsCore core) { 54 this.core = core; 55 return this; 56 } 57 58 public Builder withSignature(JenkinsSignature signature) { 59 this.signature = signature; 60 return this; 61 } 62 63 public Builder withPlugins(Map<String, JenkinsPlugin> plugins) { 64 this.plugins = plugins; 65 return this; 66 } 67 68 @Override 69 public JenkinsUpdateCenter build() { 70 return validate(new JenkinsUpdateCenter(this)); 71 } 72 } 73 74 public String getId() { 75 return id; 76 } 77 78 public String getConnectionCheckUrl() { 79 return connectionCheckUrl; 80 } 81 82 public JenkinsCore getCore() { 83 return core; 84 } 85 86 public JenkinsSignature getSignature() { 87 return signature; 88 } 89 90 public Map<String, JenkinsPlugin> getPlugins() { 91 return plugins; 92 } 93 94 }