| /******************************************************************************* |
| * Copyright (c) 2004, 2011 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.compare; |
| |
| import java.io.InputStream; |
| import java.io.OutputStream; |
| |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| |
| /** |
| * This interface defines a single operation for performing a three-way merge on three |
| * input streams. The merged result is written to an output stream. |
| * <p> |
| * Clients must implement this interface when contributing new mergers to the |
| * <code>org.eclipse.compare.streamMergers</code> extension point. |
| * </p> |
| * @deprecated Clients should use <code>org.eclipse.team.core.mapping.IStorageMerger</code> instead. |
| * @since 3.0 |
| */ |
| @Deprecated |
| public interface IStreamMerger { |
| |
| /** |
| * Indicates the successful completion of the merge operation (value <code>IStatus.OK</code>) |
| */ |
| public static final int OK= IStatus.OK; |
| |
| /** |
| * Indicates that a change conflict prevented the merge from successful completion (value <code>1</code>) |
| */ |
| public static final int CONFLICT= 1; |
| |
| /** |
| * Status code describing an internal error (value <code>2</code>) |
| */ |
| public static final int INTERNAL_ERROR= 2; |
| |
| /** |
| * Performs a merge operation on the given input streams and writes the merge result to the output stream. |
| * On success a status <code>IStatus.OK</code> is returned, on error a status <code>IStatus.ERROR</code>. |
| * If the merge operation cannot deal with conflicts, the code of the error status has the value <code>IStreamMerger.CONFLICT</code>. |
| * For text oriented mergers the encoding for the input and output streams is honored. |
| * It is the responsibility of callers to close input and output streams. |
| * |
| * @param output the byte stream to which the merge result is written; the merger will not close the stream |
| * @param outputEncoding the encoding to use when writing to the output stream |
| * @param ancestor the byte stream from which the common ancestor is read |
| * @param ancestorEncoding the encoding of the ancestor input byte stream |
| * @param target the byte stream containing the target of the merge |
| * @param targetEncoding the encoding of the target input byte stream |
| * @param other the byte stream containing the target of the merge |
| * @param otherEncoding the encoding of the other input byte stream |
| * @param monitor reports progress of the merge operation |
| * @return returns the completion status of the operation |
| */ |
| IStatus merge(OutputStream output, String outputEncoding, |
| InputStream ancestor, String ancestorEncoding, |
| InputStream target, String targetEncoding, |
| InputStream other, String otherEncoding, |
| IProgressMonitor monitor); |
| } |