1 package org.kuali.common.devops.jenkins.scan.function; 2 3 import static org.kuali.common.util.base.Precondition.checkNotBlank; 4 import static org.kuali.common.util.base.Precondition.checkNotNull; 5 6 import org.kuali.common.aws.s3.S3Service; 7 import org.kuali.common.core.json.api.JsonService; 8 import org.kuali.common.devops.jenkins.scan.Jenkins; 9 10 import com.google.common.base.Function; 11 12 public class PreviousJenkinsFunction implements Function<String, Jenkins> { 13 14 public PreviousJenkinsFunction(JsonService json, S3Service s3, String bucket) { 15 this.json = checkNotNull(json, "json"); 16 this.s3 = checkNotNull(s3, "s3"); 17 this.bucket = checkNotBlank(bucket, "bucket"); 18 } 19 20 private final JsonService json; 21 private final S3Service s3; 22 private final String bucket; 23 24 @Override 25 public Jenkins apply(String key) { 26 checkNotBlank(key, "key"); 27 if (s3.exists(bucket, key)) { 28 String text = s3.readObjectToString(bucket, key); 29 return json.readString(text, Jenkins.class); 30 } else { 31 String hostname = System.getProperty("jenkins.hostname", "ci.kuali.org"); 32 String version = System.getProperty("jenkins.version", "1.532.3"); 33 return Jenkins.builder().withHostname(hostname).withVersion(version).build(); 34 } 35 } 36 37 public JsonService getJson() { 38 return json; 39 } 40 41 public S3Service getS3() { 42 return s3; 43 } 44 45 public String getBucket() { 46 return bucket; 47 } 48 }