aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/observer/AstObserver.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/observer/AstObserver.java')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/observer/AstObserver.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/observer/AstObserver.java b/javaparser-core/src/main/java/com/github/javaparser/ast/observer/AstObserver.java
new file mode 100644
index 000000000..6c41f4b02
--- /dev/null
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/observer/AstObserver.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
+ * Copyright (C) 2011, 2013-2016 The JavaParser Team.
+ *
+ * This file is part of JavaParser.
+ *
+ * JavaParser can be used either under the terms of
+ * a) the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * b) the terms of the Apache License
+ *
+ * You should have received a copy of both licenses in LICENCE.LGPL and
+ * LICENCE.APACHE. Please refer to those files for details.
+ *
+ * JavaParser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ */
+
+package com.github.javaparser.ast.observer;
+
+import com.github.javaparser.ast.Node;
+import com.github.javaparser.ast.NodeList;
+
+/**
+ * An Observer for an AST element (either a Node or a NodeList).
+ */
+public interface AstObserver {
+
+ /**
+ * Type of change occurring on a List
+ */
+ enum ListChangeType {
+ ADDITION,
+ REMOVAL
+ }
+
+ /**
+ * The value of a property is changed
+ *
+ * @param observedNode owner of the property
+ * @param property property changed
+ * @param oldValue value of the property before the change
+ * @param newValue value of the property after the change
+ */
+ void propertyChange(Node observedNode, ObservableProperty property, Object oldValue, Object newValue);
+
+ /**
+ * The parent of a node is changed
+ *
+ * @param observedNode node of which the parent is changed
+ * @param previousParent previous parent
+ * @param newParent new parent
+ */
+ void parentChange(Node observedNode, Node previousParent, Node newParent);
+
+ /**
+ * A list is changed
+ *
+ * @param observedNode list changed
+ * @param type type of change
+ * @param index position at which the changed occurred
+ * @param nodeAddedOrRemoved element added or removed
+ */
+ void listChange(NodeList observedNode, ListChangeType type, int index, Node nodeAddedOrRemoved);
+
+ void listReplacement(NodeList observedNode, int index, Node oldNode, Node newNode);
+}