Search in sources :

Example 11 with Node

use of com.github.javaparser.ast.Node in project javaparser by javaparser.

the class LexicalDifferenceCalculator method calculatedSyntaxModelAfterListAddition.

// Visible for testing
CalculatedSyntaxModel calculatedSyntaxModelAfterListAddition(CsmElement csm, ObservableProperty observableProperty, NodeList nodeList, int index, Node nodeAdded) {
    List<CsmElement> elements = new LinkedList<>();
    Node container = nodeList.getParentNodeForChildren();
    calculatedSyntaxModelForNode(csm, container, elements, new ListAdditionChange(observableProperty, index, nodeAdded));
    return new CalculatedSyntaxModel(elements);
}
Also used : Node(com.github.javaparser.ast.Node)

Example 12 with Node

use of com.github.javaparser.ast.Node in project javaparser by javaparser.

the class LexicalDifferenceCalculator method calculateListAdditionDifference.

Difference calculateListAdditionDifference(ObservableProperty observableProperty, NodeList nodeList, int index, Node nodeAdded) {
    Node container = nodeList.getParentNodeForChildren();
    CsmElement element = ConcreteSyntaxModel.forClass(container.getClass());
    CalculatedSyntaxModel original = calculatedSyntaxModelForNode(element, container);
    CalculatedSyntaxModel after = calculatedSyntaxModelAfterListAddition(element, observableProperty, nodeList, index, nodeAdded);
    return Difference.calculate(original, after);
}
Also used : Node(com.github.javaparser.ast.Node)

Example 13 with Node

use of com.github.javaparser.ast.Node in project javaparser by javaparser.

the class LexicalDifferenceCalculator method calculateListRemovalDifference.

Difference calculateListRemovalDifference(ObservableProperty observableProperty, NodeList nodeList, int index) {
    Node container = nodeList.getParentNodeForChildren();
    CsmElement element = ConcreteSyntaxModel.forClass(container.getClass());
    CalculatedSyntaxModel original = calculatedSyntaxModelForNode(element, container);
    CalculatedSyntaxModel after = calculatedSyntaxModelAfterListRemoval(element, observableProperty, nodeList, index);
    return Difference.calculate(original, after);
}
Also used : Node(com.github.javaparser.ast.Node)

Example 14 with Node

use of com.github.javaparser.ast.Node in project javaparser by javaparser.

the class DotPrinter method output.

public void output(Node node, String parentNodeName, String name, StringBuilder builder) {
    assertNotNull(node);
    NodeMetaModel metaModel = node.getMetaModel();
    List<PropertyMetaModel> allPropertyMetaModels = metaModel.getAllPropertyMetaModels();
    List<PropertyMetaModel> attributes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isAttribute).filter(PropertyMetaModel::isSingular).collect(toList());
    List<PropertyMetaModel> subNodes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNode).filter(PropertyMetaModel::isSingular).collect(toList());
    List<PropertyMetaModel> subLists = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNodeList).collect(toList());
    String ndName = nextNodeName();
    if (outputNodeType)
        builder.append(System.lineSeparator() + ndName + " [label=\"" + name + " (" + metaModel.getTypeName() + ")\"];");
    else
        builder.append(System.lineSeparator() + ndName + " [label=\"" + name + "\"];");
    if (parentNodeName != null)
        builder.append(System.lineSeparator() + parentNodeName + " -> " + ndName + ";");
    for (PropertyMetaModel a : attributes) {
        String attrName = nextNodeName();
        builder.append(System.lineSeparator() + attrName + " [label=\"" + a.getName() + "='" + a.getValue(node).toString() + "'\"];");
        builder.append(System.lineSeparator() + ndName + " -> " + attrName + ";");
    }
    for (PropertyMetaModel sn : subNodes) {
        Node nd = (Node) sn.getValue(node);
        if (nd != null)
            output(nd, ndName, sn.getName(), builder);
    }
    for (PropertyMetaModel sl : subLists) {
        NodeList<? extends Node> nl = (NodeList<? extends Node>) sl.getValue(node);
        if (nl != null && nl.isNonEmpty()) {
            String ndLstName = nextNodeName();
            builder.append(System.lineSeparator() + ndLstName + " [label=\"" + sl.getName() + "\"];");
            builder.append(System.lineSeparator() + ndName + " -> " + ndLstName + ";");
            String slName = sl.getName().substring(0, sl.getName().length() - 1);
            for (Node nd : nl) output(nd, ndLstName, slName, builder);
        }
    }
}
Also used : Node(com.github.javaparser.ast.Node) NodeList(com.github.javaparser.ast.NodeList) NodeMetaModel(com.github.javaparser.metamodel.NodeMetaModel) PropertyMetaModel(com.github.javaparser.metamodel.PropertyMetaModel)

Example 15 with Node

use of com.github.javaparser.ast.Node in project javaparser by javaparser.

the class JsonPrinter method output.

public String output(Node node, String name, int level) {
    assertNotNull(node);
    NodeMetaModel metaModel = node.getMetaModel();
    List<PropertyMetaModel> allPropertyMetaModels = metaModel.getAllPropertyMetaModels();
    List<PropertyMetaModel> attributes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isAttribute).filter(PropertyMetaModel::isSingular).collect(toList());
    List<PropertyMetaModel> subNodes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNode).filter(PropertyMetaModel::isSingular).collect(toList());
    List<PropertyMetaModel> subLists = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNodeList).collect(toList());
    final List<String> content = new ArrayList<>();
    if (outputNodeType) {
        content.add(q("type") + ":" + q(metaModel.getTypeName()));
    }
    for (PropertyMetaModel attributeMetaModel : attributes) {
        content.add(q(attributeMetaModel.getName()) + ":" + q(attributeMetaModel.getValue(node).toString()));
    }
    for (PropertyMetaModel subNodeMetaModel : subNodes) {
        Node value = (Node) subNodeMetaModel.getValue(node);
        if (value != null) {
            content.add(output(value, subNodeMetaModel.getName(), level + 1));
        }
    }
    for (PropertyMetaModel subListMetaModel : subLists) {
        NodeList<? extends Node> subList = (NodeList<? extends Node>) subListMetaModel.getValue(node);
        if (subList != null && !subList.isEmpty()) {
            final List<String> listContent = new ArrayList<>();
            for (Node subListNode : subList) {
                listContent.add(output(subListNode, null, level + 1));
            }
            content.add(listContent.stream().collect(Collectors.joining(",", q(subListMetaModel.getName()) + ":[", "]")));
        }
    }
    if (name == null) {
        return content.stream().collect(Collectors.joining(",", "{", "}"));
    }
    return content.stream().collect(Collectors.joining(",", q(name) + ":{", "}"));
}
Also used : Node(com.github.javaparser.ast.Node) NodeList(com.github.javaparser.ast.NodeList) ArrayList(java.util.ArrayList) NodeMetaModel(com.github.javaparser.metamodel.NodeMetaModel) PropertyMetaModel(com.github.javaparser.metamodel.PropertyMetaModel)

Aggregations

Node (com.github.javaparser.ast.Node)95 Test (org.junit.Test)24 Expression (com.github.javaparser.ast.expr.Expression)22 NodeList (com.github.javaparser.ast.NodeList)18 Comment (com.github.javaparser.ast.comments.Comment)13 CompilationUnit (com.github.javaparser.ast.CompilationUnit)12 MethodCallExpr (com.github.javaparser.ast.expr.MethodCallExpr)12 NameExpr (com.github.javaparser.ast.expr.NameExpr)12 BlockStmt (com.github.javaparser.ast.stmt.BlockStmt)12 ArrayList (java.util.ArrayList)11 StringLiteralExpr (com.github.javaparser.ast.expr.StringLiteralExpr)8 Collectors (java.util.stream.Collectors)8 MethodDeclaration (com.github.javaparser.ast.body.MethodDeclaration)7 LineComment (com.github.javaparser.ast.comments.LineComment)7 BinaryExpr (com.github.javaparser.ast.expr.BinaryExpr)7 EnclosedExpr (com.github.javaparser.ast.expr.EnclosedExpr)7 SimpleName (com.github.javaparser.ast.expr.SimpleName)7 HalfBinaryExpr (org.drools.mvel.parser.ast.expr.HalfBinaryExpr)7 VariableDeclarator (com.github.javaparser.ast.body.VariableDeclarator)6 AssignExpr (com.github.javaparser.ast.expr.AssignExpr)6