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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy