List of usage examples for javax.lang.model.element TypeElement getEnclosedElements
@Override
List<? extends Element> getEnclosedElements();
From source file:Main.java
public static List<VariableElement> getFields(TypeElement classDecl) { return ElementFilter.fieldsIn(classDecl.getEnclosedElements()); }
From source file:Main.java
public static List<ExecutableElement> getMethods(TypeElement classDecl) { return ElementFilter.methodsIn(classDecl.getEnclosedElements()); }
From source file:org.jdto.tools.ModelUtils.java
public static Element findFieldOnType(TypeElement element, String name) { for (Element enclosedElement : element.getEnclosedElements()) { if (enclosedElement.getKind() == ElementKind.FIELD && name.equals(enclosedElement.getSimpleName().toString())) { return enclosedElement; }/*from w w w . ja va 2s . com*/ } return null; }
From source file:org.jdto.tools.ModelUtils.java
public static ExecutableElement findSetterOnType(TypeElement element, String name) { for (Element enclosedElement : element.getEnclosedElements()) { if (enclosedElement.getKind() != ElementKind.METHOD) { continue; }//w ww.j a v a 2s .com String elementName = enclosedElement.getSimpleName().toString(); if (elementName.startsWith("set")) { elementName = StringUtils.uncapitalize(elementName.substring(3)); if (name.equals(elementName)) { return (ExecutableElement) enclosedElement; } } } return null; }
From source file:org.jdto.tools.ModelUtils.java
public static ExecutableElement findGetterOnType(TypeElement element, String name) { for (Element enclosedElement : element.getEnclosedElements()) { if (enclosedElement.getKind() != ElementKind.METHOD) { continue; }//from ww w . j a v a2s.c om String elementName = enclosedElement.getSimpleName().toString(); if (elementName.startsWith("get")) { elementName = StringUtils.uncapitalize(elementName.substring(3)); if (name.equals(elementName)) { return (ExecutableElement) enclosedElement; } } if (elementName.startsWith("is")) { elementName = StringUtils.uncapitalize(elementName.substring(2)); if (name.equals(elementName)) { return (ExecutableElement) enclosedElement; } } } return null; }
From source file:therian.buildweaver.StandardOperatorsProcessor.java
private static ExecutableElement findDefaultConstructor(TypeElement t) { for (Element element : t.getEnclosedElements()) { if (element.getKind() == ElementKind.CONSTRUCTOR) { ExecutableElement cs = (ExecutableElement) element; if (cs.getParameters().size() == 0 && cs.getModifiers().contains(Modifier.PUBLIC)) { return cs; }/* w ww.j a v a 2s. c om*/ } } return null; }
From source file:info.archinnov.achilles.internals.parser.UDFParser.java
public static List<UDFSignature> parseFunctionRegistryAndValidateTypes(AptUtils aptUtils, TypeElement elm) { final List<ExecutableElement> methods = ElementFilter.methodsIn(elm.getEnclosedElements()); final Optional<String> keyspace = AnnotationTree.findKeyspaceForFunctionRegistry(aptUtils, elm); final TypeName sourceClass = TypeName.get(aptUtils.erasure(elm)); //Not allow to declare function in system keyspaces if (keyspace.isPresent()) { final String keyspaceName = keyspace.get(); aptUtils.validateFalse(/*from w w w . j a v a2 s . c o m*/ FORBIDDEN_KEYSPACES.contains(keyspaceName) || FORBIDDEN_KEYSPACES.contains(keyspaceName.toLowerCase()), "The provided keyspace '%s' on function registry class '%s' is forbidden because it is a system keyspace", keyspaceName, sourceClass); } aptUtils.validateFalse(keyspace.isPresent() && isBlank(keyspace.get()), "The declared keyspace for function registry '%s' should not be blank", elm.getSimpleName().toString()); return methods.stream().map(method -> { final List<TypeName> parametersType = method.getParameters().stream().map(VariableElement::asType) .map(TypeName::get).collect(toList()); final String methodName = method.getSimpleName().toString(); final List<UDFParamSignature> parameterSignatures = method.getParameters().stream() .map(x -> new UDFParamSignature(TypeName.get(x.asType()).box(), x.getSimpleName().toString())) .collect(toList()); //Validate parameter types for (TypeName param : parametersType) { TypeValidator.validateNativeTypesForFunction(aptUtils, method, param, "argument"); } //Validate return type final TypeMirror returnTypeMirror = method.getReturnType(); aptUtils.validateFalse(returnTypeMirror.getKind() == TypeKind.VOID, "The return type for the method '%s' on class '%s' should not be VOID", method.toString(), elm.getSimpleName().toString()); final TypeName returnType = TypeName.get(returnTypeMirror).box(); TypeValidator.validateNativeTypesForFunction(aptUtils, method, returnType, "return type"); // Validate NOT system function comparing only name lowercase aptUtils.validateFalse(SYSTEM_FUNCTIONS_NAME.contains(methodName.toLowerCase()), "The name of the function '%s' in class '%s' is reserved for system functions", method, sourceClass); return new UDFSignature(keyspace, sourceClass, methodName, returnType, parametersType, parameterSignatures); }).collect(toList()); }
From source file:info.archinnov.achilles.internals.parser.FunctionParser.java
public static List<FunctionSignature> parseFunctionRegistryAndValidateTypes(AptUtils aptUtils, TypeElement elm, GlobalParsingContext context) {//from www. j av a 2 s .c o m final List<ExecutableElement> methods = ElementFilter.methodsIn(elm.getEnclosedElements()); final Optional<String> keyspace = AnnotationTree.findKeyspaceForFunctionRegistry(aptUtils, elm); final FunctionParamParser paramParser = new FunctionParamParser(aptUtils); final TypeName parentType = TypeName.get(aptUtils.erasure(elm)); //Not allow to declare function in system keyspaces if (keyspace.isPresent()) { final String keyspaceName = keyspace.get(); aptUtils.validateFalse( FORBIDDEN_KEYSPACES.contains(keyspaceName) || FORBIDDEN_KEYSPACES.contains(keyspaceName.toLowerCase()), "The provided keyspace '%s' on function registry class '%s' is forbidden because it is a system keyspace", keyspaceName, parentType); } aptUtils.validateFalse(keyspace.isPresent() && isBlank(keyspace.get()), "The declared keyspace for function registry '%s' should not be blank", elm.getSimpleName().toString()); return methods.stream().map(method -> { final String methodName = method.getSimpleName().toString(); final List<AnnotationTree> annotationTrees = AnnotationTree.buildFromMethodForParam(aptUtils, method); final List<? extends VariableElement> parameters = method.getParameters(); final List<FunctionParamSignature> parameterSignatures = new ArrayList<>(parameters.size()); for (int i = 0; i < parameters.size(); i++) { final VariableElement parameter = parameters.get(i); context.nestedTypesStrategy.validate(aptUtils, annotationTrees.get(i), method.toString(), parentType); final FunctionParamSignature functionParamSignature = paramParser.parseParam(context, annotationTrees.get(i), parentType, methodName, parameter.getSimpleName().toString()); parameterSignatures.add(functionParamSignature); } //Validate return type final TypeMirror returnType = method.getReturnType(); aptUtils.validateFalse(returnType.getKind() == TypeKind.VOID, "The return type for the method '%s' on class '%s' should not be VOID", method.toString(), elm.getSimpleName().toString()); aptUtils.validateFalse(returnType.getKind().isPrimitive(), "Due to internal JDK API limitations, UDF/UDA return types cannot be primitive. " + "Use their Object counterpart instead for method '%s' " + "in function registry '%s'", method.toString(), elm.getQualifiedName()); final FunctionParamSignature returnTypeSignature = paramParser.parseParam(context, AnnotationTree.buildFromMethodForReturnType(aptUtils, method), parentType, methodName, "returnType"); // Validate NOT system function comparing only name lowercase aptUtils.validateFalse(SYSTEM_FUNCTIONS_NAME.contains(methodName.toLowerCase()), "The name of the function '%s' in class '%s' is reserved for system functions", method, parentType); return new FunctionSignature(keyspace, parentType, methodName, returnTypeSignature, parameterSignatures); }).collect(toList()); }
From source file:info.archinnov.achilles.internals.parser.validator.BeanValidator.java
public static void validateHasPublicConstructor(AptUtils aptUtils, TypeName typeName, TypeElement typeElement) { final long constructorCount = ElementFilter.constructorsIn(typeElement.getEnclosedElements()).stream() .filter(x -> x.getModifiers().contains(Modifier.PUBLIC)) // public constructor .filter(x -> x.getParameters().size() == 0) //No arg constructor .count();// w w w . j av a2 s.c o m aptUtils.validateTrue(constructorCount == 1, "Bean type '%s' should have a public constructor", typeName); }
From source file:org.mule.module.extension.internal.capability.xml.schema.AnnotationProcessorUtils.java
static Map<String, VariableElement> getFieldsAnnotatedWith(TypeElement typeElement, Class<? extends Annotation> annotation) { return collectAnnotatedElements(ElementFilter.fieldsIn(typeElement.getEnclosedElements()), annotation); }