Skip to content

Commit

Permalink
Merge pull request #9 from williambernardet/master
Browse files Browse the repository at this point in the history
Fix proposal for JENKINS-23710 - Add support for DependencyDeclarer interface
  • Loading branch information
ndeloof committed Jul 9, 2014
2 parents d131826 + 46887cb commit bd6d7b7
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
17 changes: 16 additions & 1 deletion src/main/java/hudson/plugins/templateproject/ProxyBuilder.java
Expand Up @@ -7,6 +7,8 @@
import hudson.model.AbstractProject;
import hudson.model.Action;
import hudson.model.BuildListener;
import hudson.model.DependecyDeclarer;
import hudson.model.DependencyGraph;
import hudson.model.Hudson;
import hudson.model.Item;
import hudson.model.Project;
Expand All @@ -27,7 +29,7 @@
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;

public class ProxyBuilder extends Builder {
public class ProxyBuilder extends Builder implements DependecyDeclarer {

private final String projectName;

Expand All @@ -47,6 +49,19 @@ public List<Builder> getProjectBuilders() {
else return Collections.emptyList();
}

@Override
public void buildDependencyGraph(AbstractProject project, DependencyGraph graph) {
AbstractProject<?, ?> templateProject = (AbstractProject) Hudson.getInstance().getItem(getProjectName());
if (templateProject != null) {
for (Publisher publisher : templateProject.getPublishersList().toList()) {
if (publisher instanceof DependecyDeclarer) {
((DependecyDeclarer)publisher).buildDependencyGraph(project, graph);
}
}
}
}


@Extension
public static class DescriptorImpl extends BuildStepDescriptor<Builder> {

Expand Down
20 changes: 19 additions & 1 deletion src/main/java/hudson/plugins/templateproject/ProxyPublisher.java
Expand Up @@ -11,6 +11,8 @@
import hudson.model.AbstractProject;
import hudson.model.Action;
import hudson.model.BuildListener;
import hudson.model.DependecyDeclarer;
import hudson.model.DependencyGraph;
import hudson.model.Hudson;
import hudson.model.Item;
import hudson.security.AccessControlled;
Expand All @@ -25,7 +27,7 @@
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;

public class ProxyPublisher extends Recorder {
public class ProxyPublisher extends Recorder implements DependecyDeclarer {

private final String projectName;

Expand Down Expand Up @@ -86,6 +88,22 @@ public Collection<? extends Action> getProjectActions(AbstractProject<?, ?> proj
return actions;
}

/**
* Any of the publisher could support the DependecyDeclarer interface,
* so proxy will handle it as well.
* {@inheritDoc}
*/
public void buildDependencyGraph(AbstractProject project, DependencyGraph graph) {
AbstractProject<?, ?> templateProject = getProject();
if (templateProject != null) {
for (Publisher publisher : templateProject.getPublishersList().toList()) {
if (publisher instanceof DependecyDeclarer) {
((DependecyDeclarer)publisher).buildDependencyGraph(project, graph);
}
}
}
}

@Extension
public static class DescriptorImpl extends BuildStepDescriptor<Publisher> {

Expand Down

0 comments on commit bd6d7b7

Please sign in to comment.