Class ExtensionRegistry
- java.lang.Object
-
- org.junit.jupiter.engine.extension.ExtensionRegistry
-
@API(status=INTERNAL, since="5.0") public class ExtensionRegistry extends Object
AnExtensionRegistryholds all registered extensions (i.e. instances ofExtension) for a givenNode.A registry has a reference to its parent registry, and all lookups are performed first in the current registry itself and then recursively in its ancestors.
- Since:
- 5.0
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ExtensionRegistrycreateRegistryFrom(ExtensionRegistry parentRegistry, List<Class<? extends Extension>> extensionTypes)Factory for creating and populating a new registry from a list of extension types and a parent registry.static ExtensionRegistrycreateRegistryWithDefaultExtensions(ConfigurationParameters configParams)Factory for creating and populating a new root registry with the default extensions.<E extends Extension>
List<E>getExtensions(Class<E> extensionType)Get allExtensionsof the specified type that are present in this registry or one of its ancestors.<E extends Extension>
List<E>getReversedExtensions(Class<E> extensionType)Get allExtensionsof the specified type that are present in this registry or one of its ancestors, in reverse order.voidregisterExtension(Extension extension, Object source)Register the suppliedExtensionin this registry, without checking if an extension of that type already exists in this registry.<E extends Extension>
Stream<E>stream(Class<E> extensionType)Stream allExtensionsof the specified type that are present in this registry or one of its ancestors.
-
-
-
Method Detail
-
createRegistryWithDefaultExtensions
public static ExtensionRegistry createRegistryWithDefaultExtensions(ConfigurationParameters configParams)
Factory for creating and populating a new root registry with the default extensions.If the
Constants.EXTENSIONS_AUTODETECTION_ENABLED_PROPERTY_NAMEconfiguration parameter has been set totrue, extensions will be auto-detected using Java'sServiceLoadermechanism and automatically registered after the default extensions.- Parameters:
configParams- configuration parameters used to retrieve the extension auto-detection flag; nevernull- Returns:
- a new
ExtensionRegistry; nevernull
-
createRegistryFrom
public static ExtensionRegistry createRegistryFrom(ExtensionRegistry parentRegistry, List<Class<? extends Extension>> extensionTypes)
Factory for creating and populating a new registry from a list of extension types and a parent registry.- Parameters:
parentRegistry- the parent registryextensionTypes- the types of extensions to be registered in the new registry- Returns:
- a new
ExtensionRegistry; nevernull
-
stream
public <E extends Extension> Stream<E> stream(Class<E> extensionType)
Stream allExtensionsof the specified type that are present in this registry or one of its ancestors.- Parameters:
extensionType- the type ofExtensionto stream- See Also:
getReversedExtensions(Class),getExtensions(Class)
-
getExtensions
public <E extends Extension> List<E> getExtensions(Class<E> extensionType)
Get allExtensionsof the specified type that are present in this registry or one of its ancestors.- Parameters:
extensionType- the type ofExtensionto get- See Also:
getReversedExtensions(Class),stream(Class)
-
getReversedExtensions
public <E extends Extension> List<E> getReversedExtensions(Class<E> extensionType)
Get allExtensionsof the specified type that are present in this registry or one of its ancestors, in reverse order.- Parameters:
extensionType- the type ofExtensionto get- See Also:
getExtensions(Class),stream(Class)
-
registerExtension
public void registerExtension(Extension extension, Object source)
Register the suppliedExtensionin this registry, without checking if an extension of that type already exists in this registry.Semantics for Source
If an extension is registered declaratively via
@ExtendWith, thesourceand theextensionshould be the same object. However, if an extension is registered programmatically via@RegisterExtension, thesourceobject should be theFieldthat is annotated with@RegisterExtension. Similarly, if an extension is registered programmatically as a lambda expression or method reference, thesourceobject should be the underlyingMethodthat implements the extension API.- Parameters:
extension- the extension to registersource- the source of the extension
-
-