Class AbstractScm

java.lang.Object
com.atlassian.bitbucket.scm.AbstractScm
All Implemented Interfaces:
Scm

public abstract class AbstractScm extends Object implements Scm
Convenience implementation of Scm that returns null for all of the optional contract members. Required members have no default implementation.

Derived classes should provide their supported features to the constructor. The nullary constructor assumes the SCM doesn't support any of the optional features.

SCM implementors are strongly encouraged to use this base class for their Scm implementation. As new features are added SCMs built on this base class will better retain cross-version support because it will provide null implementations of new optional members.

  • Constructor Details

    • AbstractScm

      protected AbstractScm()
    • AbstractScm

      protected AbstractScm(@Nonnull Set<com.atlassian.bitbucket.scm.ScmFeature> features)
  • Method Details

    • getCommandBuilderFactory

      public PluginCommandBuilderFactory getCommandBuilderFactory()
      Description copied from interface: Scm
      Retrieves a PluginCommandBuilderFactory, used to create command builders for custom SCM commands.

      Implementation Note: This method is optional. SCMs which do not support a ScmCommandBuilder may return null.

      Specified by:
      getCommandBuilderFactory in interface Scm
      Returns:
      a command builder factory, or null if the SCM does not support command builders
      See Also:
    • getCompareCommandFactory

      public PluginCompareCommandFactory getCompareCommandFactory()
      Description copied from interface: Scm
      Retrieves a PluginCompareCommandFactory, used to create commands tailored for comparing refs.

      Implementation Note: This method is optional. SCMs which do not support comparing refs may return null.

      Specified by:
      getCompareCommandFactory in interface Scm
      Returns:
      a compare command factory, or null if the SCM does not support it
      See Also:
    • getFeatures

      @Nonnull public Set<com.atlassian.bitbucket.scm.ScmFeature> getFeatures()
      Description copied from interface: Scm
      Retrieves the features that are supported by this SCM.

      Since the system relies on optional features to provide some functionality, like branch compare and pull requests, it relies on this set to disable functionality that requires features the SCM doesn't provide. Similarly, plugin developers can use the returned features to control which optional features they try to use, rather than checking for null or handling UnsupportedOperationExceptions.

      Specified by:
      getFeatures in interface Scm
      Returns:
      the set of optional features this SCM supports, which may be empty but never null
    • getPullRequestCommandFactory

      public PluginPullRequestCommandFactory getPullRequestCommandFactory()
      Description copied from interface: Scm
      Retrieves a PluginPullRequestCommandFactory, used to create commands tailored for use supporting pull requests. Repositories using an SCM which implements this method will have the ability to create, view and merge pull requests.

      Implementation Note: This method is optional. SCMs which do not support pull requests may return null. Repositories using such SCMs will not be able to create pull requests.

      Specified by:
      getPullRequestCommandFactory in interface Scm
      Returns:
      a pull request command factory, or null if the SCM does not support pull requests
      See Also:
    • getRefCommandFactory

      public PluginRefCommandFactory getRefCommandFactory()
      Description copied from interface: Scm
      Retrieves a PluginRefCommandFactory, used to create commands tailored for creating branches and tags.

      Implementation Note: This method is optional. SCMs which do not support mutable refs may return null. Repositories using such SCMs will not be able create branches and tags.

      Specified by:
      getRefCommandFactory in interface Scm
      Returns:
      a plugin ref command factory
      See Also:
      • ScmFeature.REFS