diff --git a/src/main/java/util/PatchUtil.java b/src/main/java/util/PatchUtil.java index 2badc30..afc99b3 100644 --- a/src/main/java/util/PatchUtil.java +++ b/src/main/java/util/PatchUtil.java @@ -3,9 +3,11 @@ import org.eclipse.jgit.api.errors.PatchApplyException; import org.eclipse.jgit.diff.RawText; import org.eclipse.jgit.internal.JGitText; +import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.patch.FileHeader; import org.eclipse.jgit.patch.HunkHeader; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.text.MessageFormat; import java.util.ArrayList; @@ -16,7 +18,7 @@ */ public class PatchUtil { - public static String apply(String source, FileHeader fh) + public static String apply(String source, String patch, FileHeader fh) throws IOException, PatchApplyException { RawText rt = new RawText(source.getBytes("UTF-8")); List oldLines = new ArrayList(rt.size()); @@ -24,10 +26,9 @@ oldLines.add(rt.getString(i)); List newLines = new ArrayList(oldLines); for (HunkHeader hh : fh.getHunks()) { - StringBuilder hunk = new StringBuilder(); - for (int j = hh.getStartOffset(); j < hh.getEndOffset(); j++) - hunk.append((char) hh.getBuffer()[j]); - RawText hrt = new RawText(hunk.toString().getBytes("UTF-8")); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + out.write(patch.getBytes("UTF-8"), hh.getStartOffset(), hh.getEndOffset() - hh.getStartOffset()); + RawText hrt = new RawText(out.toByteArray()); List hunkLines = new ArrayList(hrt.size()); for (int i = 0; i < hrt.size(); i++) hunkLines.add(hrt.getString(i));