Package org.gradle.api
Interface PolymorphicDomainObjectContainer<T>
- Type Parameters:
T
- the (base) type of domain objects in the container
- All Superinterfaces:
Collection<T>
,org.gradle.util.Configurable<NamedDomainObjectContainer<T>>
,DomainObjectCollection<T>
,Iterable<T>
,NamedDomainObjectCollection<T>
,NamedDomainObjectContainer<T>
,NamedDomainObjectSet<T>
,Set<T>
- All Known Subinterfaces:
AuthenticationContainer
,ExtensiblePolymorphicDomainObjectContainer<T>
,NativeToolChainRegistry
,PlatformContainer
,PlayDistributionContainer
,PublicationContainer
,Repositories
,TaskContainer
@Incubating
public interface PolymorphicDomainObjectContainer<T>
extends NamedDomainObjectContainer<T>
A
NamedDomainObjectContainer
that allows to create domain objects with different types.-
Method Summary
Modifier and TypeMethodDescription<U extends T>
NamedDomainObjectContainer<U>containerWithType
(Class<U> type) Creates a regular container that wraps the polymorphic container presenting all elements of a specified type.<U extends T>
UCreates a domain object with the specified name and type, and adds it to the container.<U extends T>
UCreates a domain object with the specified name and type, adds it to the container, and configures it with the specified action.<U extends T>
UmaybeCreate
(String name, Class<U> type) Looks for an item with the given name and type, creating and adding it to this container if it does not exist.Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
Methods inherited from interface org.gradle.api.DomainObjectCollection
all, all, whenObjectAdded, whenObjectAdded, whenObjectRemoved, whenObjectRemoved, withType, withType
Methods inherited from interface org.gradle.api.NamedDomainObjectCollection
add, addAll, addRule, addRule, addRule, findByName, getAsMap, getAt, getByName, getByName, getByName, getNamer, getNames, getRules
Methods inherited from interface org.gradle.api.NamedDomainObjectContainer
configure, create, create, create, maybeCreate
Methods inherited from interface org.gradle.api.NamedDomainObjectSet
findAll, matching, matching, withType
-
Method Details
-
create
Creates a domain object with the specified name and type, and adds it to the container.- Type Parameters:
U
- the type of the domain object to be created- Parameters:
name
- the name of the domain object to be createdtype
- the type of the domain object to be created- Returns:
- the created domain object
- Throws:
InvalidUserDataException
- if a domain object with the specified name already exists or the container does not support creating a domain object with the specified type
-
maybeCreate
Looks for an item with the given name and type, creating and adding it to this container if it does not exist.- Type Parameters:
U
- the type of the domain object to be created- Parameters:
name
- the name of the domain object to be createdtype
- the type of the domain object to be created- Returns:
- the found or created domain object, never
null
. - Throws:
InvalidUserDataException
- if the container does not support creating a domain object with the specified typeClassCastException
- if a domain object with the specified name exists with a different type
-
create
<U extends T> U create(String name, Class<U> type, Action<? super U> configuration) throws InvalidUserDataException Creates a domain object with the specified name and type, adds it to the container, and configures it with the specified action.- Type Parameters:
U
- the type of the domain object to be created- Parameters:
name
- the name of the domain object to be createdtype
- the type of the domain object to be createdconfiguration
- an action for configuring the domain object- Returns:
- the created domain object
- Throws:
InvalidUserDataException
- if a domain object with the specified name already exists or the container does not support creating a domain object with the specified type
-
containerWithType
Creates a regular container that wraps the polymorphic container presenting all elements of a specified type.- Type Parameters:
U
- the type of the container elements- Parameters:
type
- the type of the container elements- Returns:
- a
NamedDomainObjectContainer
providing access to elements of type U.
-