diff options
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/changes/ListAdditionChange.java')
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/changes/ListAdditionChange.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/changes/ListAdditionChange.java b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/changes/ListAdditionChange.java new file mode 100644 index 000000000..ab15cc52f --- /dev/null +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/changes/ListAdditionChange.java @@ -0,0 +1,37 @@ +package com.github.javaparser.printer.lexicalpreservation.changes; + +import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.NodeList; +import com.github.javaparser.ast.observer.ObservableProperty; + +/** + * The Addition of an element to a list. + */ +public class ListAdditionChange implements Change { + private final ObservableProperty observableProperty; + private final int index; + private final Node nodeAdded; + + public ListAdditionChange(ObservableProperty observableProperty, int index, Node nodeAdded) { + this.observableProperty = observableProperty; + this.index = index; + this.nodeAdded = nodeAdded; + } + + @Override + public Object getValue(ObservableProperty property, Node node) { + if (property == observableProperty) { + NodeList<Node> nodeList = new NodeList<>(); + Object currentRawValue = new NoChange().getValue(property, node); + if (!(currentRawValue instanceof NodeList)){ + throw new IllegalStateException("Expected NodeList, found " + currentRawValue.getClass().getCanonicalName()); + } + NodeList<?> currentNodeList = (NodeList<?>)(currentRawValue); + nodeList.addAll(currentNodeList); + nodeList.add(index, nodeAdded); + return nodeList; + } else { + return new NoChange().getValue(property, node); + } + } +} |