package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; import com.google.common.base.Optional; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import hudson.plugins.claim.ClaimBuildAction; import org.codehaus.jackson.annotate.JsonProperty; public class CanBeClaimed implements Feature { private JobView job; @Override public CanBeClaimed of(JobView jobView) { this.job = jobView; return this; } @Override public Claim asJson() { Optional<ClaimBuildAction> details = job.lastCompletedBuild().detailsOf(ClaimBuildAction.class); return details.isPresent() // would be nice to have .map(Claim(_)).orElse(), but hey... ? new Claim(details.get()) : null; // `null` because we don't want to serialise an empty object } public static class Claim { private final ClaimBuildAction details; public Claim(ClaimBuildAction details) { this.details = details; } @JsonProperty public boolean isActive() { return details.isClaimed(); } @JsonProperty public String author() { return details.getClaimedByName(); } @JsonProperty public String reason() { return details.getReason(); } } }