diff options
Diffstat (limited to 'javaparser-symbol-solver-testing/src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java')
-rw-r--r-- | javaparser-symbol-solver-testing/src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-testing/src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java b/javaparser-symbol-solver-testing/src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java new file mode 100644 index 000000000..fb8697f3c --- /dev/null +++ b/javaparser-symbol-solver-testing/src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java @@ -0,0 +1,100 @@ +package com.github.javaparser.ast.nodeTypes; + +import java.util.List; + +import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.body.Parameter; +import com.github.javaparser.ast.body.VariableDeclaratorId; +import com.github.javaparser.ast.type.ClassOrInterfaceType; +import com.github.javaparser.ast.type.Type; + +public interface NodeWithParameters<T> { + List<Parameter> getParameters(); + + T setParameters(List<Parameter> parameters); + + default T addParameter(Type type, String name) { + return addParameter(new Parameter(type, new VariableDeclaratorId(name))); + } + + default T addParameter(Class<?> paramClass, String name) { + ((Node) this).tryAddImportToParentCompilationUnit(paramClass); + return addParameter(new ClassOrInterfaceType(paramClass.getSimpleName()), name); + } + + /** + * Remember to import the class in the compilation unit yourself + * + * @param className the name of the class, ex : org.test.Foo or Foo if you added manually the import + * @param name the name of the parameter + */ + default T addParameter(String className, String name) { + return addParameter(new ClassOrInterfaceType(className), name); + } + + @SuppressWarnings("unchecked") + default T addParameter(Parameter parameter) { + getParameters().add(parameter); + parameter.setParentNode((Node) this); + return (T) this; + } + + default Parameter addAndGetParameter(Type type, String name) { + return addAndGetParameter(new Parameter(type, new VariableDeclaratorId(name))); + } + + default Parameter addAndGetParameter(Class<?> paramClass, String name) { + ((Node) this).tryAddImportToParentCompilationUnit(paramClass); + return addAndGetParameter(new ClassOrInterfaceType(paramClass.getSimpleName()), name); + } + + /** + * Remember to import the class in the compilation unit yourself + * + * @param className the name of the class, ex : org.test.Foo or Foo if you added manually the import + * @param name the name of the parameter + * @return the {@link Parameter} created + */ + default Parameter addAndGetParameter(String className, String name) { + return addAndGetParameter(new ClassOrInterfaceType(className), name); + } + + default Parameter addAndGetParameter(Parameter parameter) { + getParameters().add(parameter); + parameter.setParentNode((Node) this); + return parameter; + } + + /** + * Try to find a {@link Parameter} by its name + * + * @param name the name of the param + * @return null if not found, the param found otherwise + */ + default Parameter getParamByName(String name) { + return getParameters().stream() + .filter(p -> p.getName().equals(name)).findFirst().orElse(null); + } + + /** + * Try to find a {@link Parameter} by its type + * + * @param type the type of the param + * @return null if not found, the param found otherwise + */ + default Parameter getParamByType(String type) { + return getParameters().stream() + .filter(p -> p.getType().toString().equals(type)).findFirst().orElse(null); + } + + /** + * Try to find a {@link Parameter} by its type + * + * @param type the type of the param <b>take care about generics, it wont work</b> + * @return null if not found, the param found otherwise + */ + default Parameter getParamByType(Class<?> type) { + return getParameters().stream() + .filter(p -> p.getType().toString().equals(type.getSimpleName())).findFirst().orElse(null); + } +} |