diff --git a/src/main/java/difflib/ChangeDelta.java b/src/main/java/difflib/ChangeDelta.java
index d0f4865..728decf 100644
--- a/src/main/java/difflib/ChangeDelta.java
+++ b/src/main/java/difflib/ChangeDelta.java
@@ -23,7 +23,7 @@ import java.util.List;
* @author Dmitry Naumenko
* @param T The type of the compared elements in the 'lines'.
*/
-public class ChangeDelta extends Delta {
+public final class ChangeDelta extends Delta {
/**
* Creates a change delta with the two given chunks.
@@ -32,7 +32,7 @@ public class ChangeDelta extends Delta {
* @param revised The original chunk. Must not be {@code null}.
*/
public ChangeDelta(Chunk original, Chunk revised) {
- super(original, revised);
+ super(TYPE.CHANGE, original, revised);
}
/**
@@ -89,9 +89,4 @@ public class ChangeDelta extends Delta {
return "[ChangeDelta, position: " + getOriginal().getPosition() + ", lines: "
+ getOriginal().getLines() + " to " + getRevised().getLines() + "]";
}
-
- @Override
- public TYPE getType() {
- return Delta.TYPE.CHANGE;
- }
}
diff --git a/src/main/java/difflib/DeleteDelta.java b/src/main/java/difflib/DeleteDelta.java
index e3ae996..320553b 100644
--- a/src/main/java/difflib/DeleteDelta.java
+++ b/src/main/java/difflib/DeleteDelta.java
@@ -23,7 +23,7 @@ import java.util.List;
* @author Dmitry Naumenko
* @param T The type of the compared elements in the 'lines'.
*/
-public class DeleteDelta extends Delta {
+public final class DeleteDelta extends Delta {
/**
* Creates a change delta with the two given chunks.
@@ -32,7 +32,7 @@ public class DeleteDelta extends Delta {
* @param revised The original chunk. Must not be {@code null}.
*/
public DeleteDelta(Chunk original, Chunk revised) {
- super(original, revised);
+ super(TYPE.DELETE, original, revised);
}
/**
@@ -62,11 +62,6 @@ public class DeleteDelta extends Delta {
}
}
- @Override
- public TYPE getType() {
- return Delta.TYPE.DELETE;
- }
-
@Override
public void verify(List target) throws PatchFailedException {
getOriginal().verify(target);
diff --git a/src/main/java/difflib/Delta.java b/src/main/java/difflib/Delta.java
index 62aed5f..99a6612 100644
--- a/src/main/java/difflib/Delta.java
+++ b/src/main/java/difflib/Delta.java
@@ -25,21 +25,15 @@ import java.util.*;
*/
public abstract class Delta {
- /**
- * The original chunk.
- */
- private Chunk original;
-
- /**
- * The revised chunk.
- */
- private Chunk revised;
+ private final TYPE deltaType;
+ private final Chunk original;
+ private final Chunk revised;
/**
* Specifies the type of the delta.
*
*/
- public enum TYPE {
+ public static enum TYPE {
/**
* A change in the original.
*/
@@ -60,13 +54,17 @@ public abstract class Delta {
* @param original Chunk describing the original text. Must not be {@code null}.
* @param revised Chunk describing the revised text. Must not be {@code null}.
*/
- public Delta(Chunk original, Chunk revised) {
+ public Delta(TYPE deltaType, Chunk original, Chunk revised) {
+ if (deltaType == null) {
+ throw new IllegalArgumentException("deltaType must not be null");
+ }
if (original == null) {
throw new IllegalArgumentException("original must not be null");
}
if (revised == null) {
throw new IllegalArgumentException("revised must not be null");
}
+ this.deltaType = deltaType;
this.original = original;
this.revised = revised;
}
@@ -94,12 +92,9 @@ public abstract class Delta {
*/
public abstract void restore(List target);
- /**
- * Returns the type of delta
- *
- * @return the type enum
- */
- public abstract TYPE getType();
+ public final TYPE getType() {
+ return deltaType;
+ }
/**
* @return The Chunk describing the original text.
@@ -108,13 +103,6 @@ public abstract class Delta {
return original;
}
- /**
- * @param original The Chunk describing the original text to set.
- */
- public void setOriginal(Chunk original) {
- this.original = original;
- }
-
/**
* @return The Chunk describing the revised text.
*/
@@ -122,13 +110,6 @@ public abstract class Delta {
return revised;
}
- /**
- * @param revised The Chunk describing the revised text to set.
- */
- public void setRevised(Chunk revised) {
- this.revised = revised;
- }
-
@Override
public int hashCode() {
final int prime = 31;
diff --git a/src/main/java/difflib/InsertDelta.java b/src/main/java/difflib/InsertDelta.java
index ac2a863..a09da90 100644
--- a/src/main/java/difflib/InsertDelta.java
+++ b/src/main/java/difflib/InsertDelta.java
@@ -23,7 +23,7 @@ import java.util.List;
* @author Dmitry Naumenko
* @param T The type of the compared elements in the 'lines'.
*/
-public class InsertDelta extends Delta {
+public final class InsertDelta extends Delta {
/**
* Creates an insert delta with the two given chunks.
@@ -32,7 +32,7 @@ public class InsertDelta extends Delta {
* @param revised The original chunk. Must not be {@code null}.
*/
public InsertDelta(Chunk original, Chunk revised) {
- super(original, revised);
+ super(TYPE.INSERT, original, revised);
}
/**
@@ -71,11 +71,6 @@ public class InsertDelta extends Delta {
}
- @Override
- public TYPE getType() {
- return Delta.TYPE.INSERT;
- }
-
@Override
public String toString() {
return "[InsertDelta, position: " + getOriginal().getPosition()
diff --git a/src/main/java/difflib/DiffRow.java b/src/main/java/difflib/rows/DiffRow.java
similarity index 99%
rename from src/main/java/difflib/DiffRow.java
rename to src/main/java/difflib/rows/DiffRow.java
index 08b9c26..5abb292 100644
--- a/src/main/java/difflib/DiffRow.java
+++ b/src/main/java/difflib/rows/DiffRow.java
@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
*/
-package difflib;
+package difflib.rows;
/**
* Describes the diff row in form [tag, oldLine, newLine) for showing the difference between two
diff --git a/src/main/java/difflib/DiffRowGenerator.java b/src/main/java/difflib/rows/DiffRowGenerator.java
similarity index 98%
rename from src/main/java/difflib/DiffRowGenerator.java
rename to src/main/java/difflib/rows/DiffRowGenerator.java
index d4abb32..d478f00 100644
--- a/src/main/java/difflib/DiffRowGenerator.java
+++ b/src/main/java/difflib/rows/DiffRowGenerator.java
@@ -13,9 +13,17 @@
See the License for the specific language governing permissions and
limitations under the License.
*/
-package difflib;
+package difflib.rows;
-import difflib.DiffRow.Tag;
+import difflib.ChangeDelta;
+import difflib.Chunk;
+import difflib.DeleteDelta;
+import difflib.Delta;
+import difflib.rows.DiffRow.Tag;
+import difflib.DiffUtils;
+import difflib.InsertDelta;
+import difflib.Patch;
+import difflib.StringUtils;
import difflib.myers.Equalizer;
import java.util.*;
diff --git a/src/test/java/diffutils/DiffRowGeneratorTest.java b/src/test/java/diffutils/rows/DiffRowGeneratorTest.java
similarity index 96%
rename from src/test/java/diffutils/DiffRowGeneratorTest.java
rename to src/test/java/diffutils/rows/DiffRowGeneratorTest.java
index 2144246..8a15d47 100644
--- a/src/test/java/diffutils/DiffRowGeneratorTest.java
+++ b/src/test/java/diffutils/rows/DiffRowGeneratorTest.java
@@ -1,7 +1,7 @@
-package diffutils;
+package diffutils.rows;
-import difflib.DiffRow;
-import difflib.DiffRowGenerator;
+import difflib.rows.DiffRow;
+import difflib.rows.DiffRowGenerator;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.assertEquals;