List of usage examples for javax.lang.model.util ElementFilter fieldsIn
public static Set<VariableElement> fieldsIn(Set<? extends Element> elements)
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; }