Class BranchProjectFactory<P extends Job<P,​R> & TopLevelItem,​R extends Run<P,​R>>

  • Type Parameters:
    P - the type of the branch projects.
    R - the type of the builds of the branch projects.
    All Implemented Interfaces:
    ExtensionPoint, Describable<BranchProjectFactory<?,​?>>, Saveable

    public abstract class BranchProjectFactory<P extends Job<P,​R> & TopLevelItem,​R extends Run<P,​R>>
    extends AbstractDescribableImpl<BranchProjectFactory<?,​?>>
    implements Saveable, ExtensionPoint
    Creates instances of the branch projects for a specific Branch and also provides some utility methods for updating the branch specific projects. Please define a 'getting-started' view for a subclass, if you would like to provide specific information to the user how to get started using the type of project factory. This view is displayed when there are no subfolders found.
    Author:
    Stephen Connolly
    • Constructor Detail

      • BranchProjectFactory

        public BranchProjectFactory()
    • Method Detail

      • newInstance

        public abstract P newInstance​(Branch branch)
        Creates a new branch project. Item.getName() must match Branch.getEncodedName().
        Parameters:
        branch - the branch.
        Returns:
        the new branch project instance.
      • setOwner

        public void setOwner​(MultiBranchProject<P,​R> owner)
        Sets the owner.
        Parameters:
        owner - the owner.
      • getOwner

        public MultiBranchProject<P,​R> getOwner()
        Gets the current owner.
        Returns:
        the current owner.
      • getBranch

        @NonNull
        public abstract Branch getBranch​(@NonNull
                                         P project)
        Gets the Branch that a specific project was configured for.
        Parameters:
        project - the project; should assume isProject(hudson.model.Item) has already been tested on it
        Returns:
        the Branch that the project was configured for.
      • setBranch

        @NonNull
        public abstract P setBranch​(@NonNull
                                    P project,
                                    @NonNull
                                    Branch branch)
        Replace the Branch that a project was configured for with a new updated Branch.
        Parameters:
        project - the project.
        branch - the new branch.
        Returns:
        the project.
      • isProject

        public abstract boolean isProject​(@CheckForNull
                                          Item item)
        Test if the specified Item is the branch project type supported by this BranchProjectFactory
        Parameters:
        item - the Item
        Returns:
        true if and only if the Item is a project supported by this BranchProjectFactory.
      • getRevision

        @CheckForNull
        public jenkins.scm.api.SCMRevision getRevision​(P project)
        Gets the SCMRevision that the project was last built for.
        Parameters:
        project - the project.
        Returns:
        the SCMRevision of the last build.
      • setRevisionHash

        public void setRevisionHash​(P project,
                                    jenkins.scm.api.SCMRevision revision)
                             throws IOException
        Sets the SCMRevision that the project was last built for.
        Parameters:
        project - the project.
        revision - the SCMRevision of the last build.
        Throws:
        IOException - if there was an issue persisting the details.
      • getLastSeenRevision

        @CheckForNull
        public jenkins.scm.api.SCMRevision getLastSeenRevision​(P project)
        Gets the SCMRevision that the project was last seen for.
        Parameters:
        project - the project.
        Returns:
        the SCMRevision of the last seen.
      • setLastSeenRevisionHash

        public void setLastSeenRevisionHash​(P project,
                                            jenkins.scm.api.SCMRevision revision)
                                     throws IOException
        Sets the SCMRevision that the project was last seen
        Parameters:
        project - the project.
        revision - the SCMRevision of the last build.
        Throws:
        IOException - if there was an issue persisting the details.
      • decorate

        public P decorate​(P project)
        Decorates the project in with all the JobDecorator instances. NOTE: This method should suppress saving the project and only affect the in-memory state. NOTE: Override if the default strategy is not appropriate for the specific project type.
        Parameters:
        project - the project.
        Returns:
        the project for nicer method chaining
      • getProjectClass

        @NonNull
        public final Class<P> getProjectClass()
        Returns the base class of the projects that are produced by this factory.
        Returns:
        the base class of the projects that are produced by this factory.
        Since:
        2.0