Search in sources :

Example 6 with PrimitiveType

use of com.github.javaparser.ast.type.PrimitiveType in project javaparser by javaparser.

the class NodeTest method registerWithNodeAndExistingDescendantsMode.

@Test
public void registerWithNodeAndExistingDescendantsMode() {
    String code = "class A { int f; void foo(int p) { return 'z'; }}";
    CompilationUnit cu = parse(code);
    List<String> changes = new ArrayList<>();
    AstObserver observer = new AstObserverAdapter() {

        @Override
        public void propertyChange(Node observedNode, ObservableProperty property, Object oldValue, Object newValue) {
            changes.add(String.format("%s.%s changed from %s to %s", observedNode.getClass().getSimpleName(), property.name().toLowerCase(), oldValue, newValue));
        }
    };
    cu.getClassByName("A").get().register(observer, Node.ObserverRegistrationMode.THIS_NODE_AND_EXISTING_DESCENDANTS);
    assertEquals(Arrays.asList(), changes);
    cu.getClassByName("A").get().setName("MyCoolClass");
    assertEquals(Arrays.asList("ClassOrInterfaceDeclaration.name changed from A to MyCoolClass"), changes);
    cu.getClassByName("MyCoolClass").get().getFieldByName("f").get().getVariable(0).setType(new PrimitiveType(PrimitiveType.Primitive.BOOLEAN));
    assertEquals(Arrays.asList("ClassOrInterfaceDeclaration.name changed from A to MyCoolClass", "FieldDeclaration.maximum_common_type changed from int to boolean", "VariableDeclarator.type changed from int to boolean"), changes);
    cu.getClassByName("MyCoolClass").get().getMethodsByName("foo").get(0).getParameterByName("p").get().setName("myParam");
    assertEquals(Arrays.asList("ClassOrInterfaceDeclaration.name changed from A to MyCoolClass", "FieldDeclaration.maximum_common_type changed from int to boolean", "VariableDeclarator.type changed from int to boolean", "Parameter.name changed from p to myParam"), changes);
    cu.getClassByName("MyCoolClass").get().addField("int", "bar").getVariables().get(0).setInitializer("0");
    assertEquals(Arrays.asList("ClassOrInterfaceDeclaration.name changed from A to MyCoolClass", "FieldDeclaration.maximum_common_type changed from int to boolean", "VariableDeclarator.type changed from int to boolean", "Parameter.name changed from p to myParam"), changes);
}
Also used : ObservableProperty(com.github.javaparser.ast.observer.ObservableProperty) AstObserverAdapter(com.github.javaparser.ast.observer.AstObserverAdapter) PrimitiveType(com.github.javaparser.ast.type.PrimitiveType) AstObserver(com.github.javaparser.ast.observer.AstObserver) Test(org.junit.Test)

Aggregations

PrimitiveType (com.github.javaparser.ast.type.PrimitiveType)6 AstObserver (com.github.javaparser.ast.observer.AstObserver)4 AstObserverAdapter (com.github.javaparser.ast.observer.AstObserverAdapter)4 ObservableProperty (com.github.javaparser.ast.observer.ObservableProperty)4 Test (org.junit.Test)4 Method (com.github.havardh.javaflow.ast.Method)1 GeneratedJavaParserConstants (com.github.javaparser.GeneratedJavaParserConstants)1 TokenTypes (com.github.javaparser.TokenTypes)1 Node (com.github.javaparser.ast.Node)1 ClassOrInterfaceDeclaration (com.github.javaparser.ast.body.ClassOrInterfaceDeclaration)1 Comment (com.github.javaparser.ast.comments.Comment)1 com.github.javaparser.printer.concretesyntaxmodel (com.github.javaparser.printer.concretesyntaxmodel)1 CsmChild (com.github.javaparser.printer.lexicalpreservation.LexicalDifferenceCalculator.CsmChild)1 java.util (java.util)1 Collectors (java.util.stream.Collectors)1