Class AsIsFileService

java.lang.Object
org.eclipse.jgit.http.server.resolver.AsIsFileService

public class AsIsFileService extends Object
Controls access to bare files in a repository.

Older HTTP clients which do not speak the smart HTTP variant of the Git protocol fetch from a repository by directly getting its objects and pack files. This class, along with the http.getanyfile per-repository configuration setting, can be used by GitServlet to control whether or not these older clients are permitted to read these direct files.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final AsIsFileService
    Always throws ServiceNotEnabledException.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    access(jakarta.servlet.http.HttpServletRequest req, org.eclipse.jgit.lib.Repository db)
    Determine if access to any bare file of the repository is allowed.
    protected static boolean
    isEnabled(org.eclipse.jgit.lib.Repository db)
    Determine if http.getanyfile is enabled in the configuration.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DISABLED

      public static final AsIsFileService DISABLED
      Always throws ServiceNotEnabledException.
  • Constructor Details

    • AsIsFileService

      public AsIsFileService()
  • Method Details

    • isEnabled

      protected static boolean isEnabled(org.eclipse.jgit.lib.Repository db)
      Determine if http.getanyfile is enabled in the configuration.
      Parameters:
      db - the repository to check.
      Returns:
      false if http.getanyfile was explicitly set to false in the repository's configuration file; otherwise true.
    • access

      public void access(jakarta.servlet.http.HttpServletRequest req, org.eclipse.jgit.lib.Repository db) throws org.eclipse.jgit.transport.resolver.ServiceNotEnabledException, org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException
      Determine if access to any bare file of the repository is allowed.

      This method silently succeeds if the request is allowed, or fails by throwing a checked exception if access should be denied.

      The default implementation of this method checks http.getanyfile, throwing ServiceNotEnabledException if it was explicitly set to false, and otherwise succeeding silently.

      Parameters:
      req - current HTTP request, in case information from the request may help determine the access request.
      db - the repository the request would obtain a bare file from.
      Throws:
      org.eclipse.jgit.transport.resolver.ServiceNotEnabledException - bare file access is not allowed on the target repository, by any user, for any reason.
      org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException - bare file access is not allowed for this HTTP request and repository, such as due to a permission error.