Example usage for javax.lang.model.util ElementFilter fieldsIn

List of usage examples for javax.lang.model.util ElementFilter fieldsIn

Introduction

In this page you can find the example usage for javax.lang.model.util ElementFilter fieldsIn.

Prototype

public static Set<VariableElement> fieldsIn(Set<? extends Element> elements) 

Source Link

Document

Returns a set of fields in elements .

Usage

From source file:Main.java

public static List<VariableElement> getFields(TypeElement classDecl) {
    return ElementFilter.fieldsIn(classDecl.getEnclosedElements());
}

From source file:org.mule.devkit.module.generation.PoolAdapterGenerator.java

public void generate(Element element) throws GenerationException {
    Module module = element.getAnnotation(Module.class);
    if (!module.poolable())
        return;//from   w  w  w. ja  v a 2 s  .co m

    DefinedClass poolAdapter = getPoolAdapterClass(element);
    poolAdapter.javadoc().add("A <code>" + poolAdapter.name() + "</code> is a wrapper around ");
    poolAdapter.javadoc().add(ref(element.asType()));
    poolAdapter.javadoc().add(" that enables pooling on the POJO.");

    java.util.List<VariableElement> variables = ElementFilter.fieldsIn(element.getEnclosedElements());
    for (VariableElement variable : variables) {
        Configurable configurable = variable.getAnnotation(Configurable.class);

        if (configurable == null)
            continue;

        FieldVariable configField = poolAdapter.field(Modifier.PRIVATE, ref(variable.asType()),
                variable.getSimpleName().toString());
        generateSetter(poolAdapter, configField);
    }

    FieldVariable muleContext = generateFieldForMuleContext(poolAdapter);
    FieldVariable flowConstruct = generateFieldForFlowConstruct(poolAdapter);
    FieldVariable poolingProfile = poolAdapter.field(Modifier.PROTECTED, ref(PoolingProfile.class),
            "poolingProfile");
    FieldVariable lifecyleEnabledObjectPool = poolAdapter.field(Modifier.PROTECTED,
            ref(LifecyleEnabledObjectPool.class), "lifecyleEnabledObjectPool");

    generateSetter(poolAdapter, poolingProfile);
    generateGetter(poolAdapter, poolingProfile);
    generateSetter(poolAdapter, lifecyleEnabledObjectPool);
    generateGetter(poolAdapter, lifecyleEnabledObjectPool);
    generateSetFlowConstructMethod(poolAdapter, flowConstruct);
    generateSetMuleContextMethod(poolAdapter, muleContext);

    generateStartMethod((TypeElement) element, poolAdapter, lifecyleEnabledObjectPool, muleContext,
            poolingProfile);
    generateStopMethod(poolAdapter, lifecyleEnabledObjectPool);
}

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

From source file:org.jraf.android.prefs.compiler.PrefsProcessor.java

@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    for (TypeElement te : annotations) {
        for (Element element : roundEnv.getElementsAnnotatedWith(te)) {
            TypeElement classElement = (TypeElement) element;
            PackageElement packageElement = (PackageElement) classElement.getEnclosingElement();

            String classComment = processingEnv.getElementUtils().getDocComment(classElement);

            List<Pref> prefList = new ArrayList<Pref>();
            // Iterate over the fields of the class
            for (VariableElement variableElement : ElementFilter.fieldsIn(classElement.getEnclosedElements())) {
                if (variableElement.getModifiers().contains(Modifier.STATIC)) {
                    // Ignore constants
                    continue;
                }/*w ww  .  jav a  2  s .  c  o m*/

                TypeMirror fieldType = variableElement.asType();
                boolean isAllowedType = PrefType.isAllowedType(fieldType);
                if (!isAllowedType) {
                    processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
                            fieldType + " is not allowed here, only these types are allowed: "
                                    + PrefType.getAllowedTypes(),
                            variableElement);
                    // Problem detected: halt
                    return true;
                }

                String fieldName = variableElement.getSimpleName().toString();
                org.jraf.android.prefs.Name fieldNameAnnot = variableElement
                        .getAnnotation(org.jraf.android.prefs.Name.class);
                String prefName = getPrefName(fieldName, fieldNameAnnot);

                String prefDefaultValue = getDefaultValue(variableElement, fieldType);
                if (prefDefaultValue == null) {
                    // Problem detected: halt
                    return true;
                }

                String fieldComment = processingEnv.getElementUtils().getDocComment(variableElement);
                Pref pref = new Pref(fieldName, prefName, PrefType.from(fieldType), prefDefaultValue,
                        fieldComment);
                prefList.add(pref);
            }

            Map<String, Object> args = new HashMap<String, Object>();

            // File name (optional - also use 'value' for this)
            org.jraf.android.prefs.Prefs prefsAnnot = classElement
                    .getAnnotation(org.jraf.android.prefs.Prefs.class);
            String fileName = prefsAnnot.value();
            if (fileName.isEmpty()) {
                fileName = prefsAnnot.fileName();
            }
            if (!fileName.isEmpty())
                args.put("fileName", fileName);

            // File mode (must only appear if fileName is defined)
            int fileMode = prefsAnnot.fileMode();
            if (fileMode != -1) {
                if (fileName.isEmpty()) {
                    // File mode set, but not file name (which makes no sense)
                    processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
                            "fileMode must only be set if fileName (or value) is also set", classElement);
                    // Problem detected: halt
                    return true;
                }
                args.put("fileMode", fileMode);
            }

            // Disable @Nullable generation
            args.put("disableNullable", prefsAnnot.disableNullable());

            JavaFileObject javaFileObject = null;
            try {
                // SharedPreferencesWrapper
                javaFileObject = processingEnv.getFiler()
                        .createSourceFile(classElement.getQualifiedName() + SUFFIX_PREF_WRAPPER);
                Template template = getFreemarkerConfiguration().getTemplate("prefwrapper.ftl");
                args.put("package", packageElement.getQualifiedName());
                args.put("comment", classComment);
                args.put("prefWrapperClassName", classElement.getSimpleName() + SUFFIX_PREF_WRAPPER);
                args.put("editorWrapperClassName", classElement.getSimpleName() + SUFFIX_EDITOR_WRAPPER);
                args.put("prefList", prefList);
                Writer writer = javaFileObject.openWriter();
                template.process(args, writer);
                IOUtils.closeQuietly(writer);

                // EditorWrapper
                javaFileObject = processingEnv.getFiler()
                        .createSourceFile(classElement.getQualifiedName() + "EditorWrapper");
                template = getFreemarkerConfiguration().getTemplate("editorwrapper.ftl");
                writer = javaFileObject.openWriter();
                template.process(args, writer);
                IOUtils.closeQuietly(writer);

            } catch (Exception e) {
                processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
                        "En error occurred while generating Prefs code " + e.getClass() + e.getMessage(),
                        element);
                e.printStackTrace();
                // Problem detected: halt
                return true;
            }
        }
    }
    return true;
}

From source file:org.mule.devkit.module.generation.PoolAdapterGenerator.java

private void generateStartMethod(TypeElement element, DefinedClass poolAdapter,
        FieldVariable lifecyleEnabledObjectPool, FieldVariable muleContext, FieldVariable poolingProfile) {
    DefinedClass objectFactory = context
            .getClassForRole(context.getNameUtils().generatePojoFactoryKey(element));

    Method startMethod = poolAdapter.method(Modifier.PUBLIC, context.getCodeModel().VOID, "start");
    startMethod._throws(MuleException.class);

    Variable objectFactoryField = startMethod.body().decl(objectFactory, "objectFactory",
            ExpressionFactory._new(objectFactory));
    java.util.List<VariableElement> variables = ElementFilter.fieldsIn(element.getEnclosedElements());
    for (VariableElement variable : variables) {
        Configurable configurable = variable.getAnnotation(Configurable.class);

        if (configurable == null)
            continue;

        startMethod.body()/*from   w  w  w.  j  ava  2s .c om*/
                .add(objectFactoryField
                        .invoke("set" + StringUtils.capitalize(variable.getSimpleName().toString()))
                        .arg(ExpressionFactory._this().ref(variable.getSimpleName().toString())));
    }

    Invocation defaultLifecycleEnabledObjectPool = ExpressionFactory
            ._new(ref(DefaultLifecycleEnabledObjectPool.class));
    defaultLifecycleEnabledObjectPool.arg(objectFactoryField);
    defaultLifecycleEnabledObjectPool.arg(poolingProfile);
    defaultLifecycleEnabledObjectPool.arg(muleContext);
    startMethod.body().assign(lifecyleEnabledObjectPool, defaultLifecycleEnabledObjectPool);

    startMethod.body().add(lifecyleEnabledObjectPool.invoke("initialise"));
    startMethod.body().add(lifecyleEnabledObjectPool.invoke("start"));
}

From source file:org.mule.devkit.module.generation.LifecycleAdapterFactoryGenerator.java

private void generateGetInstanceMethod(Element element, DefinedClass lifecycleAdapterFactory,
        DefinedClass poolObjectClass) {//from w  ww  .j av  a  2  s  .  c  o m
    Method getInstance = lifecycleAdapterFactory.method(Modifier.PUBLIC, ref(Object.class), "getInstance");
    getInstance.param(ref(MuleContext.class), "muleContext");

    Variable object = getInstance.body().decl(poolObjectClass, "object",
            ExpressionFactory._new(poolObjectClass));
    java.util.List<VariableElement> variables = ElementFilter.fieldsIn(element.getEnclosedElements());
    for (VariableElement variable : variables) {
        Configurable configurable = variable.getAnnotation(Configurable.class);

        if (configurable == null)
            continue;

        getInstance.body()
                .add(object.invoke("set" + StringUtils.capitalize(variable.getSimpleName().toString()))
                        .arg(ExpressionFactory._this().ref(variable.getSimpleName().toString())));
    }

    getInstance.body()._return(object);
}

From source file:net.pkhsolutions.ceres.common.builder.processor.BuildableAP.java

private Collection<VariableElement> getFields(TypeElement type) {
    final Set<Element> elements = new HashSet<Element>();
    elements.addAll(type.getEnclosedElements());
    TypeMirror supertype = type.getSuperclass();
    while (supertype.getKind() != TypeKind.NONE) {
        final TypeElement element = (TypeElement) processingEnv.getTypeUtils().asElement(supertype);
        elements.addAll(element.getEnclosedElements());
        supertype = element.getSuperclass();
    }/*  www.j  av  a2 s  . c om*/
    return ElementFilter.fieldsIn(elements);
}

From source file:org.immutables.value.processor.meta.ValueType.java

private Object findSerialVersionUID() {
    for (VariableElement field : ElementFilter.fieldsIn(element.getEnclosedElements())) {
        if (field.getSimpleName().contentEquals(SERIAL_VERSION_FIELD_NAME)
                && field.asType().getKind() == TypeKind.LONG) {
            return field.getConstantValue();
        }//  ww w .ja v  a  2s  . co  m
    }
    return null;
}

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:org.leandreck.endpoints.processor.model.TypeNodeFactory.java

private static List<String> definePublicGetter(final TypeElement typeElement, final TypeMirror typeMirror,
        final Types typeUtils) {

    final List<String> publicGetters = ElementFilter.methodsIn(typeElement.getEnclosedElements()).stream()
            .filter(g -> g.getSimpleName().toString().startsWith("get")
                    || g.getSimpleName().toString().startsWith("is"))
            .filter(g -> g.getModifiers().contains(Modifier.PUBLIC))
            .filter(g -> !g.getModifiers().contains(Modifier.ABSTRACT))//FIXME filter remaining modifiers
            .map(g -> g.getSimpleName().toString()).collect(toList());

    if (isLombokAnnotatedType(typeMirror, typeUtils)) {
        ElementFilter.fieldsIn(typeElement.getEnclosedElements()).stream()
                .filter(g -> !g.getModifiers().contains(Modifier.STATIC)).map(g -> g.getSimpleName().toString())
                .forEach(publicGetters::add);
    }//w  w  w .  j av a  2s .  c om

    return publicGetters;
}