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.lib.Repository; 14 import org.eclipse.jgit.transport.UploadPack; 15 16 /** 17 * Create and configure {@link org.eclipse.jgit.transport.UploadPack} service 18 * instance. 19 * 20 * @param <C> 21 * the connection type 22 */ 23 public interface UploadPackFactory<C> { 24 /** 25 * A factory disabling the UploadPack service for all repositories. 26 */ 27 UploadPackFactory<?> DISABLED = (Object req, Repository db) -> { 28 throw new ServiceNotEnabledException(); 29 }; 30 31 /** 32 * Create and configure a new UploadPack instance for a repository. 33 * 34 * @param req 35 * current request, in case information from the request may help 36 * configure the UploadPack instance. 37 * @param db 38 * the repository the upload would read from. 39 * @return the newly configured UploadPack instance, must not be null. 40 * @throws ServiceNotEnabledException 41 * this factory refuses to create the instance because it is not 42 * allowed on the target repository, by any user. 43 * @throws ServiceNotAuthorizedException 44 * this factory refuses to create the instance for this HTTP 45 * request and repository, such as due to a permission error. 46 */ 47 UploadPack create(C req, Repository db) throws ServiceNotEnabledException, 48 ServiceNotAuthorizedException; 49 }