Interface ExtensiblePolymorphicDomainObjectContainer<T>
- Type Parameters:
T- the (base) container element type
- All Superinterfaces:
Collection<T>, org.gradle.util.Configurable<NamedDomainObjectContainer<T>>, DomainObjectCollection<T>, Iterable<T>, NamedDomainObjectCollection<T>, NamedDomainObjectContainer<T>, org.gradle.api.internal.rules.NamedDomainObjectFactoryRegistry<T>, NamedDomainObjectSet<T>, PolymorphicDomainObjectContainer<T>, Set<T>
- All Known Subinterfaces:
NativeToolChainRegistry, PlatformContainer, PublicationContainer
@Incubating
public interface ExtensiblePolymorphicDomainObjectContainer<T>
extends PolymorphicDomainObjectContainer<T>, org.gradle.api.internal.rules.NamedDomainObjectFactoryRegistry<T>
A
PolymorphicDomainObjectContainer that can be extended at runtime to
create elements of new types.-
Method Summary
Modifier and TypeMethodDescription<U extends T>
voidregisterBinding(Class<U> type, Class<? extends U> implementationType) Registers a binding from the specified "public" domain object type to the specified implementation type.<U extends T>
voidregisterFactory(Class<U> type, Closure<? extends U> factory) Registers a factory for creating elements of the specified type.<U extends T>
voidregisterFactory(Class<U> type, NamedDomainObjectFactory<? extends U> factory) Registers a factory for creating elements of the specified type.Methods inherited from interface Collection
parallelStream, removeIf, stream, toArrayMethods inherited from interface DomainObjectCollection
all, all, whenObjectAdded, whenObjectAdded, whenObjectRemoved, whenObjectRemoved, withType, withTypeMethods inherited from interface NamedDomainObjectCollection
add, addAll, addRule, addRule, addRule, findByName, getAsMap, getAt, getByName, getByName, getByName, getNamer, getNames, getRulesMethods inherited from interface NamedDomainObjectContainer
configure, create, create, create, maybeCreateMethods inherited from interface NamedDomainObjectSet
findAll, matching, matching, withTypeMethods inherited from interface PolymorphicDomainObjectContainer
containerWithType, create, create, maybeCreate
-
Method Details
-
registerFactory
Registers a factory for creating elements of the specified type. Typically, the specified type is an interface type.- Specified by:
registerFactoryin interfaceorg.gradle.api.internal.rules.NamedDomainObjectFactoryRegistry<T>- Type Parameters:
U- the type of objects created by the factory- Parameters:
type- the type of objects created by the factoryfactory- the factory to register- Throws:
IllegalArgumentException- if the specified type is not a subtype of the container element type
-
registerFactory
Registers a factory for creating elements of the specified type. Typically, the specified type is an interface type.- Type Parameters:
U- the type of objects created by the factory- Parameters:
type- the type of objects created by the factoryfactory- the factory to register- Throws:
IllegalArgumentException- if the specified type is not a subtype of the container element type
-
registerBinding
Registers a binding from the specified "public" domain object type to the specified implementation type. Whenever the container is asked to create an element with the binding's public type, it will instantiate the binding's implementation type. If the implementation type has a constructor annotated withInject, its arguments will be injected.In general, registering a binding is preferable over implementing and registering a factory.
- Type Parameters:
U- a public domain object type- Parameters:
type- a public domain object typeimplementationType- the corresponding implementation type
-