
com.vaadin.base.devserver.themeeditor.utils.LocalClassNamesVisitor Maven / Gradle / Ivy
package com.vaadin.base.devserver.themeeditor.utils;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.expr.MethodCallExpr;
import com.github.javaparser.ast.expr.StringLiteralExpr;
import com.github.javaparser.ast.stmt.ExpressionStmt;
import com.github.javaparser.ast.visitor.GenericVisitorAdapter;
import com.vaadin.base.devserver.themeeditor.JavaSourceModifier;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* Implementation of {@link com.github.javaparser.ast.visitor.GenericVisitor}
* that searches for classnames applied to given component.
*/
public class LocalClassNamesVisitor extends GenericVisitorAdapter {
private List arguments = new ArrayList<>();
@Override
public Void visit(ExpressionStmt n, Void arg) {
if (n.getExpression() instanceof MethodCallExpr methodCallExpr
&& Objects.equals("addClassName",
methodCallExpr.getName().asString())
&& n.getComment().filter(
JavaSourceModifier.LOCAL_CLASSNAME_COMMENT::equals)
.isPresent()) {
methodCallExpr.getArguments().stream()
.map(Expression::asStringLiteralExpr)
.map(StringLiteralExpr::asString).forEach(arguments::add);
}
return super.visit(n, arg);
}
public List getArguments() {
return arguments;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy