Example usage for javax.lang.model.element TypeElement getEnclosedElements

List of usage examples for javax.lang.model.element TypeElement getEnclosedElements

Introduction

In this page you can find the example usage for javax.lang.model.element TypeElement getEnclosedElements.

Prototype

@Override
List<? extends Element> getEnclosedElements();

Source Link

Document

Returns the fields, methods, constructors, and member types that are directly declared in this class or interface.

Usage

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);
    }

}