Deprecate constructors and methods taking a character set name as a String, in favor of new variants taking a Charset. Change-Id: I616c601daf232fa17610dba1087fd902030d46ea Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>tags/v5.2.0.201811281532-m3
@@ -302,7 +302,7 @@ public class MergeAlgorithmTest { | |||
MergeResult r = new MergeAlgorithm().merge(RawTextComparator.DEFAULT, | |||
T(commonBase), T(ours), T(theirs)); | |||
ByteArrayOutputStream bo=new ByteArrayOutputStream(50); | |||
fmt.formatMerge(bo, r, "B", "O", "T", Constants.CHARACTER_ENCODING); | |||
fmt.formatMerge(bo, r, "B", "O", "T", UTF_8); | |||
return new String(bo.toByteArray(), UTF_8); | |||
} | |||
@@ -972,7 +972,7 @@ public class MergerTest extends RepositoryTestCase { | |||
merger.getMergeResults().get("file"); | |||
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { | |||
fmt.formatMerge(out, merger.getMergeResults().get("file"), | |||
"BASE", "OURS", "THEIRS", UTF_8.name()); | |||
"BASE", "OURS", "THEIRS", UTF_8); | |||
String expected = "<<<<<<< OURS\n" | |||
+ "1master\n" | |||
+ "=======\n" |
@@ -45,6 +45,7 @@ package org.eclipse.jgit.merge; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import java.nio.charset.Charset; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
@@ -63,7 +64,7 @@ public class MergeFormatter { | |||
* that are LF-separated lines. | |||
* | |||
* @param out | |||
* the outputstream where to write the textual presentation | |||
* the output stream where to write the textual presentation | |||
* @param res | |||
* the merge result which should be presented | |||
* @param seqName | |||
@@ -72,15 +73,46 @@ public class MergeFormatter { | |||
* " or ">>>>>>> " conflict markers. The | |||
* names for the sequences are given in this list | |||
* @param charsetName | |||
* the name of the characterSet used when writing conflict | |||
* the name of the character set used when writing conflict | |||
* metadata | |||
* @throws java.io.IOException | |||
* @deprecated Use | |||
* {@link #formatMerge(OutputStream, MergeResult, List, Charset)} | |||
* instead. | |||
*/ | |||
@Deprecated | |||
public void formatMerge(OutputStream out, MergeResult<RawText> res, | |||
List<String> seqName, String charsetName) throws IOException { | |||
new MergeFormatterPass(out, res, seqName, charsetName).formatMerge(); | |||
} | |||
/** | |||
* Formats the results of a merge of {@link org.eclipse.jgit.diff.RawText} | |||
* objects in a Git conformant way. This method also assumes that the | |||
* {@link org.eclipse.jgit.diff.RawText} objects being merged are line | |||
* oriented files which use LF as delimiter. This method will also use LF to | |||
* separate chunks and conflict metadata, therefore it fits only to texts | |||
* that are LF-separated lines. | |||
* | |||
* @param out | |||
* the output stream where to write the textual presentation | |||
* @param res | |||
* the merge result which should be presented | |||
* @param seqName | |||
* When a conflict is reported each conflicting range will get a | |||
* name. This name is following the "<<<<<<< | |||
* " or ">>>>>>> " conflict markers. The | |||
* names for the sequences are given in this list | |||
* @param charset | |||
* the character set used when writing conflict metadata | |||
* @throws java.io.IOException | |||
* @since 5.2 | |||
*/ | |||
public void formatMerge(OutputStream out, MergeResult<RawText> res, | |||
List<String> seqName, Charset charset) throws IOException { | |||
new MergeFormatterPass(out, res, seqName, charset).formatMerge(); | |||
} | |||
/** | |||
* Formats the results of a merge of exactly two | |||
* {@link org.eclipse.jgit.diff.RawText} objects in a Git conformant way. | |||
@@ -100,17 +132,51 @@ public class MergeFormatter { | |||
* @param theirsName | |||
* the name ranges from theirs should get | |||
* @param charsetName | |||
* the name of the characterSet used when writing conflict | |||
* the name of the character set used when writing conflict | |||
* metadata | |||
* @throws java.io.IOException | |||
* @deprecated use | |||
* {@link #formatMerge(OutputStream, MergeResult, String, String, String, Charset)} | |||
* instead. | |||
*/ | |||
@SuppressWarnings("unchecked") | |||
@Deprecated | |||
public void formatMerge(OutputStream out, MergeResult res, String baseName, | |||
String oursName, String theirsName, String charsetName) throws IOException { | |||
formatMerge(out, res, baseName, oursName, theirsName, | |||
Charset.forName(charsetName)); | |||
} | |||
/** | |||
* Formats the results of a merge of exactly two | |||
* {@link org.eclipse.jgit.diff.RawText} objects in a Git conformant way. | |||
* This convenience method accepts the names for the three sequences (base | |||
* and the two merged sequences) as explicit parameters and doesn't require | |||
* the caller to specify a List | |||
* | |||
* @param out | |||
* the {@link java.io.OutputStream} where to write the textual | |||
* presentation | |||
* @param res | |||
* the merge result which should be presented | |||
* @param baseName | |||
* the name ranges from the base should get | |||
* @param oursName | |||
* the name ranges from ours should get | |||
* @param theirsName | |||
* the name ranges from theirs should get | |||
* @param charset | |||
* the character set used when writing conflict metadata | |||
* @throws java.io.IOException | |||
* @since 5.2 | |||
*/ | |||
@SuppressWarnings("unchecked") | |||
public void formatMerge(OutputStream out, MergeResult res, String baseName, | |||
String oursName, String theirsName, Charset charset) | |||
throws IOException { | |||
List<String> names = new ArrayList<>(3); | |||
names.add(baseName); | |||
names.add(oursName); | |||
names.add(theirsName); | |||
formatMerge(out, res, names, charsetName); | |||
formatMerge(out, res, names, charset); | |||
} | |||
} |
@@ -46,6 +46,7 @@ package org.eclipse.jgit.merge; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import java.nio.charset.Charset; | |||
import java.util.List; | |||
import org.eclipse.jgit.diff.RawText; | |||
@@ -59,19 +60,58 @@ class MergeFormatterPass { | |||
private final List<String> seqName; | |||
private final String charsetName; | |||
private final Charset charset; | |||
private final boolean threeWayMerge; | |||
private String lastConflictingName; // is set to non-null whenever we are in | |||
// a conflict | |||
/** | |||
* @deprecated use | |||
* {@link #MergeFormatterPass(OutputStream, MergeResult, List, Charset)} | |||
* instead. | |||
* @param out | |||
* the {@link java.io.OutputStream} where to write the textual | |||
* presentation | |||
* @param res | |||
* the merge result which should be presented | |||
* @param seqName | |||
* When a conflict is reported each conflicting range will get a | |||
* name. This name is following the "<<<<<<< | |||
* " or ">>>>>>> " conflict markers. The | |||
* names for the sequences are given in this list | |||
* @param charsetName | |||
* the name of the character set used when writing conflict | |||
* metadata | |||
*/ | |||
@Deprecated | |||
MergeFormatterPass(OutputStream out, MergeResult<RawText> res, List<String> seqName, | |||
String charsetName) { | |||
this(out, res, seqName, Charset.forName(charsetName)); | |||
} | |||
/** | |||
* | |||
* @param out | |||
* the {@link java.io.OutputStream} where to write the textual | |||
* presentation | |||
* @param res | |||
* the merge result which should be presented | |||
* @param seqName | |||
* When a conflict is reported each conflicting range will get a | |||
* name. This name is following the "<<<<<<< | |||
* " or ">>>>>>> " conflict markers. The | |||
* names for the sequences are given in this list | |||
* @param charset | |||
* the character set used when writing conflict metadata | |||
*/ | |||
MergeFormatterPass(OutputStream out, MergeResult<RawText> res, | |||
List<String> seqName, Charset charset) { | |||
this.out = new EolAwareOutputStream(out); | |||
this.res = res; | |||
this.seqName = seqName; | |||
this.charsetName = charsetName; | |||
this.charset = charset; | |||
this.threeWayMerge = (res.getSequences().size() == 3); | |||
} | |||
@@ -133,7 +173,7 @@ class MergeFormatterPass { | |||
private void writeln(String s) throws IOException { | |||
out.beginln(); | |||
out.write((s + "\n").getBytes(charsetName)); //$NON-NLS-1$ | |||
out.write((s + "\n").getBytes(charset)); //$NON-NLS-1$ | |||
} | |||
private void writeLine(RawText seq, int i) throws IOException { |
@@ -46,10 +46,10 @@ | |||
*/ | |||
package org.eclipse.jgit.merge; | |||
import static java.nio.charset.StandardCharsets.UTF_8; | |||
import static org.eclipse.jgit.diff.DiffAlgorithm.SupportedAlgorithm.HISTOGRAM; | |||
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_DIFF_SECTION; | |||
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_ALGORITHM; | |||
import static org.eclipse.jgit.lib.Constants.CHARACTER_ENCODING; | |||
import static org.eclipse.jgit.lib.Constants.OBJ_BLOB; | |||
import java.io.BufferedOutputStream; | |||
@@ -1026,7 +1026,7 @@ public class ResolveMerger extends ThreeWayMerger { | |||
db != null ? nonNullRepo().getDirectory() : null, inCoreLimit); | |||
try { | |||
new MergeFormatter().formatMerge(buf, result, | |||
Arrays.asList(commitNames), CHARACTER_ENCODING); | |||
Arrays.asList(commitNames), UTF_8); | |||
buf.close(); | |||
} catch (IOException e) { | |||
buf.destroy(); |