1 /* 2 * Copyright (C) 2009-2010, Google Inc. and others 3 * 4 * This program and the accompanying materials are made available under the 5 * terms of the Eclipse Distribution License v. 1.0 which is available at 6 * https://www.eclipse.org/org/documents/edl-v10.php. 7 * 8 * SPDX-License-Identifier: BSD-3-Clause 9 */ 10 11 package org.eclipse.jgit.transport.resolver; 12 13 import org.eclipse.jgit.errors.RepositoryNotFoundException; 14 import org.eclipse.jgit.lib.Repository; 15 import org.eclipse.jgit.transport.ServiceMayNotContinueException; 16 17 /** 18 * Locate a Git {@link org.eclipse.jgit.lib.Repository} by name from the URL. 19 * 20 * @param <C> 21 * type of connection. 22 */ 23 public interface RepositoryResolver<C> { 24 /** 25 * Resolver configured to open nothing. 26 */ 27 RepositoryResolver<?> NONE = (Object req, String name) -> { 28 throw new RepositoryNotFoundException(name); 29 }; 30 31 /** 32 * Locate and open a reference to a {@link Repository}. 33 * <p> 34 * The caller is responsible for closing the returned Repository. 35 * 36 * @param req 37 * the current request, may be used to inspect session state 38 * including cookies or user authentication. 39 * @param name 40 * name of the repository, as parsed out of the URL. 41 * @return the opened repository instance, never null. 42 * @throws RepositoryNotFoundException 43 * the repository does not exist or the name is incorrectly 44 * formatted as a repository name. 45 * @throws ServiceNotAuthorizedException 46 * the repository may exist, but HTTP access is not allowed 47 * without authentication, i.e. this corresponds to an HTTP 401 48 * Unauthorized. 49 * @throws ServiceNotEnabledException 50 * the repository may exist, but HTTP access is not allowed on the 51 * target repository, for the current user. 52 * @throws ServiceMayNotContinueException 53 * the repository may exist, but HTTP access is not allowed for 54 * the current request. The exception message contains a detailed 55 * message that should be shown to the user. 56 */ 57 Repository open(C req, String name) throws RepositoryNotFoundException, 58 ServiceNotAuthorizedException, ServiceNotEnabledException, 59 ServiceMayNotContinueException; 60 }