ReceiveCommandErrorHandler.java
- /*
- * Copyright (c) 2019, Google LLC 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
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- package org.eclipse.jgit.transport;
- import java.io.IOException;
- import java.util.List;
- import org.eclipse.jgit.errors.MissingObjectException;
- import org.eclipse.jgit.transport.ReceiveCommand.Result;
- /**
- * Exception handler for processing {@link ReceiveCommand}.
- *
- * @since 5.7
- */
- public interface ReceiveCommandErrorHandler {
- /**
- * Handle an exception thrown while validating the new commit ID.
- *
- * @param cmd
- * offending command
- * @param e
- * exception thrown
- */
- default void handleNewIdValidationException(ReceiveCommand cmd,
- IOException e) {
- cmd.setResult(Result.REJECTED_MISSING_OBJECT, cmd.getNewId().name());
- }
- /**
- * Handle an exception thrown while validating the old commit ID.
- *
- * @param cmd
- * offending command
- * @param e
- * exception thrown
- */
- default void handleOldIdValidationException(ReceiveCommand cmd,
- IOException e) {
- cmd.setResult(Result.REJECTED_MISSING_OBJECT, cmd.getOldId().name());
- }
- /**
- * Handle an exception thrown while checking if the update is fast-forward.
- *
- * @param cmd
- * offending command
- * @param e
- * exception thrown
- */
- default void handleFastForwardCheckException(ReceiveCommand cmd,
- IOException e) {
- if (e instanceof MissingObjectException) {
- cmd.setResult(Result.REJECTED_MISSING_OBJECT, e.getMessage());
- } else {
- cmd.setResult(Result.REJECTED_OTHER_REASON);
- }
- }
- /**
- * Handle an exception thrown while checking if the update is fast-forward.
- *
- * @param cmds
- * commands being processed
- * @param e
- * exception thrown
- */
- default void handleBatchRefUpdateException(List<ReceiveCommand> cmds,
- IOException e) {
- for (ReceiveCommand cmd : cmds) {
- if (cmd.getResult() == Result.NOT_ATTEMPTED) {
- cmd.reject(e);
- }
- }
- }
- }