Interface ObjectFactory
-
@Incubating public interface ObjectFactory
A factory for creating various kinds of model objects.An instance of the factory can be injected into a task or plugin by annotating a public constructor or property getter method with
javax.inject.Inject. It is also available viaProject.getObjects().- Since:
- 4.0
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description DirectoryPropertydirectoryProperty()Creates a newDirectoryPropertythat uses the project directory to resolve relative paths, if required.RegularFilePropertyfileProperty()Creates a newRegularFilePropertythat uses the project directory to resolve relative paths, if required.<T> ListProperty<T>listProperty(Class<T> elementType)<K,V>
MapProperty<K,V>mapProperty(Class<K> keyType, Class<V> valueType)<T extends Named>
Tnamed(Class<T> type, String name)Creates a simple immutableNamedobject of the given type and name.<T> TnewInstance(Class<? extends T> type, Object... parameters)Create a new instance of T, usingparametersas the construction parameters.<T> Property<T>property(Class<T> valueType)Creates aPropertyimplementation to hold values of the given type.<T> SetProperty<T>setProperty(Class<T> elementType)SourceDirectorySetsourceDirectorySet(String name, String displayName)Creates aSourceDirectorySet.
-
-
-
Method Detail
-
named
<T extends Named> T named(Class<T> type, String name) throws ObjectInstantiationException
Creates a simple immutableNamedobject of the given type and name.The given type can be an interface that extends
Namedor an abstract class that 'implements'Named. An abstract class, if provided:- Must provide a zero-args constructor that is not private.
- Must not define or inherit any instance fields.
- Should not provide an implementation for
Named.getName()and should define this method as abstract. Any implementation will be overridden. - Must not define or inherit any other abstract methods.
An interface, if provided, must not define or inherit any other methods.
Objects created using this method are not decorated or extensible.
- Throws:
ObjectInstantiationException- On failure to create the new instance.- Since:
- 4.0
-
newInstance
<T> T newInstance(Class<? extends T> type, Object... parameters) throws ObjectInstantiationException
Create a new instance of T, usingparametersas the construction parameters.The type must be a non-abstract class.
Objects created using this method are decorated and extensible, meaning that they have DSL support mixed in and can be extended using the `extensions` property, similar to the
Projectobject.An @Inject annotation is required on any constructor that accepts parameters because JSR-330 semantics for dependency injection are used. In addition to those parameters provided as an argument to this method, the following services are also available for injection:
- Throws:
ObjectInstantiationException- On failure to create the new instance.- Since:
- 4.2
-
sourceDirectorySet
SourceDirectorySet sourceDirectorySet(String name, String displayName)
Creates aSourceDirectorySet.- Parameters:
name- A short name for the set.displayName- A human consumable display name for the set.- Since:
- 5.0
-
property
<T> Property<T> property(Class<T> valueType)
Creates aPropertyimplementation to hold values of the given type. The property has no initial value.For certain types, there are more specialized property factory methods available:
- For
Listproperties, you should uselistProperty(Class). - For
Setproperties, you should usesetProperty(Class). - For
Mapproperties, you should usemapProperty(Class, Class). - For
Directoryproperties, you should usedirectoryProperty(). - For
RegularFileproperties, you should usefileProperty().
- Parameters:
valueType- The type of the property.- Returns:
- The property. Never returns null.
- Since:
- 4.3
- For
-
listProperty
<T> ListProperty<T> listProperty(Class<T> elementType)
Creates aListPropertyimplementation to hold aListof the given element typeT. The property has an empty list as its initial value.The implementation will return immutable
Listvalues from its query methods.- Type Parameters:
T- The type of element.- Parameters:
elementType- The type of element.- Returns:
- The property. Never returns null;
- Since:
- 4.3
-
setProperty
<T> SetProperty<T> setProperty(Class<T> elementType)
Creates aSetPropertyimplementation to hold aSetof the given element typeT. The property has an empty set as its initial value.The implementation will return immutable
Setvalues from its query methods.- Type Parameters:
T- The type of element.- Parameters:
elementType- The type of element.- Returns:
- The property. Never returns null;
- Since:
- 4.5
-
mapProperty
<K,V> MapProperty<K,V> mapProperty(Class<K> keyType, Class<V> valueType)
Creates aMapPropertyimplementation to hold aMapof the given key typeKand value typeV. The property has an empty map as its initial value.The implementation will return immutable
Mapvalues from its query methods.- Type Parameters:
K- the type of key.V- the type of value.- Parameters:
keyType- the type of key.valueType- the type of value.- Returns:
- the property. Never returns null.
- Since:
- 5.1
-
directoryProperty
DirectoryProperty directoryProperty()
Creates a newDirectoryPropertythat uses the project directory to resolve relative paths, if required. The property has no initial value.- Since:
- 5.0
-
fileProperty
RegularFileProperty fileProperty()
Creates a newRegularFilePropertythat uses the project directory to resolve relative paths, if required. The property has no initial value.- Since:
- 5.0
-
-