package com.cloudbees.jenkins; import hudson.Extension; import hudson.Util; import hudson.model.AbstractProject; import hudson.model.Item; import hudson.triggers.Trigger; import jenkins.model.ParameterizedJobMixIn; import java.util.Collection; import java.util.Set; /** * Optional interface that can be implemented by {@link Trigger} that watches out for a change in GitHub * and triggers a build. * * @author aaronwalker * @deprecated not used any more */ public interface GitHubTrigger { @Deprecated void onPost(); // TODO: document me void onPost(String triggeredByUser); /** * Obtains the list of the repositories that this trigger is looking at. * * If the implementation of this class maintain its own list of GitHub repositories, it should * continue to implement this method for backward compatibility, and it gets picked up by * {@link GitHubRepositoryNameContributor#parseAssociatedNames(AbstractProject)}. * * <p> * Alternatively, if the implementation doesn't worry about the backward compatibility, it can * implement this method to return an empty collection, then just implement {@link GitHubRepositoryNameContributor}. * * @deprecated Call {@link GitHubRepositoryNameContributor#parseAssociatedNames(AbstractProject)} instead. */ Set<GitHubRepositoryName> getGitHubRepositories(); /** * Contributes {@link GitHubRepositoryName} from {@link GitHubTrigger#getGitHubRepositories()} * for backward compatibility */ @Extension class GitHubRepositoryNameContributorImpl extends GitHubRepositoryNameContributor { @Override public void parseAssociatedNames(Item item, Collection<GitHubRepositoryName> result) { if (item instanceof ParameterizedJobMixIn.ParameterizedJob) { ParameterizedJobMixIn.ParameterizedJob p = (ParameterizedJobMixIn.ParameterizedJob) item; // TODO use standard method in 1.621+ for (GitHubTrigger ght : Util.filter(p.getTriggers().values(), GitHubTrigger.class)) { result.addAll(ght.getGitHubRepositories()); } } } } }