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

java.lang.Object
hudson.model.AbstractDescribableImpl<BranchProjectFactory<?,?>>
jenkins.branch.BranchProjectFactory<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 Details

    • BranchProjectFactory

      public BranchProjectFactory()
  • Method Details

    • 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.
    • save

      public void save() throws IOException
      Specified by:
      save in interface Saveable
      Throws:
      IOException - if issues saving.
    • 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.
    • asProject

      @NonNull public P asProject(@NonNull Item item)
      Casts the Item into the project type supported by this BranchProjectFactory.
      Parameters:
      item - the Item.
      Returns:
      the Item upcast to the project type 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
    • getDescriptor

      @NonNull public BranchProjectFactoryDescriptor getDescriptor()
      Specified by:
      getDescriptor in interface Describable<P extends Job<P,R> & TopLevelItem>
      Overrides:
      getDescriptor in class AbstractDescribableImpl<BranchProjectFactory<?,?>>
    • 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