com.github.javaparser.ast.observer.AstObserver Maven / Gradle / Ivy
/*
* Copyright (C) 2007-2010 Júlio Vilmar Gesser.
* Copyright (C) 2011, 2013-2021 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);
}