From b2f13179f53888156a6b03df8b2800461fb80be6 Mon Sep 17 00:00:00 2001 From: redsolo Date: Fri, 29 Aug 2008 12:33:01 +0000 Subject: [PATCH] [FIXED HUDSON-2289] Fixed so the page decorator is properly configured git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@11823 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/model/Hudson.java | 3 +++ .../main/java/hudson/model/PageDecorator.java | 6 +++-- .../pages/SystemConfigurationTestCase.java | 22 +++++++++++++++++++ .../PageDecoratorImpl/global.jelly | 6 ++++- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java index acc6176670..06f4be1708 100644 --- a/core/src/main/java/hudson/model/Hudson.java +++ b/core/src/main/java/hudson/model/Hudson.java @@ -1631,6 +1631,9 @@ public final class Hudson extends View implements ItemGroup, Node, for( JobPropertyDescriptor d : Jobs.PROPERTIES ) result &= configureDescriptor(req,json,d); + for( PageDecorator d : PageDecorator.ALL ) + result &= configureDescriptor(req,json,d); + for( JSONObject o : StructuredForm.toList(json,"plugin")) pluginManager.getPlugin(o.getString("name")).getPlugin().configure(o); diff --git a/core/src/main/java/hudson/model/PageDecorator.java b/core/src/main/java/hudson/model/PageDecorator.java index 0dd02b761a..83e83ebe3e 100644 --- a/core/src/main/java/hudson/model/PageDecorator.java +++ b/core/src/main/java/hudson/model/PageDecorator.java @@ -1,8 +1,10 @@ package hudson.model; +import java.util.ArrayList; +import java.util.List; + import hudson.ExtensionPoint; import hudson.Plugin; -import hudson.util.DescriptorList; /** * Participates in the rendering of HTML pages for all pages of Hudson. @@ -64,5 +66,5 @@ public abstract class PageDecorator extends Descriptor implements /** * All the registered instances. */ - public static final DescriptorList ALL = new DescriptorList(); + public static final List ALL = new ArrayList(); } diff --git a/test/src/test/java/hudson/pages/SystemConfigurationTestCase.java b/test/src/test/java/hudson/pages/SystemConfigurationTestCase.java index c2edcc5aee..f18a414c91 100644 --- a/test/src/test/java/hudson/pages/SystemConfigurationTestCase.java +++ b/test/src/test/java/hudson/pages/SystemConfigurationTestCase.java @@ -3,8 +3,13 @@ package hudson.pages; import static com.gargoylesoftware.htmlunit.WebAssert.*; import hudson.model.PageDecorator; +import net.sf.json.JSONObject; + import org.jvnet.hudson.test.HudsonTestCase; +import org.kohsuke.stapler.StaplerRequest; +import com.gargoylesoftware.htmlunit.html.HtmlButton; +import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class SystemConfigurationTestCase extends HudsonTestCase { @@ -27,19 +32,36 @@ public class SystemConfigurationTestCase extends HudsonTestCase { HtmlPage page = new WebClient().goTo("configure"); assertElementPresent(page, "hudson-pages-SystemConfigurationTestCase$PageDecoratorImpl"); + + HtmlForm form = page.getFormByName("config"); + form.getInputByName("_.decoratorId").setValueAttribute("this_is_a_profile"); + form.submit((HtmlButton)last(form.getHtmlElementsByTagName("button"))); + assertEquals("The decorator field was incorrect", "this_is_a_profile", pageDecoratorImpl.getDecoratorId()); } /** * PageDecorator for bug#2289 */ private static class PageDecoratorImpl extends PageDecorator { + private String decoratorId; + protected PageDecoratorImpl() { super(PageDecoratorImpl.class); } + @Override + public boolean configure(StaplerRequest req, JSONObject json) throws FormException { + decoratorId = json.getString("decoratorId"); + return true; + } + @Override public String getDisplayName() { return "PageDecoratorImpl"; } + + public String getDecoratorId() { + return decoratorId; + } } } diff --git a/test/src/test/resources/hudson/pages/SystemConfigurationTestCase/PageDecoratorImpl/global.jelly b/test/src/test/resources/hudson/pages/SystemConfigurationTestCase/PageDecoratorImpl/global.jelly index bed32eb6f1..fce23a681c 100644 --- a/test/src/test/resources/hudson/pages/SystemConfigurationTestCase/PageDecoratorImpl/global.jelly +++ b/test/src/test/resources/hudson/pages/SystemConfigurationTestCase/PageDecoratorImpl/global.jelly @@ -1,4 +1,8 @@ - + + + + + -- GitLab