List of usage examples for javax.lang.model.element TypeElement asType
@Override TypeMirror asType();
From source file:fr.xebia.extras.selma.codegen.CustomMapperWrapper.java
void emitCustomMappersFields(JavaWriter writer, boolean assign) throws IOException { for (TypeElement customMapperField : customMapperFields) { final String field = String.format(CUSTOM_MAPPER_FIELD_TPL, customMapperField.getSimpleName().toString()); if (assign) { if (customMapperField.getKind() != ElementKind.INTERFACE && !(customMapperField.getKind() == ElementKind.CLASS && customMapperField.getModifiers().contains(ABSTRACT))) { TypeConstructorWrapper constructorWrapper = new TypeConstructorWrapper(context, customMapperField); // assign the customMapper field to a newly created instance passing to it the declared source params writer.emitStatement("this.%s = new %s(%s)", field, customMapperField.getQualifiedName().toString(), constructorWrapper.hasMatchingSourcesConstructor ? context.newParams() : ""); }/*from ww w. j av a2 s.co m*/ } else { writer.emitEmptyLine(); writer.emitJavadoc("This field is used for custom Mapping"); if (ioC == IoC.SPRING) { writer.emitAnnotation("org.springframework.beans.factory.annotation.Autowired"); } writer.emitField(customMapperField.asType().toString(), String.format(CUSTOM_MAPPER_FIELD_TPL, customMapperField.getSimpleName().toString()), EnumSet.of(PRIVATE)); writer.emitEmptyLine(); writer.emitJavadoc("Custom Mapper setter for " + field); EnumSet<Modifier> modifiers = EnumSet.of(PUBLIC, FINAL); if (ioC == IoC.CDI) { modifiers = EnumSet.of(PUBLIC); } writer.beginMethod("void", "setCustomMapper" + customMapperField.getSimpleName(), modifiers, customMapperField.asType().toString(), "mapper"); writer.emitStatement("this.%s = mapper", field); writer.endMethod(); writer.emitEmptyLine(); } } }
From source file:org.androidannotations.helper.ValidatorHelper.java
private boolean extendsType(Element element, String typeQualifiedName) { TypeMirror elementType = element.asType(); TypeElement typeElement = annotationHelper.typeElementFromQualifiedName(typeQualifiedName); if (typeElement != null) { TypeMirror expectedType = typeElement.asType(); return annotationHelper.isSubtype(elementType, expectedType); }/*w w w . j a va 2 s .co m*/ return false; }
From source file:org.kie.workbench.common.forms.adf.processors.FormDefinitionsProcessor.java
protected void processFormDefinition(TypeElement formElement) throws Exception { final Messager messager = processingEnv.getMessager(); messager.printMessage(Diagnostic.Kind.NOTE, "Discovered FormDefintion class [" + formElement.getSimpleName() + "]"); boolean checkInheritance = false; FormDefinition defintion = formElement.getAnnotation(FormDefinition.class); checkInheritance = defintion.allowInheritance(); List<Map<String, String>> formElements = new ArrayList<>(); if (checkInheritance) { TypeElement parent = getParent(formElement); formElements.addAll(extractParentFormFields(parent, defintion.policy(), defintion.i18n())); }// www . j a v a2 s. c o m formElements.addAll(extracFormFields(formElement, defintion.policy(), defintion.i18n())); FormGenerationUtils.sort(defintion.startElement(), formElements); messager.printMessage(Diagnostic.Kind.NOTE, "Discovered " + formElements.size() + " elements for form [" + formElement.getQualifiedName().toString() + "]"); String modelClassName = formElement.getQualifiedName().toString(); String builderClassName = fixClassName(formElement.getQualifiedName().toString()) + "FormBuilder"; Map<String, Object> templateContext = new HashMap<>(); templateContext.put("modelClass", modelClassName); templateContext.put("builderClassName", builderClassName); templateContext.put("startElement", defintion.startElement()); templateContext.put("i18n_bundle", StringUtils.isEmpty(defintion.i18n().bundle()) ? formElement.asType().toString() : defintion.i18n().bundle()); Column[] columns = defintion.layout().value(); List<String> layoutColumns = new ArrayList<>(); if (columns.length == 0) { layoutColumns.add(ColSpan.SPAN_12.getName()); } else { for (Column column : columns) { layoutColumns.add(column.value().getName()); } } templateContext.put("layout_columns", layoutColumns); templateContext.put("elements", formElements); StringBuffer builder = writeTemplate("templates/FormDefinitionSettingsBuilder.ftl", templateContext); Map<String, String> form = new HashMap<>(); form.put("package", ((PackageElement) formElement.getEnclosingElement()).getQualifiedName().toString()); form.put("modelClass", modelClassName); form.put("builderClass", builderClassName); form.put("builderCode", builder.toString()); context.getForms().add(form); }
From source file:com.dspot.declex.server.ServerModelHandler.java
private void getFieldsAndMethods(TypeElement element, Map<String, String> fields, Map<String, String> methods) { List<? extends Element> elems = element.getEnclosedElements(); for (Element elem : elems) { final String elemName = elem.getSimpleName().toString(); final String elemType = elem.asType().toString(); //Static methods are included if (methods != null) { if (elem.getKind() == ElementKind.METHOD) { if (elem.getModifiers().contains(Modifier.PRIVATE)) continue; ExecutableElement executableElement = (ExecutableElement) elem; //One parameter means that the method can be used to update the model if (executableElement.getParameters().size() == 1) { VariableElement param = executableElement.getParameters().get(0); methods.put(elemName, TypeUtils.typeFromTypeString(param.asType().toString(), getEnvironment())); }// w w w . ja va 2 s . c o m } } if (elem.getModifiers().contains(Modifier.STATIC)) continue; if (fields != null) { if (elem.getKind() == ElementKind.FIELD) { if (elem.getModifiers().contains(Modifier.PRIVATE)) continue; fields.put(elemName, TypeUtils.typeFromTypeString(elemType, getEnvironment())); } } } //Apply to Extensions List<? extends TypeMirror> superTypes = getProcessingEnvironment().getTypeUtils() .directSupertypes(element.asType()); for (TypeMirror type : superTypes) { TypeElement superElement = getProcessingEnvironment().getElementUtils().getTypeElement(type.toString()); if (superElement.getAnnotation(Extension.class) != null) { getFieldsAndMethods(superElement, fields, methods); } break; } }
From source file:auto.parse.processor.AutoParseProcessor.java
private void defineVarsForType(TypeElement type, Map<String, Object> vars) throws CompileException { List<ExecutableElement> methods = new ArrayList<ExecutableElement>(); findLocalAndInheritedMethods(type, methods); vars.putAll(objectMethodsToGenerate(methods)); dontImplementAnnotationEqualsOrHashCode(type, vars); List<ExecutableElement> toImplement = methodsToImplement(methods, vars); Set<TypeMirror> types = new HashSet<TypeMirror>(); types.addAll(returnTypesOf(toImplement)); TypeMirror javaUtilArrays = getTypeMirror(Arrays.class); if (containsArrayType(types)) { // If there are array properties then we will be referencing java.util.Arrays. // Arrange to import it unless that would introduce ambiguity. types.add(javaUtilArrays);/*from w ww.j a v a 2 s. co m*/ } String pkg = TypeSimplifier.packageNameOf(type); TypeSimplifier typeSimplifier = new TypeSimplifier(processingEnv.getTypeUtils(), pkg, types); vars.put("typeSimplifier", typeSimplifier); vars.put("imports", typeSimplifier.typesToImport()); vars.put("Arrays", typeSimplifier.simplify(javaUtilArrays)); List<Property> getters = new ArrayList<Property>(); List<Property> setters = new ArrayList<Property>(); for (ExecutableElement method : toImplement) { String propType = typeSimplifier.simplify(method.getReturnType()); Property prop = new Property(method, propType, vars); if (method.getSimpleName().toString().startsWith("get")) { getters.add(prop); } else if (method.getSimpleName().toString().startsWith("set")) { setters.add(prop); } } // If we are running from Eclipse, undo the work of its compiler which sorts methods. eclipseHack().reorderProperties(getters); eclipseHack().reorderProperties(setters); vars.put("getters", getters); vars.put("setters", setters); vars.put("serialVersionUID", getSerialVersionUID(type)); TypeMirror parcelable = getTypeMirror("android.os.Parcelable"); vars.put("parcelable", processingEnv.getTypeUtils().isAssignable(type.asType(), parcelable)); }
From source file:org.kie.workbench.common.forms.adf.processors.FormDefinitionGenerator.java
private List<FormDefinitionFieldData> extracFormFields(TypeElement type, FieldPolicy policy, I18nSettings i18nSettings, Map<String, String> defaultParams) throws Exception { final Types typeUtils = context.getProcessingEnvironment().getTypeUtils(); Collection<FieldInfo> fieldInfos = FormGenerationUtils.extractFieldInfos(type, fieldElement -> filter(fieldElement, policy)); List<FormDefinitionFieldData> fieldSettings = new ArrayList<>(); for (FieldInfo fieldInfo : fieldInfos) { if (fieldInfo.getSetter() != null && fieldInfo.getGetter() != null) { String fieldName = fieldInfo.getFieldElement().getSimpleName().toString(); FormDefinitionFieldData fieldData = new FormDefinitionFieldData(type.getQualifiedName().toString(), fieldName);// ww w.ja v a 2 s. c om fieldData.setLabel(fieldName); fieldData.setBinding(fieldName); fieldData.setMethodName("getFormElement_" + fieldName); boolean isList = false; org.kie.workbench.common.forms.model.TypeKind typeKind = org.kie.workbench.common.forms.model.TypeKind.BASE; boolean overrideI18n = false; TypeMirror finalType = fieldInfo.getFieldElement().asType(); TypeElement finalTypeElement = (TypeElement) typeUtils.asElement(finalType); String fieldModifier = ""; if (finalTypeElement.getKind().equals(ElementKind.CLASS)) { FieldDefinition fieldDefinitionAnnotation = finalTypeElement .getAnnotation(FieldDefinition.class); if (fieldDefinitionAnnotation != null) { // Override the using the i18n mechanism if (fieldDefinitionAnnotation.i18nMode().equals(I18nMode.OVERRIDE_I18N_KEY)) { fieldData.setLabel(finalType.toString() + i18nSettings.separator() + fieldDefinitionAnnotation.labelKeySuffix()); Collection<FieldInfo> labelInfos = FormGenerationUtils.extractFieldInfos( finalTypeElement, fieldElement -> fieldElement.getAnnotation(FieldLabel.class) != null); if (labelInfos != null && labelInfos.size() == 1) { FieldInfo labelInfo = labelInfos.iterator().next(); fieldData.setLabel(finalType.toString() + i18nSettings.separator() + labelInfo.getFieldElement().getSimpleName()); } fieldData.setHelpMessage(finalType.toString() + i18nSettings.separator() + fieldDefinitionAnnotation.helpMessageKeySuffix()); Collection<FieldInfo> helpMessages = FormGenerationUtils.extractFieldInfos( finalTypeElement, fieldElement -> fieldElement.getAnnotation(FieldHelp.class) != null); if (helpMessages != null && helpMessages.size() == 1) { FieldInfo helpInfo = helpMessages.iterator().next(); fieldData.setHelpMessage(finalType.toString() + i18nSettings.separator() + helpInfo.getFieldElement().getSimpleName()); } } Collection<FieldInfo> fieldValue = FormGenerationUtils.extractFieldInfos(finalTypeElement, fieldElement -> fieldElement.getAnnotation(FieldValue.class) != null); if (fieldValue == null || fieldValue.size() != 1) { throw new Exception("Problem processing FieldDefinition [" + finalType + "]: it should have one field marked as @FieldValue"); } FieldInfo valueInfo = fieldValue.iterator().next(); fieldData.setBinding( fieldData.getBinding() + "." + valueInfo.getFieldElement().getSimpleName()); fieldModifier = FormGenerationUtils.fixClassName(finalType.toString()) + "_FieldStatusModifier"; finalType = valueInfo.getFieldElement().asType(); finalTypeElement = (TypeElement) typeUtils.asElement(finalType); overrideI18n = !fieldDefinitionAnnotation.i18nMode().equals(I18nMode.DONT_OVERRIDE); } else { FormDefinition formDefinitionAnnotation = finalTypeElement .getAnnotation(FormDefinition.class); if (formDefinitionAnnotation != null) { fieldData.setLabel( finalType.toString() + i18nSettings.separator() + FieldDefinition.LABEL); Collection<FieldInfo> labelInfos = FormGenerationUtils.extractFieldInfos( finalTypeElement, fieldElement -> fieldElement.getAnnotation(FieldLabel.class) != null); if (labelInfos != null && labelInfos.size() == 1) { FieldInfo labelInfo = labelInfos.iterator().next(); fieldData.setLabel(finalType.toString() + i18nSettings.separator() + labelInfo.getFieldElement().getSimpleName()); overrideI18n = true; } fieldData.setHelpMessage( finalType.toString() + i18nSettings.separator() + FieldDefinition.HELP_MESSAGE); Collection<FieldInfo> helpMessages = FormGenerationUtils.extractFieldInfos( finalTypeElement, fieldElement -> fieldElement.getAnnotation(FieldHelp.class) != null); if (helpMessages != null && helpMessages.size() == 1) { FieldInfo helpInfo = helpMessages.iterator().next(); fieldData.setHelpMessage(finalType.toString() + i18nSettings.separator() + helpInfo.getFieldElement().getSimpleName()); overrideI18n = true; } typeKind = org.kie.workbench.common.forms.model.TypeKind.OBJECT; } } } DeclaredType fieldType = (DeclaredType) finalType; if (typeUtils.isAssignable(finalTypeElement.asType(), listType)) { if (fieldType.getTypeArguments().size() != 1) { throw new IllegalArgumentException("Impossible to generate a field for type " + fieldType.toString() + ". Type should have one and only one Type arguments."); } isList = true; finalType = fieldType.getTypeArguments().get(0); finalTypeElement = (TypeElement) typeUtils.asElement(finalType); if (FormModelPropertiesUtil.isBaseType(finalTypeElement.getQualifiedName().toString())) { typeKind = org.kie.workbench.common.forms.model.TypeKind.BASE; } else if (typeUtils.isAssignable(finalTypeElement.asType(), enumType)) { typeKind = org.kie.workbench.common.forms.model.TypeKind.ENUM; } else { typeKind = org.kie.workbench.common.forms.model.TypeKind.OBJECT; } } else if (typeUtils.isAssignable(finalTypeElement.asType(), enumType)) { typeKind = org.kie.workbench.common.forms.model.TypeKind.ENUM; } fieldData.setType(typeKind.toString()); fieldData.setClassName(finalTypeElement.getQualifiedName().toString()); fieldData.setList(String.valueOf(isList)); fieldData.setFieldModifier(fieldModifier); fieldData.getParams().putAll(defaultParams); FormField settings = fieldInfo.getFieldElement().getAnnotation(FormField.class); if (settings != null) { try { fieldData.setPreferredType(settings.type().getName()); } catch (MirroredTypeException exception) { fieldData.setPreferredType(exception.getTypeMirror().toString()); } fieldData.setAfterElement(settings.afterElement()); if (!overrideI18n && !isEmpty(settings.labelKey())) { fieldData.setLabel(settings.labelKey()); } if (!overrideI18n && !isEmpty(settings.helpMessageKey())) { fieldData.setHelpMessage(settings.helpMessageKey()); } fieldData.setRequired(Boolean.valueOf(settings.required()).toString()); fieldData.setReadOnly(Boolean.valueOf(settings.readonly()).toString()); for (FieldParam fieldParam : settings.settings()) { fieldData.getParams().put(fieldParam.name(), fieldParam.value()); } fieldData.setWrap(Boolean.valueOf(settings.layoutSettings().wrap()).toString()); fieldData.setHorizontalSpan(String.valueOf(settings.layoutSettings().horizontalSpan())); fieldData.setVerticalSpan(String.valueOf(settings.layoutSettings().verticalSpan())); } if (!overrideI18n) { if (!isEmpty(i18nSettings.keyPreffix())) { fieldData.setLabel( i18nSettings.keyPreffix() + i18nSettings.separator() + fieldData.getLabel()); if (!isEmpty(fieldData.getHelpMessage())) { fieldData.setHelpMessage(i18nSettings.keyPreffix() + i18nSettings.separator() + fieldData.getHelpMessage()); } } } extractFieldExtraSettings(fieldData, fieldInfo.getFieldElement()); fieldSettings.add(fieldData); } } return fieldSettings; }