| /* |
| * Copyright (C) 2018-2021, Andre Bossert <andre.bossert@siemens.com> |
| * |
| * 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.internal.diffmergetool; |
| |
| import org.eclipse.jgit.util.FS.ExecutionResult; |
| import org.eclipse.jgit.util.SystemReader; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| /** |
| * Tool exception for differentiation. |
| * |
| */ |
| public class ToolException extends Exception { |
| |
| private final static Logger LOG = LoggerFactory |
| .getLogger(ToolException.class); |
| |
| private final ExecutionResult result; |
| |
| private final boolean commandExecutionError; |
| |
| /** |
| * the serial version UID |
| */ |
| private static final long serialVersionUID = 1L; |
| |
| /** |
| * |
| */ |
| public ToolException() { |
| this(null, null, false); |
| } |
| |
| /** |
| * @param message |
| * the exception message |
| */ |
| public ToolException(String message) { |
| this(message, null, false); |
| } |
| |
| /** |
| * @param message |
| * the exception message |
| * @param result |
| * the execution result |
| * @param commandExecutionError |
| * is command execution error happened ? |
| */ |
| public ToolException(String message, ExecutionResult result, |
| boolean commandExecutionError) { |
| super(message); |
| this.result = result; |
| this.commandExecutionError = commandExecutionError; |
| } |
| |
| /** |
| * @param message |
| * the exception message |
| * @param cause |
| * the cause for throw |
| */ |
| public ToolException(String message, Throwable cause) { |
| super(message, cause); |
| result = null; |
| commandExecutionError = false; |
| } |
| |
| /** |
| * @param cause |
| * the cause for throw |
| */ |
| public ToolException(Throwable cause) { |
| super(cause); |
| result = null; |
| commandExecutionError = false; |
| } |
| |
| /** |
| * @return true if result is valid, false else |
| */ |
| public boolean isResult() { |
| return result != null; |
| } |
| |
| /** |
| * @return the execution result |
| */ |
| public ExecutionResult getResult() { |
| return result; |
| } |
| |
| /** |
| * @return true if command execution error appears, false otherwise |
| */ |
| public boolean isCommandExecutionError() { |
| return commandExecutionError; |
| } |
| |
| /** |
| * @return the result Stderr |
| */ |
| public String getResultStderr() { |
| if (result == null) { |
| return ""; //$NON-NLS-1$ |
| } |
| try { |
| return new String(result.getStderr().toByteArray(), |
| SystemReader.getInstance().getDefaultCharset()); |
| } catch (Exception e) { |
| LOG.warn("Failed to retrieve standard error output", e); //$NON-NLS-1$ |
| } |
| return ""; //$NON-NLS-1$ |
| } |
| |
| /** |
| * @return the result Stdout |
| */ |
| public String getResultStdout() { |
| if (result == null) { |
| return ""; //$NON-NLS-1$ |
| } |
| try { |
| return new String(result.getStdout().toByteArray(), |
| SystemReader.getInstance().getDefaultCharset()); |
| } catch (Exception e) { |
| LOG.warn("Failed to retrieve standard output", e); //$NON-NLS-1$ |
| } |
| return ""; //$NON-NLS-1$ |
| } |
| |
| } |