/* * Copyright (C) 2008, Google Inc. * Copyright (C) 2008, Marek Zawirski * Copyright (C) 2008, Shawn O. Pearce and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.transport; import java.io.OutputStream; import java.util.Collection; import java.util.Set; import org.eclipse.jgit.errors.TransportException; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ProgressMonitor; import org.eclipse.jgit.lib.Ref; /** * Base helper class for fetch connection implementations. Provides some common * typical structures and methods used during fetch connection. *

* Implementors of fetch over pack-based protocols should consider using * {@link BasePackFetchConnection} instead. *

*/ abstract class BaseFetchConnection extends BaseConnection implements FetchConnection { /** {@inheritDoc} */ @Override public final void fetch(final ProgressMonitor monitor, final Collection want, final Set have) throws TransportException { fetch(monitor, want, have, null); } /** {@inheritDoc} */ @Override public final void fetch(final ProgressMonitor monitor, final Collection want, final Set have, OutputStream out) throws TransportException { markStartedOperation(); doFetch(monitor, want, have); } /** * {@inheritDoc} * * Default implementation of {@link FetchConnection#didFetchIncludeTags()} - * returning false. */ @Override public boolean didFetchIncludeTags() { return false; } /** * Implementation of {@link #fetch(ProgressMonitor, Collection, Set)} * without checking for multiple fetch. * * @param monitor * as in {@link #fetch(ProgressMonitor, Collection, Set)} * @param want * as in {@link #fetch(ProgressMonitor, Collection, Set)} * @param have * as in {@link #fetch(ProgressMonitor, Collection, Set)} * @throws org.eclipse.jgit.errors.TransportException * as in {@link #fetch(ProgressMonitor, Collection, Set)}, but * implementation doesn't have to care about multiple * {@link #fetch(ProgressMonitor, Collection, Set)} calls, as it * is checked in this class. */ protected abstract void doFetch(final ProgressMonitor monitor, final Collection want, final Set have) throws TransportException; }