1 /* 2 * Copyright (C) 2020 Thomas Wolf <thomas.wolf@paranor.ch> 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 package org.eclipse.jgit.transport.http; 11 12 import java.io.IOException; 13 import java.security.GeneralSecurityException; 14 15 import org.eclipse.jgit.annotations.NonNull; 16 17 /** 18 * A {@link HttpConnectionFactory} that supports client-side sessions that can 19 * maintain state and configure connections. 20 * 21 * @since 5.11 22 */ 23 public interface HttpConnectionFactory2 extends HttpConnectionFactory { 24 25 /** 26 * Creates a new {@link GitSession} instance that can be used with 27 * connections created by this {@link HttpConnectionFactory} instance. 28 * 29 * @return a new {@link GitSession} 30 */ 31 @NonNull 32 GitSession newSession(); 33 34 /** 35 * A {@code GitSession} groups the multiple HTTP connections 36 * {@link org.eclipse.jgit.transport.TransportHttp TransportHttp} uses for 37 * the requests it makes during a git fetch or push. A {@code GitSession} 38 * can maintain client-side HTTPS state and can configure individual 39 * connections. 40 */ 41 interface GitSession { 42 43 /** 44 * Configure a just created {@link HttpConnection}. 45 * 46 * @param connection 47 * to configure; created by the same 48 * {@link HttpConnectionFactory} instance 49 * @param sslVerify 50 * whether SSL is to be verified 51 * @return the configured {@connection} 52 * @throws IOException 53 * if the connection cannot be configured 54 * @throws GeneralSecurityException 55 * if the connection cannot be configured 56 */ 57 @NonNull 58 HttpConnection configure(@NonNull HttpConnection connection, 59 boolean sslVerify) throws IOException, GeneralSecurityException; 60 61 /** 62 * Closes the {@link GitSession}, releasing any internal state. 63 */ 64 void close(); 65 } 66 }