From 46472e809a877eca6bcf4e70d8a6bfcfea73f443 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 19 Mar 2011 22:24:02 -0700 Subject: [PATCH] when Descriptor is manually added/removed, ExtensionList needs to be updated. --- .../main/java/hudson/DescriptorExtensionList.java | 13 +++++++++++++ core/src/main/java/hudson/ExtensionList.java | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/hudson/DescriptorExtensionList.java b/core/src/main/java/hudson/DescriptorExtensionList.java index 90b201575e..f2a2de24ad 100644 --- a/core/src/main/java/hudson/DescriptorExtensionList.java +++ b/core/src/main/java/hudson/DescriptorExtensionList.java @@ -133,6 +133,19 @@ public class DescriptorExtensionList, D extends Descrip return null; } + @Override + public boolean add(D d) { + boolean r = super.add(d); + hudson.getExtensionList(Descriptor.class).add(d); + return r; + } + + @Override + public boolean remove(Object o) { + hudson.getExtensionList(Descriptor.class).remove(o); + return super.remove(o); + } + /** * {@link #load()} in the descriptor is not a real load activity, so locking against "this" is enough. */ diff --git a/core/src/main/java/hudson/ExtensionList.java b/core/src/main/java/hudson/ExtensionList.java index 22fc9fb53d..be6e7f85a6 100644 --- a/core/src/main/java/hudson/ExtensionList.java +++ b/core/src/main/java/hudson/ExtensionList.java @@ -156,7 +156,7 @@ public class ExtensionList extends AbstractList { } @Override - public synchronized T remove(int index) { + public final synchronized T remove(int index) { T t = get(index); remove(t); return t;