Browse Source
Bug: 361548 CQ: 6243 Change-Id: I08e1369e142bb19f42a8d7bbb5a7d062cc8533fc Signed-off-by: Chris Aniszczyk <zx@twitter.com>stable-2.0
Tomasz Zarna
13 years ago
committed by
Chris Aniszczyk
19 changed files with 807 additions and 0 deletions
@ -0,0 +1,9 @@
|
||||
diff --git a/A1 b/A1
|
||||
new file mode 100644
|
||||
index 0000000..de98044
|
||||
--- /dev/null
|
||||
+++ b/A1
|
||||
@@ -0,0 +1,3 @@
|
||||
+a
|
||||
+b
|
||||
+c
|
@ -0,0 +1,3 @@
|
||||
a |
||||
b |
||||
c |
@ -0,0 +1,10 @@
|
||||
diff --git a/A2 b/A2
|
||||
new file mode 100644
|
||||
index 0000000..de98044
|
||||
--- /dev/null
|
||||
+++ b/A2
|
||||
@@ -0,0 +1,3 @@
|
||||
+a
|
||||
+b
|
||||
+c
|
||||
\ No newline at end of file
|
@ -0,0 +1,3 @@
|
||||
a |
||||
b |
||||
c |
@ -0,0 +1,9 @@
|
||||
diff --git a/D b/D
|
||||
deleted file mode 100644
|
||||
index a3648a1..0000000
|
||||
--- a/D
|
||||
+++ /dev/null
|
||||
@@ -1,3 +0,0 @@
|
||||
-a
|
||||
-b
|
||||
-c
|
@ -0,0 +1,3 @@
|
||||
a |
||||
b |
||||
c |
@ -0,0 +1,4 @@
|
||||
@@ -2,2 +2,3 @@ a
|
||||
b
|
||||
+c
|
||||
d
|
@ -0,0 +1,25 @@
|
||||
a |
||||
b |
||||
d |
||||
e |
||||
f |
||||
g |
||||
h |
||||
i |
||||
j |
||||
k |
||||
l |
||||
m |
||||
n |
||||
o |
||||
p |
||||
q |
||||
r |
||||
s |
||||
t |
||||
u |
||||
v |
||||
w |
||||
x |
||||
y |
||||
z |
@ -0,0 +1,8 @@
|
||||
diff --git a/F2 b/F2
|
||||
index a3648a1..2d44096 100644
|
||||
--- a/F2
|
||||
+++ b/F2
|
||||
@@ -2,2 +2,3 @@ a
|
||||
B
|
||||
+c
|
||||
d
|
@ -0,0 +1,25 @@
|
||||
a |
||||
b |
||||
d |
||||
e |
||||
f |
||||
g |
||||
h |
||||
i |
||||
j |
||||
k |
||||
l |
||||
m |
||||
n |
||||
o |
||||
p |
||||
q |
||||
r |
||||
s |
||||
t |
||||
u |
||||
v |
||||
w |
||||
x |
||||
y |
||||
z |
@ -0,0 +1,191 @@
|
||||
/* |
||||
* Copyright (C) 2011, 2012, Tomasz Zarna <Tomasz.Zarna@pl.ibm.com> |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
package org.eclipse.jgit.api; |
||||
|
||||
import static org.junit.Assert.assertEquals; |
||||
import static org.junit.Assert.assertFalse; |
||||
import static org.junit.Assert.fail; |
||||
|
||||
import java.io.ByteArrayOutputStream; |
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
|
||||
import org.eclipse.jgit.api.errors.PatchApplyException; |
||||
import org.eclipse.jgit.api.errors.PatchFormatException; |
||||
import org.eclipse.jgit.diff.DiffFormatterReflowTest; |
||||
import org.eclipse.jgit.diff.RawText; |
||||
import org.eclipse.jgit.lib.RepositoryTestCase; |
||||
import org.junit.Test; |
||||
|
||||
public class ApplyCommandTest extends RepositoryTestCase { |
||||
|
||||
private RawText a; |
||||
|
||||
private RawText b; |
||||
|
||||
private ApplyResult init(final String name) throws Exception { |
||||
return init(name, true, true); |
||||
} |
||||
|
||||
private ApplyResult init(final String name, final boolean preExists, |
||||
final boolean postExists) throws Exception { |
||||
Git git = new Git(db); |
||||
|
||||
if (preExists) { |
||||
a = new RawText(readFile(name + "_PreImage")); |
||||
write(new File(db.getDirectory().getParent(), name), |
||||
a.getString(0, a.size(), false)); |
||||
|
||||
git.add().addFilepattern(name).call(); |
||||
git.commit().setMessage("PreImage").call(); |
||||
} |
||||
|
||||
if (postExists) |
||||
b = new RawText(readFile(name + "_PostImage")); |
||||
|
||||
return git |
||||
.apply() |
||||
.setPatch( |
||||
DiffFormatterReflowTest.class.getResourceAsStream(name |
||||
+ ".patch")).call(); |
||||
} |
||||
|
||||
@Test |
||||
public void testAddA1() throws Exception { |
||||
ApplyResult result = init("A1", false, true); |
||||
assertEquals(1, result.getUpdatedFiles().size()); |
||||
assertEquals(new File(db.getWorkTree(), "A1"), result.getUpdatedFiles() |
||||
.get(0)); |
||||
checkFile(new File(db.getWorkTree(), "A1"), |
||||
b.getString(0, b.size(), false)); |
||||
} |
||||
|
||||
@Test |
||||
public void testAddA2() throws Exception { |
||||
ApplyResult result = init("A2", false, true); |
||||
assertEquals(1, result.getUpdatedFiles().size()); |
||||
assertEquals(new File(db.getWorkTree(), "A2"), result.getUpdatedFiles() |
||||
.get(0)); |
||||
checkFile(new File(db.getWorkTree(), "A2"), |
||||
b.getString(0, b.size(), false)); |
||||
} |
||||
|
||||
@Test |
||||
public void testDeleteD() throws Exception { |
||||
ApplyResult result = init("D", true, false); |
||||
assertEquals(1, result.getUpdatedFiles().size()); |
||||
assertEquals(new File(db.getWorkTree(), "D"), result.getUpdatedFiles() |
||||
.get(0)); |
||||
assertFalse(new File(db.getWorkTree(), "D").exists()); |
||||
} |
||||
|
||||
@Test(expected = PatchFormatException.class) |
||||
public void testFailureF1() throws Exception { |
||||
init("F1", true, false); |
||||
} |
||||
|
||||
@Test(expected = PatchApplyException.class) |
||||
public void testFailureF2() throws Exception { |
||||
init("F2", true, false); |
||||
} |
||||
|
||||
@Test |
||||
public void testModifyE() throws Exception { |
||||
ApplyResult result = init("E"); |
||||
assertEquals(1, result.getUpdatedFiles().size()); |
||||
assertEquals(new File(db.getWorkTree(), "E"), result.getUpdatedFiles() |
||||
.get(0)); |
||||
checkFile(new File(db.getWorkTree(), "E"), |
||||
b.getString(0, b.size(), false)); |
||||
} |
||||
|
||||
@Test |
||||
public void testModifyX() throws Exception { |
||||
ApplyResult result = init("X"); |
||||
assertEquals(1, result.getUpdatedFiles().size()); |
||||
assertEquals(new File(db.getWorkTree(), "X"), result.getUpdatedFiles() |
||||
.get(0)); |
||||
checkFile(new File(db.getWorkTree(), "X"), |
||||
b.getString(0, b.size(), false)); |
||||
} |
||||
|
||||
@Test |
||||
public void testModifyY() throws Exception { |
||||
ApplyResult result = init("Y"); |
||||
assertEquals(1, result.getUpdatedFiles().size()); |
||||
assertEquals(new File(db.getWorkTree(), "Y"), result.getUpdatedFiles() |
||||
.get(0)); |
||||
checkFile(new File(db.getWorkTree(), "Y"), |
||||
b.getString(0, b.size(), false)); |
||||
} |
||||
|
||||
@Test |
||||
public void testModifyZ() throws Exception { |
||||
ApplyResult result = init("Z"); |
||||
assertEquals(1, result.getUpdatedFiles().size()); |
||||
assertEquals(new File(db.getWorkTree(), "Z"), result.getUpdatedFiles() |
||||
.get(0)); |
||||
checkFile(new File(db.getWorkTree(), "Z"), |
||||
b.getString(0, b.size(), false)); |
||||
} |
||||
|
||||
private byte[] readFile(final String patchFile) throws IOException { |
||||
final InputStream in = DiffFormatterReflowTest.class |
||||
.getResourceAsStream(patchFile); |
||||
if (in == null) { |
||||
fail("No " + patchFile + " test vector"); |
||||
return null; // Never happens
|
||||
} |
||||
try { |
||||
final byte[] buf = new byte[1024]; |
||||
final ByteArrayOutputStream temp = new ByteArrayOutputStream(); |
||||
int n; |
||||
while ((n = in.read(buf)) > 0) |
||||
temp.write(buf, 0, n); |
||||
return temp.toByteArray(); |
||||
} finally { |
||||
in.close(); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,258 @@
|
||||
/* |
||||
* Copyright (C) 2011, 2012, IBM Corporation and others. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
package org.eclipse.jgit.api; |
||||
|
||||
import java.io.File; |
||||
import java.io.FileWriter; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.text.MessageFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
import org.eclipse.jgit.JGitText; |
||||
import org.eclipse.jgit.api.errors.GitAPIException; |
||||
import org.eclipse.jgit.api.errors.PatchApplyException; |
||||
import org.eclipse.jgit.api.errors.PatchFormatException; |
||||
import org.eclipse.jgit.diff.DiffEntry.ChangeType; |
||||
import org.eclipse.jgit.diff.RawText; |
||||
import org.eclipse.jgit.lib.Repository; |
||||
import org.eclipse.jgit.patch.FileHeader; |
||||
import org.eclipse.jgit.patch.HunkHeader; |
||||
import org.eclipse.jgit.patch.Patch; |
||||
import org.eclipse.jgit.util.FileUtils; |
||||
import org.eclipse.jgit.util.IO; |
||||
|
||||
/** |
||||
* Apply a patch to files and/or to the index. |
||||
* |
||||
* @see <a href="http://www.kernel.org/pub/software/scm/git/docs/git-apply.html" |
||||
* >Git documentation about apply</a> |
||||
*/ |
||||
public class ApplyCommand extends GitCommand<ApplyResult> { |
||||
|
||||
private InputStream in; |
||||
|
||||
/** |
||||
* Constructs the command if the patch is to be applied to the index. |
||||
* |
||||
* @param repo |
||||
*/ |
||||
ApplyCommand(Repository repo) { |
||||
super(repo); |
||||
} |
||||
|
||||
/** |
||||
* @param in |
||||
* the patch to apply |
||||
* @return this instance |
||||
*/ |
||||
public ApplyCommand setPatch(InputStream in) { |
||||
checkCallable(); |
||||
this.in = in; |
||||
return this; |
||||
} |
||||
|
||||
/** |
||||
* Executes the {@code ApplyCommand} command with all the options and |
||||
* parameters collected by the setter methods (e.g. |
||||
* {@link #setPatch(InputStream)} of this class. Each instance of this class
|
||||
* should only be used for one invocation of the command. Don't call this |
||||
* method twice on an instance. |
||||
* |
||||
* @return an {@link ApplyResult} object representing the command result |
||||
*/ |
||||
public ApplyResult call() throws GitAPIException { |
||||
checkCallable(); |
||||
ApplyResult r = new ApplyResult(); |
||||
try { |
||||
final Patch p = new Patch(); |
||||
try { |
||||
p.parse(in); |
||||
} finally { |
||||
in.close(); |
||||
} |
||||
if (!p.getErrors().isEmpty()) |
||||
throw new PatchFormatException(p.getErrors()); |
||||
for (FileHeader fh : p.getFiles()) { |
||||
ChangeType type = fh.getChangeType(); |
||||
File f = null; |
||||
switch (type) { |
||||
case ADD: |
||||
f = getFile(fh.getNewPath(), true); |
||||
apply(f, fh); |
||||
break; |
||||
case MODIFY: |
||||
f = getFile(fh.getOldPath(), false); |
||||
apply(f, fh); |
||||
break; |
||||
case DELETE: |
||||
f = getFile(fh.getOldPath(), false); |
||||
if (!f.delete()) |
||||
throw new PatchApplyException(MessageFormat.format( |
||||
JGitText.get().cannotDeleteFile, f)); |
||||
break; |
||||
case RENAME: |
||||
f = getFile(fh.getOldPath(), false); |
||||
File dest = getFile(fh.getNewPath(), false); |
||||
if (!f.renameTo(dest)) |
||||
throw new PatchApplyException(MessageFormat.format( |
||||
JGitText.get().renameFileFailed, f, dest)); |
||||
break; |
||||
case COPY: |
||||
f = getFile(fh.getOldPath(), false); |
||||
byte[] bs = IO.readFully(f); |
||||
FileWriter fw = new FileWriter(getFile(fh.getNewPath(), |
||||
true)); |
||||
fw.write(new String(bs)); |
||||
fw.close(); |
||||
} |
||||
r.addUpdatedFile(f); |
||||
} |
||||
} catch (IOException e) { |
||||
throw new PatchApplyException(MessageFormat.format( |
||||
JGitText.get().patchApplyException, e.getMessage()), e); |
||||
} |
||||
setCallable(false); |
||||
return r; |
||||
} |
||||
|
||||
private File getFile(String path, boolean create) |
||||
throws PatchApplyException { |
||||
File f = new File(getRepository().getWorkTree(), path); |
||||
if (create) |
||||
try { |
||||
FileUtils.createNewFile(f); |
||||
} catch (IOException e) { |
||||
throw new PatchApplyException(MessageFormat.format( |
||||
JGitText.get().createNewFileFailed, f), e); |
||||
} |
||||
return f; |
||||
} |
||||
|
||||
/** |
||||
* @param f |
||||
* @param fh |
||||
* @throws IOException |
||||
* @throws PatchApplyException |
||||
*/ |
||||
private void apply(File f, FileHeader fh) |
||||
throws IOException, PatchApplyException { |
||||
RawText rt = new RawText(f); |
||||
List<String> oldLines = new ArrayList<String>(rt.size()); |
||||
for (int i = 0; i < rt.size(); i++) |
||||
oldLines.add(rt.getString(i)); |
||||
List<String> newLines = new ArrayList<String>(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()); |
||||
List<String> hunkLines = new ArrayList<String>(hrt.size()); |
||||
for (int i = 0; i < hrt.size(); i++) |
||||
hunkLines.add(hrt.getString(i)); |
||||
int pos = 0; |
||||
for (int j = 1; j < hunkLines.size(); j++) { |
||||
String hunkLine = hunkLines.get(j); |
||||
switch (hunkLine.charAt(0)) { |
||||
case ' ': |
||||
if (!newLines.get(hh.getNewStartLine() - 1 + pos).equals( |
||||
hunkLine.substring(1))) { |
||||
throw new PatchApplyException(MessageFormat.format( |
||||
JGitText.get().patchApplyException, hh)); |
||||
} |
||||
pos++; |
||||
break; |
||||
case '-': |
||||
if (!newLines.get(hh.getNewStartLine() - 1 + pos).equals( |
||||
hunkLine.substring(1))) { |
||||
throw new PatchApplyException(MessageFormat.format( |
||||
JGitText.get().patchApplyException, hh)); |
||||
} |
||||
newLines.remove(hh.getNewStartLine() - 1 + pos); |
||||
break; |
||||
case '+': |
||||
newLines.add(hh.getNewStartLine() - 1 + pos, |
||||
hunkLine.substring(1)); |
||||
pos++; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
if (!isNoNewlineAtEndOfFile(fh)) |
||||
newLines.add(""); |
||||
if (!rt.isMissingNewlineAtEnd()) |
||||
oldLines.add(""); |
||||
if (!isChanged(oldLines, newLines)) |
||||
return; // don't touch the file
|
||||
StringBuilder sb = new StringBuilder(); |
||||
final String eol = rt.size() == 0 |
||||
|| (rt.size() == 1 && rt.isMissingNewlineAtEnd()) ? "\n" : rt |
||||
.getEOL(); |
||||
for (String l : newLines) { |
||||
sb.append(l); |
||||
if (eol != null) |
||||
sb.append(eol); |
||||
} |
||||
sb.deleteCharAt(sb.length() - 1); |
||||
FileWriter fw = new FileWriter(f); |
||||
fw.write(sb.toString()); |
||||
fw.close(); |
||||
} |
||||
|
||||
private boolean isChanged(List<String> ol, List<String> nl) { |
||||
if (ol.size() != nl.size()) |
||||
return true; |
||||
for (int i = 0; i < ol.size(); i++) |
||||
if (!ol.get(i).equals(nl.get(i))) |
||||
return true; |
||||
return false; |
||||
} |
||||
|
||||
private boolean isNoNewlineAtEndOfFile(FileHeader fh) { |
||||
HunkHeader lastHunk = fh.getHunks().get(fh.getHunks().size() - 1); |
||||
RawText lhrt = new RawText(lastHunk.getBuffer()); |
||||
return lhrt.getString(lhrt.size() - 1).equals( |
||||
"\\ No newline at end of file"); //$NON-NLS-1$
|
||||
} |
||||
} |
@ -0,0 +1,73 @@
|
||||
/* |
||||
* Copyright (C) 2011, 2012 IBM Corporation and others. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
package org.eclipse.jgit.api; |
||||
|
||||
import java.io.File; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Encapsulates the result of a {@link ApplyCommand} |
||||
*/ |
||||
public class ApplyResult { |
||||
|
||||
private List<File> updatedFiles = new ArrayList<File>(); |
||||
|
||||
/** |
||||
* @param f |
||||
* an updated file |
||||
* @return this instance |
||||
*/ |
||||
public ApplyResult addUpdatedFile(File f) { |
||||
updatedFiles.add(f); |
||||
return this; |
||||
|
||||
} |
||||
|
||||
/** |
||||
* @return updated files |
||||
*/ |
||||
public List<File> getUpdatedFiles() { |
||||
return updatedFiles; |
||||
} |
||||
} |
@ -0,0 +1,69 @@
|
||||
/* |
||||
* Copyright (C) 2012, IBM Corporation and others. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
package org.eclipse.jgit.api.errors; |
||||
|
||||
/** |
||||
* Exception thrown when applying a patch fails |
||||
* |
||||
* @since 2.0 |
||||
* |
||||
*/ |
||||
public class PatchApplyException extends GitAPIException { |
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
/** |
||||
* @param message |
||||
* @param cause |
||||
*/ |
||||
public PatchApplyException(String message, Throwable cause) { |
||||
super(message, cause); |
||||
} |
||||
|
||||
/** |
||||
* @param message |
||||
*/ |
||||
public PatchApplyException(String message) { |
||||
super(message); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,77 @@
|
||||
/* |
||||
* Copyright (C) 2012, IBM Corporation and others. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
package org.eclipse.jgit.api.errors; |
||||
|
||||
import java.text.MessageFormat; |
||||
import java.util.List; |
||||
|
||||
import org.eclipse.jgit.JGitText; |
||||
import org.eclipse.jgit.patch.FormatError; |
||||
|
||||
/** |
||||
* Exception thrown when applying a patch fails due to an invalid format |
||||
* |
||||
* @since 2.0 |
||||
* |
||||
*/ |
||||
public class PatchFormatException extends GitAPIException { |
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
private List<FormatError> errors; |
||||
|
||||
/** |
||||
* @param errors |
||||
*/ |
||||
public PatchFormatException(List<FormatError> errors) { |
||||
super(MessageFormat.format(JGitText.get().patchFormatException, errors)); |
||||
this.errors = errors; |
||||
} |
||||
|
||||
/** |
||||
* @return all the errors where unresolved conflicts have been detected |
||||
*/ |
||||
public List<FormatError> getErrors() { |
||||
return errors; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue