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;