List of usage examples for javax.lang.model.element TypeElement getEnclosedElements
@Override
List<? extends Element> getEnclosedElements();
From source file:io.github.jeddict.jcode.util.JavaSourceHelper.java
public static String getIdFieldName(JavaSource source) { final String[] fieldName = new String[1]; try {/*from ww w .j a v a 2 s.com*/ source.runUserActionTask(new AbstractTask<CompilationController>() { public void run(CompilationController controller) throws IOException { controller.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED); TypeElement classElement = getTopLevelClassElement(controller); if (classElement == null) { return; } List<VariableElement> fields = ElementFilter.fieldsIn(classElement.getEnclosedElements()); for (VariableElement field : fields) { List<? extends AnnotationMirror> annotations = field.getAnnotationMirrors(); for (AnnotationMirror annotation : annotations) { if (annotation.toString().equals("@javax.persistence.Id")) { //NOI18N fieldName[0] = field.getSimpleName().toString(); return; } } } } }, true); } catch (IOException ex) { Exceptions.printStackTrace(ex); } return fieldName[0]; }
From source file:io.github.jeddict.jcode.util.JavaSourceHelper.java
public static Collection<String> getAnnotationValuesForAllMethods(JavaSource source, final String annotation) { final Collection<String> results = new HashSet<>(); try {//w ww. jav a 2 s . c om source.runUserActionTask(new AbstractTask<CompilationController>() { public void run(CompilationController controller) throws IOException { controller.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED); TypeElement classElement = getTopLevelClassElement(controller); if (classElement == null) { return; } List<ExecutableElement> methods = ElementFilter.methodsIn(classElement.getEnclosedElements()); for (ExecutableElement method : methods) { for (AnnotationMirror mirror : method.getAnnotationMirrors()) { if (((TypeElement) mirror.getAnnotationType().asElement()).getQualifiedName() .contentEquals(annotation)) { for (AnnotationValue value : mirror.getElementValues().values()) { results.add(value.getValue().toString()); } } } } } }, true); } catch (IOException ex) { Exceptions.printStackTrace(ex); } return results; }
From source file:com.github.pellaton.jazoon2012.JazoonProcessor.java
private void processElement(TypeElement typeElement) { for (AnnotationMirror annotation : typeElement.getAnnotationMirrors()) { Element annotationTypeElement = annotation.getAnnotationType().asElement(); if (annotationTypeElement.equals(this.configurationTypeElement)) { List<? extends Element> enclosedElements = typeElement.getEnclosedElements(); processClass(typeElement, ElementFilter.constructorsIn(enclosedElements)); for (ExecutableElement method : ElementFilter.methodsIn(enclosedElements)) { processMethod(typeElement, method); }//ww w . ja v a2 s . c o m } } }
From source file:fr.xebia.extras.selma.codegen.FactoryWrapper.java
private int collectFactoryMethods(TypeElement element, boolean ignoreAbstract) { int factoryMethodCount = 0; final List<ExecutableElement> methods = ElementFilter.methodsIn(element.getEnclosedElements()); for (ExecutableElement method : methods) { MethodWrapper methodWrapper = new MethodWrapper(method, (DeclaredType) element.asType(), context); // We should ignore abstract methods if parsing an abstract mapper class if (ignoreAbstract && methodWrapper.isAbstract()) { continue; }// w w w. j av a2 s . c o m if (isValidFactoryMethod(methodWrapper)) { pushFactoryMethod(element, methodWrapper, ignoreAbstract); factoryMethodCount++; } } return factoryMethodCount; }
From source file:org.jdto.tools.AnnotationConfigVerifier.java
private void validateDTO(TypeElement element, TypeElement targetType, Messager msg) { //configuration ought to be on the getter, the setter or the field. //since we're copying from beans first inspect the getters/setters //go trough all the getters. List<? extends Element> elms = element.getEnclosedElements(); for (Element enclElement : elms) { //we're interested on getters. if (elementIsRelevant(enclElement)) { SourceConfiguration sourceProperty = extractSourceProperty(element, enclElement, msg); validateElementConfiguration(sourceProperty, enclElement, targetType, msg); }//from ww w .j a v a 2 s . c om } }
From source file:org.leandreck.endpoints.processor.model.TypeNodeFactory.java
public List<TypeNode> defineChildren(final TypeElement typeElement, final DeclaredType typeMirror) { final List<String> publicGetter = definePublicGetter(typeElement, typeMirror, typeUtils); return ElementFilter.fieldsIn(typeElement.getEnclosedElements()).stream() .filter(c -> c.getAnnotation(TypeScriptIgnore.class) == null) .filter(c -> !c.getModifiers().contains(Modifier.TRANSIENT)) .filter(c -> filterVariableElements(c, publicGetter)) .map(it -> this.createTypeNode(it, /* parameterName */ null, typeMirror)).collect(toList()); }
From source file:fr.xebia.extras.selma.codegen.CustomMapperWrapper.java
private int collectCustomMethods(TypeElement element, boolean ignoreAbstract) { int mappingMethodCount = 0; final List<ExecutableElement> methods = ElementFilter.methodsIn(element.getEnclosedElements()); final HashMap<CustomMapperKey, CustomMapperEntry> customInOutTypes = new HashMap<CustomMapperKey, CustomMapperEntry>(); for (ExecutableElement method : methods) { MethodWrapper methodWrapper = new MethodWrapper(method, (DeclaredType) element.asType(), context); // We should ignore abstract methods if parsing an abstract mapper class if (ignoreAbstract && methodWrapper.isAbstract()) { continue; }/*from w ww . java 2s . co m*/ if (isValidCustomMapping(methodWrapper)) { if (methodWrapper.isCustomMapper()) { pushCustomMapper(element, methodWrapper, null, ignoreAbstract); addCustomInOutType(customInOutTypes, methodWrapper); } else { pushMappingInterceptor(element, methodWrapper, ignoreAbstract); } mappingMethodCount++; } } // Create defaults custom mappers if immutable or mutable is missing addMissingMappings(customInOutTypes, element, ignoreAbstract); return mappingMethodCount; }
From source file:org.lambdamatic.mongodb.apt.template.MetadataTemplateContext.java
/** * Full constructor// ww w . j a v a 2s . c o m * * @param domainElement the {@link TypeElement} to work on. * @param templateFieldBuildFunction the {@link Function} used to generate a single * {@link TemplateField} from a given relevant {@link VariableElement} in the given * {@link TypeElement}. * @param templateMethodsBuildFunction the {@link Function} used to generate zero or more * {@link TemplateMethods} from a given relevant {@link VariableElement} in the given * {@link TypeElement}. * */ private MetadataTemplateContext(final TypeElement domainElement, final BaseAnnotationProcessor annotationProcessor, final BiFunction<VariableElement, ProcessingEnvironment, TemplateField> templateFieldBuildFunction, final Function<DeclaredType, String> simpleClassNameBuilder, final String templateFileName) { super((DeclaredType) domainElement.asType(), annotationProcessor); this.domainTypeFields = domainElement.getEnclosedElements().stream() .filter(e -> e.getKind() == ElementKind.FIELD) .filter(e -> e.getAnnotation(TransientField.class) == null).map(e -> (VariableElement) e) .collect(Collectors.toList()); this.templateFields = this.domainTypeFields.stream().map(f -> { return templateFieldBuildFunction.apply(f, annotationProcessor.getProcessingEnvironment()); }).collect(Collectors.toList()); this.simpleClassName = simpleClassNameBuilder.apply(this.domainType); this.fullyQualifiedClassName = getPackageName() + '.' + this.simpleClassName; this.templateFileName = templateFileName; this.annotations = Stream.of(domainElement.getAnnotationsByType(EmbeddedDocument.class)) .map(a -> TemplateAnnotation.Builder.type(EmbeddedDocument.class).build()) .collect(Collectors.toList()); }
From source file:org.mule.devkit.module.generation.AbstractMessageGenerator.java
protected Map<String, FieldVariableElement> generateFieldForEachSetter(DefinedClass transferObjectClass, TypeElement transferObject) { Map<String, AbstractMessageGenerator.FieldVariableElement> fields = new HashMap<String, FieldVariableElement>(); java.util.List<ExecutableElement> methods = ElementFilter.methodsIn(transferObject.getEnclosedElements()); for (ExecutableElement method : methods) { String methodName = method.getSimpleName().toString(); if (!methodName.startsWith("set") || method.getReturnType().getKind() != TypeKind.VOID || method.getParameters().size() != 1) { continue; }// w w w . ja va2s .c o m String fieldName = StringUtils.uncapitalize(methodName.substring(methodName.indexOf("set") + 3)); TypeMirror fieldTypeMirror = method.getParameters().get(0).asType(); FieldVariable field = null; if (fieldTypeMirror.toString().contains(ProcessorCallback.class.getName())) { field = transferObjectClass.field(Modifier.PRIVATE, ref(MessageProcessor.class), fieldName); } else { field = transferObjectClass.field(Modifier.PRIVATE, ref(Object.class), fieldName); } FieldVariable fieldType = transferObjectClass.field(Modifier.PRIVATE, ref(fieldTypeMirror), fieldName + "Type"); fields.put(fieldName, new AbstractMessageGenerator.FieldVariableElement(field, fieldType, null)); } return fields; }
From source file:com.dspot.declex.action.Actions.java
private void addActions(String actions) { if (!EXTERNAL_ACTIONS.contains(actions)) { TypeElement typeElement = env.getProcessingEnvironment().getElementUtils().getTypeElement(actions); CLASSES: for (Element element : typeElement.getEnclosedElements()) { if (element.getKind().isClass()) { List<? extends TypeMirror> superTypesForGate = env.getProcessingEnvironment().getTypeUtils() .directSupertypes(element.asType()); for (TypeMirror gate : superTypesForGate) { TypeElement superElementForGate = env.getProcessingEnvironment().getElementUtils() .getTypeElement(gate.toString()); if (superElementForGate == null) continue; if (superElementForGate.getKind().equals(ElementKind.INTERFACE)) continue; if (superElementForGate.asType().toString().equals(Object.class.getCanonicalName())) continue; //This is the Gate element, its parent it is the Holder List<? extends TypeMirror> superTypesForHolder = env.getProcessingEnvironment() .getTypeUtils().directSupertypes(superElementForGate.asType()); for (TypeMirror holder : superTypesForHolder) { TypeElement superElementForHolder = env.getProcessingEnvironment().getElementUtils() .getTypeElement(holder.toString()); if (superElementForHolder == null) continue; if (superElementForHolder.getKind().equals(ElementKind.INTERFACE)) continue; if (superElementForHolder.asType().toString().equals(Object.class.getCanonicalName())) continue; addActionHolder(superElementForHolder.asType().toString(), true); //This is the Holder element continue CLASSES; }//from w w w . j a v a 2 s.c o m } } } EXTERNAL_ACTIONS.add(actions); } }