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 java.lang.Object implements ExtensionRegistry, ExtensionRegistrarDefault, 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 MutableExtensionRegistrycreateRegistryFrom(MutableExtensionRegistry parentRegistry, java.util.List<java.lang.Class<? extends org.junit.jupiter.api.extension.Extension>> extensionTypes)Factory for creating and populating a new registry from a list of extension types and a parent registry.static MutableExtensionRegistrycreateRegistryWithDefaultExtensions(JupiterConfiguration configuration)Factory for creating and populating a new root registry with the default extensions.voidregisterExtension(org.junit.jupiter.api.extension.Extension extension, java.lang.Object source)Register the suppliedExtension, without checking if an extension of that type has already been registered.<E extends org.junit.jupiter.api.extension.Extension>
java.util.stream.Stream<E>stream(java.lang.Class<E> extensionType)Stream allExtensionsof 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_NAMEconfiguration parameter has been set totrue, extensions will be auto-detected using Java'sServiceLoadermechanism 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, java.util.List<java.lang.Class<? extends org.junit.jupiter.api.extension.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 org.junit.jupiter.api.extension.Extension> java.util.stream.Stream<E> stream(java.lang.Class<E> extensionType)
Description copied from interface:ExtensionRegistryStream allExtensionsof the specified type that are present in this registry or one of its ancestors.- Specified by:
streamin interfaceExtensionRegistry- Parameters:
extensionType- the type ofExtensionto stream- See Also:
ExtensionRegistry.getReversedExtensions(Class),ExtensionRegistry.getExtensions(Class)
-
registerExtension
public void registerExtension(org.junit.jupiter.api.extension.Extension extension, java.lang.Object source)Description copied from interface:ExtensionRegistrarRegister the suppliedExtension, without checking if an extension of that type has already been registered.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.- Specified by:
registerExtensionin interfaceExtensionRegistrar- Parameters:
extension- the extension to register; nevernullsource- the source of the extension; nevernull
-
-