~ubuntu-branches/ubuntu/saucy/jenkins/saucy-proposed

« back to all changes in this revision

Viewing changes to core/src/main/java/hudson/model/Project.java

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-08-13 12:35:19 UTC
  • mfrom: (1.1.13)
  • Revision ID: package-import@ubuntu.com-20130813123519-tizgfxcr70trl7r0
Tags: 1.509.2+dfsg-1
* New upstream release (Closes: #706725):
  - d/control: Update versioned BD's:
    * jenkins-executable-war >= 1.28.
    * jenkins-instance-identity >= 1.3.
    * libjenkins-remoting-java >= 2.23.
    * libjenkins-winstone-java >= 0.9.10-jenkins-44.
    * libstapler-java >= 1.207.
    * libjenkins-json-java >= 2.4-jenkins-1.
    * libstapler-adjunct-timeline-java >= 1.4.
    * libstapler-adjunct-codemirror-java >= 1.2.
    * libmaven-hpi-plugin-java >= 1.93.
    * libjenkins-xstream-java >= 1.4.4-jenkins-3.
  - d/maven.rules: Map to older version of animal-sniffer-maven-plugin.
  - Add patch for compatibility with guava >= 0.14.
  - Add patch to exclude asm4 dependency via jnr-posix.
  - Fixes the following security vulnerabilities:
    CVE-2013-2034, CVE-2013-2033, CVE-2013-2034, CVE-2013-1808
* d/patches/*: Switch to using git patch-queue for managing patches.
* De-duplicate jars between libjenkins-java and jenkins-external-job-monitor
  (Closes: #701163):
  - d/control: Add dependency between jenkins-external-job-monitor ->
    libjenkins-java.
  - d/rules: 
    Drop installation of jenkins-core in jenkins-external-job-monitor.
  - d/jenkins-external-job-monitor.{links,install}: Link to jenkins-core
    in /usr/share/java instead of included version.
* Wait longer for jenkins to stop during restarts (Closes: #704848):
  - d/jenkins.init: Re-sync init script from upstream codebase.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
package hudson.model;
26
26
 
27
27
import hudson.Util;
28
 
import hudson.diagnosis.OldDataMonitor;
29
28
import hudson.model.Descriptor.FormException;
30
29
import hudson.tasks.BuildStep;
31
 
import hudson.tasks.BuildStepDescriptor;
32
30
import hudson.tasks.BuildWrapper;
33
31
import hudson.tasks.BuildWrappers;
34
32
import hudson.tasks.Builder;
61
59
    /**
62
60
     * List of active {@link Builder}s configured for this project.
63
61
     */
64
 
    private DescribableList<Builder,Descriptor<Builder>> builders =
65
 
            new DescribableList<Builder,Descriptor<Builder>>(this);
 
62
    private DescribableList<Builder,Descriptor<Builder>> builders;
66
63
 
67
64
    /**
68
65
     * List of active {@link Publisher}s configured for this project.
69
66
     */
70
 
    private DescribableList<Publisher,Descriptor<Publisher>> publishers =
71
 
            new DescribableList<Publisher,Descriptor<Publisher>>(this);
 
67
    private DescribableList<Publisher,Descriptor<Publisher>> publishers;
72
68
 
73
69
    /**
74
70
     * List of active {@link BuildWrapper}s configured for this project.
75
71
     */
76
 
    private DescribableList<BuildWrapper,Descriptor<BuildWrapper>> buildWrappers =
77
 
            new DescribableList<BuildWrapper,Descriptor<BuildWrapper>>(this);
 
72
    private DescribableList<BuildWrapper,Descriptor<BuildWrapper>> buildWrappers;
78
73
 
79
74
    /**
80
75
     * Creates a new project.
86
81
    @Override
87
82
    public void onLoad(ItemGroup<? extends Item> parent, String name) throws IOException {
88
83
        super.onLoad(parent, name);
89
 
 
90
 
        if (buildWrappers==null) {
91
 
            // it didn't exist in < 1.64
92
 
            buildWrappers = new DescribableList<BuildWrapper, Descriptor<BuildWrapper>>(this);
93
 
            OldDataMonitor.report(this, "1.64");
94
 
        }
95
 
        builders.setOwner(this);
96
 
        publishers.setOwner(this);
97
 
        buildWrappers.setOwner(this);
 
84
        getBuildersList().setOwner(this);
 
85
        getPublishersList().setOwner(this);
 
86
        getBuildWrappersList().setOwner(this);
98
87
    }
99
88
 
100
89
    public AbstractProject<?, ?> asProject() {
102
91
    }
103
92
 
104
93
    public List<Builder> getBuilders() {
105
 
        return builders.toList();
 
94
        return getBuildersList().toList();
106
95
    }
107
96
 
108
97
    /**
111
100
     *      Use {@link #getPublishersList()} instead.
112
101
     */
113
102
    public Map<Descriptor<Publisher>,Publisher> getPublishers() {
114
 
        return publishers.toMap();
 
103
        return getPublishersList().toMap();
115
104
    }
116
105
 
117
 
    public DescribableList<Builder,Descriptor<Builder>> getBuildersList() {
 
106
    public synchronized DescribableList<Builder,Descriptor<Builder>> getBuildersList() {
 
107
        if (builders == null) {
 
108
            builders = new DescribableList<Builder,Descriptor<Builder>>(this);
 
109
        }
118
110
        return builders;
119
111
    }
120
112
    
121
 
    public DescribableList<Publisher,Descriptor<Publisher>> getPublishersList() {
 
113
    public synchronized DescribableList<Publisher,Descriptor<Publisher>> getPublishersList() {
 
114
        if (publishers == null) {
 
115
            publishers = new DescribableList<Publisher,Descriptor<Publisher>>(this);
 
116
        }
122
117
        return publishers;
123
118
    }
124
119
 
125
120
    public Map<Descriptor<BuildWrapper>,BuildWrapper> getBuildWrappers() {
126
 
        return buildWrappers.toMap();
 
121
        return getBuildWrappersList().toMap();
127
122
    }
128
123
 
129
 
    public DescribableList<BuildWrapper, Descriptor<BuildWrapper>> getBuildWrappersList() {
 
124
    public synchronized DescribableList<BuildWrapper, Descriptor<BuildWrapper>> getBuildWrappersList() {
 
125
        if (buildWrappers == null) {
 
126
            buildWrappers = new DescribableList<BuildWrapper,Descriptor<BuildWrapper>>(this);
 
127
        }
130
128
        return buildWrappers;
131
129
    }
132
130
 
135
133
        final Set<ResourceActivity> activities = new HashSet<ResourceActivity>();
136
134
 
137
135
        activities.addAll(super.getResourceActivities());
138
 
        activities.addAll(Util.filter(builders,ResourceActivity.class));
139
 
        activities.addAll(Util.filter(publishers,ResourceActivity.class));
140
 
        activities.addAll(Util.filter(buildWrappers,ResourceActivity.class));
 
136
        activities.addAll(Util.filter(getBuildersList(),ResourceActivity.class));
 
137
        activities.addAll(Util.filter(getPublishersList(),ResourceActivity.class));
 
138
        activities.addAll(Util.filter(getBuildWrappersList(),ResourceActivity.class));
141
139
 
142
140
        return activities;
143
141
    }
149
147
     *      Use {@code getPublishersList().add(x)}
150
148
     */
151
149
    public void addPublisher(Publisher buildStep) throws IOException {
152
 
        publishers.add(buildStep);
 
150
        getPublishersList().add(buildStep);
153
151
    }
154
152
 
155
153
    /**
159
157
     *      Use {@code getPublishersList().remove(x)}
160
158
     */
161
159
    public void removePublisher(Descriptor<Publisher> descriptor) throws IOException {
162
 
        publishers.remove(descriptor);
 
160
        getPublishersList().remove(descriptor);
163
161
    }
164
162
 
165
163
    public Publisher getPublisher(Descriptor<Publisher> descriptor) {
166
 
        for (Publisher p : publishers) {
 
164
        for (Publisher p : getPublishersList()) {
167
165
            if(p.getDescriptor()==descriptor)
168
166
                return p;
169
167
        }
171
169
    }
172
170
 
173
171
    protected void buildDependencyGraph(DependencyGraph graph) {
174
 
        publishers.buildDependencyGraph(this,graph);
175
 
        builders.buildDependencyGraph(this,graph);
176
 
        buildWrappers.buildDependencyGraph(this,graph);
 
172
        getPublishersList().buildDependencyGraph(this,graph);
 
173
        getBuildersList().buildDependencyGraph(this,graph);
 
174
        getBuildWrappersList().buildDependencyGraph(this,graph);
177
175
    }
178
176
 
179
177
    @Override
198
196
 
199
197
        JSONObject json = req.getSubmittedForm();
200
198
 
201
 
        buildWrappers.rebuild(req,json, BuildWrappers.getFor(this));
202
 
        builders.rebuildHetero(req,json, Builder.all(), "builder");
203
 
        publishers.rebuildHetero(req, json, Publisher.all(), "publisher");
 
199
        getBuildWrappersList().rebuild(req,json, BuildWrappers.getFor(this));
 
200
        getBuildersList().rebuildHetero(req,json, Builder.all(), "builder");
 
201
        getPublishersList().rebuildHetero(req, json, Publisher.all(), "publisher");
204
202
    }
205
203
 
206
204
    @Override