Skip to content

Commit 4ee56d2

Browse files
authored
make patch serializable (#101)
1 parent 21f9e9d commit 4ee56d2

File tree

4 files changed

+41
-6
lines changed

4 files changed

+41
-6
lines changed

java-diff-utils/src/main/java/com/github/difflib/patch/AbstractDelta.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
*/
1616
package com.github.difflib.patch;
1717

18+
import java.io.Serializable;
1819
import java.util.List;
1920
import java.util.Objects;
2021

2122
/**
2223
* Abstract delta between a source and a target.
2324
* @author Tobias Warneke (t.warneke@gmx.net)
2425
*/
25-
public abstract class AbstractDelta<T> {
26+
public abstract class AbstractDelta<T> implements Serializable {
2627
private final Chunk<T> source;
2728
private final Chunk<T> target;
2829
private final DeltaType type;

java-diff-utils/src/main/java/com/github/difflib/patch/Chunk.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package com.github.difflib.patch;
1717

18+
import java.io.Serializable;
1819
import java.util.ArrayList;
1920
import java.util.Arrays;
2021
import java.util.List;
@@ -33,7 +34,7 @@
3334
* @author <a href="dm.naumenko@gmail.com>Dmitry Naumenko</a>
3435
* @param <T> The type of the compared elements in the 'lines'.
3536
*/
36-
public final class Chunk<T> {
37+
public final class Chunk<T> implements Serializable {
3738

3839
private final int position;
3940
private List<T> lines;

java-diff-utils/src/main/java/com/github/difflib/patch/Patch.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import static java.util.Comparator.comparing;
2323
import com.github.difflib.algorithm.Change;
24+
25+
import java.io.Serializable;
2426
import java.util.ArrayList;
2527
import java.util.Collections;
2628
import java.util.List;
@@ -32,7 +34,7 @@
3234
* @author <a href="dm.naumenko@gmail.com">Dmitry Naumenko</a>
3335
* @param <T> The type of the compared elements in the 'lines'.
3436
*/
35-
public final class Patch<T> {
37+
public final class Patch<T> implements Serializable {
3638

3739
private final List<AbstractDelta<T>> deltas;
3840

java-diff-utils/src/test/java/com/github/difflib/patch/PatchTest.java

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
package com.github.difflib.patch;
22

3-
import com.github.difflib.DiffUtils;
4-
import java.util.Arrays;
5-
import java.util.List;
63
import static org.junit.jupiter.api.Assertions.assertEquals;
74
import static org.junit.jupiter.api.Assertions.fail;
5+
6+
import java.io.ByteArrayInputStream;
7+
import java.io.ByteArrayOutputStream;
8+
import java.io.IOException;
9+
import java.io.ObjectInputStream;
10+
import java.io.ObjectOutputStream;
11+
import java.util.Arrays;
12+
import java.util.List;
13+
814
import org.junit.jupiter.api.Test;
915

16+
import com.github.difflib.DiffUtils;
17+
1018
public class PatchTest {
1119

1220
@Test
@@ -47,4 +55,27 @@ public void testPatch_Change() {
4755
fail(e.getMessage());
4856
}
4957
}
58+
59+
@Test
60+
public void testPatch_Serializable() throws IOException, ClassNotFoundException {
61+
final List<String> changeTest_from = Arrays.asList("aaa", "bbb", "ccc", "ddd");
62+
final List<String> changeTest_to = Arrays.asList("aaa", "bxb", "cxc", "ddd");
63+
64+
final Patch<String> patch = DiffUtils.diff(changeTest_from, changeTest_to);
65+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
66+
ObjectOutputStream out = new ObjectOutputStream(baos);
67+
out.writeObject(patch);
68+
out.close();
69+
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
70+
ObjectInputStream in = new ObjectInputStream(bais);
71+
Patch<String> result = (Patch<String>) in.readObject();
72+
in.close();
73+
74+
try {
75+
assertEquals(changeTest_to, DiffUtils.patch(changeTest_from, result));
76+
} catch (PatchFailedException e) {
77+
fail(e.getMessage());
78+
}
79+
80+
}
5081
}

0 commit comments

Comments
 (0)