Interface PolymorphicDomainObjectContainer<T>

    • Method Detail

      • create

        <U extends T> U create​(java.lang.String name,
                               java.lang.Class<U> type)
                        throws InvalidUserDataException
        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 created
        type - 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

        <U extends T> U maybeCreate​(java.lang.String name,
                                    java.lang.Class<U> type)
                             throws InvalidUserDataException
        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 created
        type - 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 type
        java.lang.ClassCastException - if a domain object with the specified name exists with a different type
      • create

        <U extends T> U create​(java.lang.String name,
                               java.lang.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 created
        type - the type of the domain object to be created
        configuration - 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

        <U extends TNamedDomainObjectContainer<U> containerWithType​(java.lang.Class<U> type)
        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.
      • register

        <U extends TNamedDomainObjectProvider<U> register​(java.lang.String name,
                                                            java.lang.Class<U> type,
                                                            Action<? super U> configurationAction)
                                                     throws InvalidUserDataException
        Defines a new object, which will be created and configured when it is required. A object is 'required' when the object is located using query methods such as NamedDomainObjectCollection.getByName(String) or when Provider.get() is called on the return value of this method.

        It is generally more efficient to use this method instead of create(String, Class, Action) or create(String, Class), as those methods will eagerly create and configure the object, regardless of whether that object is required for the current build or not. This method, on the other hand, will defer creation and configuration until required.

        Type Parameters:
        U - The object type
        Parameters:
        name - The name of the object.
        type - The object type.
        configurationAction - The action to run to configure the object. This action runs when the object is required.
        Returns:
        A Provider whose value will be the object, when queried.
        Throws:
        InvalidUserDataException - If a object with the given name already exists in this project.
        Since:
        4.10
      • register

        <U extends TNamedDomainObjectProvider<U> register​(java.lang.String name,
                                                            java.lang.Class<U> type)
                                                     throws InvalidUserDataException
        Defines a new object, which will be created when it is required. A object is 'required' when the object is located using query methods such as NamedDomainObjectCollection.getByName(String) or when Provider.get() is called on the return value of this method.

        It is generally more efficient to use this method instead of create(String, Class, Action) or create(String, Class), as those methods will eagerly create and configure the object, regardless of whether that object is required for the current build or not. This method, on the other hand, will defer creation until required.

        Type Parameters:
        U - The object type
        Parameters:
        name - The name of the object.
        type - The object type.
        Returns:
        A Provider whose value will be the object, when queried.
        Throws:
        InvalidUserDataException - If a object with the given name already exists in this project.
        Since:
        4.10