Class ProjectLifecycleFactory<T extends ProjectLifecycle>

    • Field Detail

      • PROJECT_IS_RUNNABLE

        public static final java.util.function.Predicate<RuntimeProject> PROJECT_IS_RUNNABLE
        A Predicate that returns true if a Project is runnable.
    • Constructor Detail

      • ProjectLifecycleFactory

        public ProjectLifecycleFactory​(ProjectManagerBase projectManager)
    • Method Detail

      • getLifecycle

        public java.util.Optional<T> getLifecycle​(java.lang.String projectName)
        Get the ProjectLifecycle for projectName, if it exists.
        Parameters:
        projectName - the project name the lifecycle belongs to.
        Returns:
        the ProjectLifecycle for projectName, if it exists.
      • getLifecycles

        public final com.google.common.collect.ImmutableList<T> getLifecycles()
        Get an immutable copy of the current ProjectLifecycles.
        Returns:
        an immutable copy of the current ProjectLifecycles.
      • createProjectLifecycle

        public abstract T createProjectLifecycle​(RuntimeProject project)
        Create an instance of ProjectLifecycle that can manage runtime and lifecycle for project.
        Parameters:
        project - the RuntimeProject that will be run.
        Returns:
        a ProjectLifecycle that can manage runtime and lifecycle for project.
      • restartAll

        public void restartAll()
        We may need to restart all lifecycles of a type (such as scripting) if a module is installed, restarted or uninstalled. Most LifecycleFactories will not override this.
      • getResourceFilter

        protected abstract ResourceFilter getResourceFilter()
        Get the ResourceFilter to apply when getting matching resources this lifecycle is interested in.
        Returns:
        the ResourceFilter to apply when matching resources this lifecycle is interested in.
      • getProjectFilter

        public java.util.function.Predicate<RuntimeProject> getProjectFilter()
        Return a Predicate that indicates whether a project should have a ProjectLifecycle created for it.

        For example, if the project doesn't contain any resources of a certain type then this predicate could return false to avoid creating a lifecycle that doesn't actually have any resources to run.

        Should resources of an interesting type later get added the machinery of ProjectLifecycleFactory ensures a lifecycle will have a chance to be created at that time.

        Returns:
        a Predicate that indicates whether a project should have a ProjectLifecycle created for it.