package hudson.plugins.emailext.watching; import hudson.Extension; import hudson.model.Action; import hudson.model.Job; import hudson.model.JobProperty; import hudson.model.JobPropertyDescriptor; import hudson.model.User; import net.sf.json.JSONObject; import org.kohsuke.stapler.StaplerRequest; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; /** * Created by acearl on 12/4/2014. */ public class EmailExtWatchJobProperty extends JobProperty<Job<?, ?>> { final List<String> watchers = new ArrayList<>(); @Override public Collection<Action> getJobActions(Job<?, ?> job) { return Collections.emptyList(); } public List<String> getWatchers() { return Collections.unmodifiableList(watchers); } public void addWatcher(User user) { String existing = null; for (String u : watchers) { if (u.compareTo(user.getId()) == 0) { existing = u; break; } } if (existing == null) { watchers.add(user.getId()); } } public void removeWatcher(User user) { String remove = null; for (String u : watchers) { if (u.compareTo(user.getId()) == 0) { remove = u; break; } } if (remove != null) { watchers.remove(user.getId()); } } public boolean isWatching(User user) { for(String u : watchers) { if(u.compareTo(user.getId()) == 0) { return true; } } return false; } @Extension public static class DescriptorImpl extends JobPropertyDescriptor { @Override public boolean isApplicable(Class<? extends Job> jobType) { return true; } @Override public JobProperty<?> newInstance(StaplerRequest req, JSONObject formData) throws FormException { return null; } @Override public String getDisplayName() { return ""; } } }