Class MutableExtensionRegistry
- java.lang.Object
-
- org.junit.jupiter.engine.extension.MutableExtensionRegistry
-
- All Implemented Interfaces:
ExtensionRegistrar
,ExtensionRegistry
@API(status=INTERNAL, since="5.5") public class MutableExtensionRegistry extends Object implements ExtensionRegistry, ExtensionRegistrar
Default, mutable implementation ofExtensionRegistry
.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.5
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static MutableExtensionRegistry
createRegistryFrom(MutableExtensionRegistry 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 MutableExtensionRegistry
createRegistryWithDefaultExtensions(JupiterConfiguration configuration)
Factory for creating and populating a new root registry with the default extensions.void
registerExtension(Extension extension, Object source)
Register the suppliedExtension
, without checking if an extension of that type already exists.<E extends Extension>
Stream<E>stream(Class<E> extensionType)
Stream allExtensions
of the specified type that are present in this registry or one of its ancestors.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.junit.jupiter.engine.extension.ExtensionRegistry
getExtensions, getReversedExtensions
-
-
-
-
Method Detail
-
createRegistryWithDefaultExtensions
public static MutableExtensionRegistry createRegistryWithDefaultExtensions(JupiterConfiguration configuration)
Factory for creating and populating a new root registry with the default extensions.If the
Constants.EXTENSIONS_AUTODETECTION_ENABLED_PROPERTY_NAME
configuration parameter has been set totrue
, extensions will be auto-detected using Java'sServiceLoader
mechanism and automatically registered after the default extensions.- Parameters:
configuration
- configuration parameters used to retrieve the extension auto-detection flag; nevernull
- Returns:
- a new
ExtensionRegistry
; nevernull
-
createRegistryFrom
public static MutableExtensionRegistry createRegistryFrom(MutableExtensionRegistry 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)
Description copied from interface:ExtensionRegistry
Stream allExtensions
of the specified type that are present in this registry or one of its ancestors.- Specified by:
stream
in interfaceExtensionRegistry
- Parameters:
extensionType
- the type ofExtension
to stream- See Also:
ExtensionRegistry.getReversedExtensions(Class)
,ExtensionRegistry.getExtensions(Class)
-
registerExtension
public void registerExtension(Extension extension, Object source)
Description copied from interface:ExtensionRegistrar
Register the suppliedExtension
, without checking if an extension of that type already exists.Semantics for Source
If an extension is registered declaratively via
@ExtendWith
, thesource
and theextension
should be the same object. However, if an extension is registered programmatically via@RegisterExtension
, thesource
object should be theField
that is annotated with@RegisterExtension
. Similarly, if an extension is registered programmatically as a lambda expression or method reference, thesource
object should be the underlyingMethod
that implements the extension API.- Specified by:
registerExtension
in interfaceExtensionRegistrar
- Parameters:
extension
- the extension to register; nevernull
source
- the source of the extension; nevernull
-
-