提交 67fc4c10 编写于 作者: S stephenconnolly

First stab at changes to core required to resolve Issue number: 878


git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@5113 71c3de6d-444a-0410-be80-ed276b4c234a
上级 df68fcfd
......@@ -484,7 +484,24 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
* List of necessary resources to perform the build of this project.
*/
public ResourceList getResourceList() {
return new ResourceList().w(getWorkspaceResource());
final Set<ResourceActivity> resourceActivities = getResourceActivities();
final List<ResourceList> resourceLists = new ArrayList<ResourceList>(1 + resourceActivities.size());
for (ResourceActivity activity : resourceActivities) {
if (activity != this && activity != null) {
// defensive infinite recursion and null check
resourceLists.add(activity.getResourceList());
}
}
resourceLists.add(new ResourceList().w(getWorkspaceResource()));
return ResourceList.union(resourceLists);
}
/**
* Set of child resource activities of the build of this project (override in child projects).
* @return The set of child resource activities of the build of this project.
*/
protected Set<ResourceActivity> getResourceActivities() {
return Collections.EMPTY_SET;
}
public boolean checkout(AbstractBuild build, Launcher launcher, BuildListener listener, File changelogFile) throws IOException {
......
......@@ -14,9 +14,7 @@ import org.kohsuke.stapler.StaplerResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.*;
/**
* Buildable software project.
......@@ -72,6 +70,29 @@ public abstract class Project<P extends Project<P,B>,B extends Build<P,B>>
return Descriptor.toMap(buildWrappers);
}
/** {@inheritDoc} */
@Override
protected Set<ResourceActivity> getResourceActivities() {
final Set<ResourceActivity> activities = new HashSet<ResourceActivity>();
activities.addAll(super.getResourceActivities());
for (Builder builder : builders) {
if (builder instanceof ResourceActivity) {
activities.add(ResourceActivity.class.cast(builder));
}
}
for (Publisher publisher : publishers) {
if (publisher instanceof ResourceActivity) {
activities.add(ResourceActivity.class.cast(publisher));
}
}
for (BuildWrapper buildWrapper : buildWrappers) {
if (buildWrapper instanceof ResourceActivity) {
activities.add(ResourceActivity.class.cast(buildWrapper));
}
}
return activities;
}
/**
* Adds a new {@link BuildStep} to this {@link Project} and saves the configuration.
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册