diff --git a/core/src/main/java/hudson/matrix/MatrixProject.java b/core/src/main/java/hudson/matrix/MatrixProject.java index 2c05c72394..6390db6839 100644 --- a/core/src/main/java/hudson/matrix/MatrixProject.java +++ b/core/src/main/java/hudson/matrix/MatrixProject.java @@ -66,9 +66,10 @@ import hudson.util.CopyOnWriteMap; import hudson.util.DescribableList; import hudson.util.FormValidation; import hudson.util.FormValidation.Kind; -import jenkins.model.ModelObjectWithChildren; import jenkins.scm.SCMCheckoutStrategyDescriptor; import net.sf.json.JSONObject; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.stapler.HttpResponse; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; @@ -897,9 +898,14 @@ public class MatrixProject extends AbstractProject im } public DescriptorImpl getDescriptor() { - return DESCRIPTOR; + return (DescriptorImpl)Jenkins.getInstance().getDescriptorOrDie(getClass()); } + /** + * Descriptor is instantiated as a field purely for backward compatibility. + * Do not do this in your code. Put @Extension on your DescriptorImpl class instead. + */ + @Restricted(NoExternalUse.class) @Extension public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl(); diff --git a/core/src/main/java/hudson/model/FreeStyleProject.java b/core/src/main/java/hudson/model/FreeStyleProject.java index 8eacc0ae75..11ce99a30b 100644 --- a/core/src/main/java/hudson/model/FreeStyleProject.java +++ b/core/src/main/java/hudson/model/FreeStyleProject.java @@ -25,6 +25,8 @@ package hudson.model; import hudson.Extension; import jenkins.model.Jenkins; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; /** * Free-style software project. @@ -50,9 +52,14 @@ public class FreeStyleProject extends Project i } public DescriptorImpl getDescriptor() { - return DESCRIPTOR; + return (DescriptorImpl)Jenkins.getInstance().getDescriptorOrDie(getClass()); } + /** + * Descriptor is instantiated as a field purely for backward compatibility. + * Do not do this in your code. Put @Extension on your DescriptorImpl class instead. + */ + @Restricted(NoExternalUse.class) @Extension(ordinal=1000) public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl(); diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java index 86d8a32d5a..d297541c63 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java @@ -33,7 +33,6 @@ import hudson.Functions; import hudson.Indenter; import hudson.Plugin; import hudson.Util; -import hudson.matrix.MatrixConfiguration; import hudson.maven.local_repo.DefaultLocalRepositoryLocator; import hudson.maven.local_repo.LocalRepositoryLocator; import hudson.maven.local_repo.PerJobLocalRepositoryLocator; @@ -107,6 +106,8 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.maven.model.building.ModelBuildingRequest; import hudson.tasks.Mailer; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.stapler.HttpResponse; import org.kohsuke.stapler.HttpResponses; import org.kohsuke.stapler.QueryParameter; @@ -1040,7 +1041,7 @@ public class MavenModuleSet extends AbstractMavenProject type) throws Exception { JobPropertyImpl jp = new JobPropertyImpl("NeedleInPage"); Job project = (Job) jenkins.createProject(type, "job-test-case"); project.addProperty(jp); diff --git a/test/src/test/java/hudson/model/labels/LabelExpressionTest.java b/test/src/test/java/hudson/model/labels/LabelExpressionTest.java index 60c85d80a8..f2df9b9673 100644 --- a/test/src/test/java/hudson/model/labels/LabelExpressionTest.java +++ b/test/src/test/java/hudson/model/labels/LabelExpressionTest.java @@ -30,6 +30,7 @@ import hudson.model.AbstractProject; import hudson.model.BuildListener; import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; +import hudson.model.FreeStyleProject.DescriptorImpl; import hudson.model.Label; import hudson.model.Node.Mode; import hudson.slaves.DumbSlave; @@ -228,13 +229,15 @@ public class LabelExpressionTest extends HudsonTestCase { public void testFormValidation() throws Exception { executeOnServer(new Callable() { public Object call() throws Exception { + DescriptorImpl d = jenkins.getDescriptorByType(DescriptorImpl.class); + Label l = jenkins.getLabel("foo"); DumbSlave s = createSlave(l); - String msg = FreeStyleProject.DESCRIPTOR.doCheckAssignedLabelString("goo").renderHtml(); + String msg = d.doCheckAssignedLabelString("goo").renderHtml(); assertTrue(msg.contains("foo")); assertTrue(msg.contains("goo")); - msg = FreeStyleProject.DESCRIPTOR.doCheckAssignedLabelString("master && goo").renderHtml(); + msg = d.doCheckAssignedLabelString("master && goo").renderHtml(); assertTrue(msg.contains("foo")); assertTrue(msg.contains("goo")); return null;