JavaDoc and cleanup
diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java
index ef7c8f2..d9e210e 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java
@@ -286,27 +286,20 @@
}
/**
- * Maps all Removed elements to their corresponding RemovedGroup
+ * Maps all Removed elements as keys to their corresponding RemovedGroup.
+ * A RemovedGroup contains all consecutive Removed elements.
+ * <br/>
+ * Example:
+ * <pre>
+ * Elements: Kept|Removed1|Removed2|Kept|Removed3|Added|Removed4
+ * Groups: <----Group1----> Group2 Group3
+ * Keys: Removed1+Removed2 Removed3 Removed4
+ * </pre>
*
* @return Map with all Removed elements as keys to their corresponding RemovedGroup
*/
private Map<Removed, RemovedGroup> combineRemovedElementsToRemovedGroups() {
- Map<Integer, List<Removed>> removedElementsMap = new HashMap<>();
-
- Integer firstElement = null;
- for (int i = 0; i < diffElements.size(); i++) {
- DifferenceElement diffElement = diffElements.get(i);
- if (diffElement instanceof Removed) {
- if (firstElement == null) {
- firstElement = Integer.valueOf(i);
- }
-
- removedElementsMap.computeIfAbsent(firstElement, key -> new ArrayList<>())
- .add((Removed) diffElement);
- } else {
- firstElement = null;
- }
- }
+ Map<Integer, List<Removed>> removedElementsMap = groupConsecutiveRemovedElements();
List<RemovedGroup> removedGroups = new ArrayList<>();
for (Map.Entry<Integer, List<Removed>> entry : removedElementsMap.entrySet()) {
@@ -323,6 +316,26 @@
return map;
}
+ private Map<Integer, List<Removed>> groupConsecutiveRemovedElements() {
+ Map<Integer, List<Removed>> removedElementsMap = new HashMap<>();
+
+ Integer firstElement = null;
+ for (int i = 0; i < diffElements.size(); i++) {
+ DifferenceElement diffElement = diffElements.get(i);
+ if (diffElement instanceof Removed) {
+ if (firstElement == null) {
+ firstElement = i;
+ }
+
+ removedElementsMap.computeIfAbsent(firstElement, key -> new ArrayList<>())
+ .add((Removed) diffElement);
+ } else {
+ firstElement = null;
+ }
+ }
+ return removedElementsMap;
+ }
+
private void applyRemovedDiffElement(RemovedGroup removedGroup, Removed removed, TextElement originalElement, boolean originalElementIsChild, boolean originalElementIsToken) {
if (removed.isChild() && originalElementIsChild) {
ChildTextElement originalElementChild = (ChildTextElement) originalElement;
diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/RemovedGroup.java b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/RemovedGroup.java
index 73a8e17..f9ec841 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/RemovedGroup.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/RemovedGroup.java
@@ -97,6 +97,13 @@
/**
* Returns true if the RemovedGroup equates to a complete line
* This is the case if there are only spaces and tabs left on the line besides the Removed elements.
+ * <br/>
+ * Example:
+ * <pre>
+ * " [Removed] [EOL]" -> this would be a complete line, regardless of spaces or tabs before or after the [Removed] element
+ * " [Removed] void [EOL]" -> this would not be a complete line because of the "void"
+ * " public [Removed] [EOL]" -> this would not be a complete line because of the "public"
+ * </pre>
*
* @return true if the RemovedGroup equates to a complete line
*/