Class DescriptorList<T extends Describable<T>>
- All Implemented Interfaces:
Iterable<Descriptor<T>>,Collection<Descriptor<T>>,List<Descriptor<T>>
Descriptors.
Before Hudson 1.286, this class stored Descriptors directly, but since 1.286,
this class works in two modes that are rather different.
One is the compatibility mode, where it works just like pre 1.286 and store everything locally,
disconnected from any of the additions of 1.286. This is necessary for situations where
DescriptorList is owned by pre-1.286 plugins where this class doesn't know 'T'.
In this mode, legacy is non-null but type is null.
The other mode is the new mode, where the Descriptors are actually stored in ExtensionList
(see Jenkins.getDescriptorList(Class)) and this class acts as a view to it. This enables
bi-directional interoperability — both descriptors registered automatically and descriptors registered
manually are visible from both DescriptorList and ExtensionList. In this mode,
legacy is null but type is non-null.
The number of plugins that define extension points are limited, so we expect to be able to remove
this dual behavior first, then when everyone stops using DescriptorList, we can remove this class
altogether.
- Since:
- 1.161
- Author:
- Kohsuke Kawaguchi
-
Field Summary
Fields inherited from class java.util.AbstractList
modCount -
Constructor Summary
ConstructorsConstructorDescriptionDescriptorList(Descriptor<T>... descriptors) Deprecated.As of 1.286.DescriptorList(Class<T> type) Creates aDescriptorListbacked byExtensionList. -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(int index, Descriptor<T> element) Deprecated.As of 1.286.booleanadd(Descriptor<T> d) Deprecated.As of 1.286.Deprecated.Underspecified what the parameter is.findByName(String id) Finds a descriptor by theirDescriptor.getId().get(int index) iterator()voidload(Class<? extends Describable> c) No-op method used to force the class initialization of the given class.newInstanceFromRadioList(net.sf.json.JSONObject config) Creates a new instance of aDescribablefrom the structured form submission data posted by a radio button group.newInstanceFromRadioList(net.sf.json.JSONObject parent, String name) Creates a new instance of aDescribablefrom the structured form submission data posted by a radio button group.booleanintsize()Methods inherited from class java.util.AbstractList
addAll, clear, equals, hashCode, indexOf, lastIndexOf, listIterator, listIterator, remove, removeRange, set, subListMethods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, removeAll, retainAll, toArray, toArray, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArrayMethods inherited from interface java.util.List
addAll, contains, containsAll, isEmpty, removeAll, replaceAll, retainAll, sort, spliterator, toArray, toArray
-
Constructor Details
-
DescriptorList
Deprecated.As of 1.286. UseDescriptorList(Class)instead.This will create a legacyDescriptorListthat is disconnected fromExtensionList. -
DescriptorList
Creates aDescriptorListbacked byExtensionList.
-
-
Method Details
-
get
- Specified by:
getin interfaceList<T extends Describable<T>>- Specified by:
getin classAbstractList<Descriptor<T extends Describable<T>>>
-
size
public int size()- Specified by:
sizein interfaceCollection<T extends Describable<T>>- Specified by:
sizein interfaceList<T extends Describable<T>>- Specified by:
sizein classAbstractCollection<Descriptor<T extends Describable<T>>>
-
iterator
- Specified by:
iteratorin interfaceCollection<T extends Describable<T>>- Specified by:
iteratorin interfaceIterable<T extends Describable<T>>- Specified by:
iteratorin interfaceList<T extends Describable<T>>- Overrides:
iteratorin classAbstractList<Descriptor<T extends Describable<T>>>
-
add
Deprecated.As of 1.286. PutExtensionon your descriptor to have it auto-registered, instead of registering a descriptor manually.- Specified by:
addin interfaceCollection<T extends Describable<T>>- Specified by:
addin interfaceList<T extends Describable<T>>- Overrides:
addin classAbstractList<Descriptor<T extends Describable<T>>>
-
add
Deprecated.As of 1.286. PutExtensionon your descriptor to have it auto-registered, instead of registering a descriptor manually.- Specified by:
addin interfaceList<T extends Describable<T>>- Overrides:
addin classAbstractList<Descriptor<T extends Describable<T>>>
-
remove
- Specified by:
removein interfaceCollection<T extends Describable<T>>- Specified by:
removein interfaceList<T extends Describable<T>>- Overrides:
removein classAbstractCollection<Descriptor<T extends Describable<T>>>
-
newInstanceFromRadioList
@CheckForNull public T newInstanceFromRadioList(net.sf.json.JSONObject config) throws Descriptor.FormException Creates a new instance of aDescribablefrom the structured form submission data posted by a radio button group.- Parameters:
config- Submitted configuration for Radio List- Returns:
- New instance.
nullif none was selected in the radio list or if the value is filtered by aDescriptorVisibilityFilter - Throws:
Descriptor.FormException- Data submission error
-
newInstanceFromRadioList
@CheckForNull public T newInstanceFromRadioList(net.sf.json.JSONObject parent, String name) throws Descriptor.FormException Creates a new instance of aDescribablefrom the structured form submission data posted by a radio button group.- Parameters:
parent- JSON, which contains the configuration entry for the radio listname- Name of the configuration entry for the radio list- Returns:
- New instance.
nullif none was selected in the radio list or if the value is filtered by aDescriptorVisibilityFilter - Throws:
Descriptor.FormException- Data submission error
-
findByName
Finds a descriptor by theirDescriptor.getId().- Parameters:
id- Descriptor ID- Returns:
- If none is found,
nullis returned.
-
load
No-op method used to force the class initialization of the given class. The class initialization in turn is expected to put the descriptor into theDescriptorList.This is necessary to resolve the class initialization order problem. Often a
DescriptorListis defined in the base class, and when it tries to initialize itself by listing up descriptors of known sub-classes, they might not be available in time.- Since:
- 1.162
-
find
Deprecated.Underspecified what the parameter is.Descriptor.getId()? ADescribableclass name?Finds the descriptor that has the matching fully-qualified class name.
-