/** * Builds a List of {@link Property} for the given {@link AutoValueExtension.Context}. */ public static ImmutableList<Property> buildProperties(AutoValueExtension.Context context) { ImmutableList.Builder<Property> values = ImmutableList.builder(); for (Map.Entry<String, ExecutableElement> entry : context.properties().entrySet()) { values.add(new Property(entry.getKey(), entry.getValue())); } return values.build(); }
public static ImmutableList<ColumnProperty> from(AutoValueExtension.Context context) { ImmutableList.Builder<ColumnProperty> values = ImmutableList.builder(); for (Map.Entry<String, ExecutableElement> entry : context.properties().entrySet()) { values.add(new ColumnProperty(entry.getKey(), entry.getValue())); } return values.build(); }
@Override public String generateClass(Context context, String className, String classToExtend, boolean isFinal) { final TypeSpec.Builder typeSpecBuilder = newTypeSpecBuilder(context, className, classToExtend, isFinal); final Map<String, ExecutableElement> properties = context.properties(); for (Map.Entry<String, ExecutableElement> entry : properties.entrySet()) { typeSpecBuilder.addMethod(generateGetterMethod(entry.getKey(), entry.getValue())); } final JavaFile javaFile = JavaFile.builder(context.packageName(), typeSpecBuilder.build()).build(); return javaFile.toString(); }
boolean generateExternalAdapter = type.getAnnotation(GenerateTypeAdapter.class) != null; List<Property> properties = Lists.newArrayList(); for (Map.Entry<String, ExecutableElement> entry : context.properties().entrySet()) { Property property = Property.create(context.processingEnvironment().getMessager(), entry.getKey(), entry.getValue()); if (property == null) { Map<String, TypeName> types = convertPropertiesToTypes(context.properties());
Map<String, ExecutableElement> properties = context.properties();
context.properties(), context.processingEnvironment().getTypeUtils(), context.processingEnvironment().getElementUtils());
@Override public String generateClass(Context context, String classNameString, String classToExtend, boolean isFinal) { String packageName = context.packageName(); typeUtils = context.processingEnvironment().getTypeUtils(); TypeElement autoValueTypeElement = context.autoValueClass(); Map<String, ExecutableElement> properties = context.properties(); LinkedHashMap<String, TypeName> types = convertPropertiesToTypes(properties); ClassName className = ClassName.get(packageName, classNameString); TypeSpec firebaseValue = TypeSpec.classBuilder(FIREBASEVALUE) .addModifiers(STATIC, FINAL) .addAnnotations(generateFirebaseValueClassAnnotations(autoValueTypeElement)) .addFields(generateFirebaseValueFields(packageName, types)) .addFields(generateAdapterFields(types)) .addMethod(generateEmptyFirebaseValueConstructor()) .addMethod(generateFirebaseValueConstructorWithAutoValueParam( packageName, autoValueTypeElement, types)) .addMethod(generateFirebaseValueToAutoValueMethod( packageName, className, types)) .addMethod(generateToMapMethod(properties)) .addMethods(generateFirebaseValueGetters(packageName, properties)) .build(); TypeSpec generatedClass = TypeSpec.classBuilder(className) .superclass(TypeVariableName.get(classToExtend)) .addMethod(generateStandardAutoValueConstructor(types)) .addType(firebaseValue) .addModifiers(isFinal ? FINAL : ABSTRACT) .build(); return JavaFile.builder(packageName, generatedClass).build().toString(); }
@Override public String generateClass(Context context, String className, String classToExtend, boolean isFinal) { List<MapElement> valueMethods = new ArrayList<>(); for (ExecutableElement element : context.properties().values()) { MapElement item = MapElement.create(context, element); if (item != null) { valueMethods.add(item); } } ClassName superclass = ClassName.get(context.packageName(), classToExtend); ClassName trueClass = ClassName.get(context.packageName(), className.substring(className.indexOf('_') + 1)); TypeSpec.Builder subclass = TypeSpec.classBuilder(className) .addModifiers(isFinal ? Modifier.FINAL : Modifier.ABSTRACT) .addMethod(generateConstructor(valueMethods)) .addMethod(generateToMap(valueMethods)) .addMethod(generateFromMap(context, trueClass, valueMethods)); subclass.superclass(superclass); JavaFile file = JavaFile.builder(context.packageName(), subclass.build()).build(); return file.toString(); }
/** * Creates a new {@link TypeSpec.Builder} for the class that is generated by the extension. It * will add a final or abstract modifier, the superclass and a constructor that calls super. The * returned TypeSpec will also include all TypeVariables if the AutoValue class is generic. */ public static TypeSpec.Builder newTypeSpecBuilder( Context context, String className, String classToExtend, boolean isFinal) { TypeVariableName[] typeVariables = getTypeVariables(context.autoValueClass()); return TypeSpec.classBuilder(className) .addModifiers(isFinal ? FINAL : ABSTRACT) .addTypeVariables(Arrays.asList(typeVariables)) .superclass(getSuperClass(context.packageName(), classToExtend, typeVariables)) .addMethod(newConstructor(context.properties())); }
@Override public boolean applicable(Context context) { Map<String, ExecutableElement> properties = context.properties(); for (ExecutableElement element : properties.values()) { Set<String> annotations = getAnnotations(element); annotationType = AnnotationType.from(annotations); if (annotationType == AnnotationType.ERROR) { throw new RuntimeException("Annotations are mutually exclusive, " + "only one annotation type can be included at the same time."); } if (annotationType != AnnotationType.NOT_PRESENT) { return true; } } return false; }
@Override public String generateClass(Context context, String className, String classToExtend, boolean isFinal) { String packageName = context.packageName(); Name superName = context.autoValueClass().getSimpleName(); Map<String, ExecutableElement> properties = context.properties(); TypeSpec subclass = TypeSpec.classBuilder(className) // .addModifiers(isFinal ? Modifier.FINAL : Modifier.ABSTRACT) // .superclass(ClassName.get(packageName, classToExtend)) // .addMethod(generateConstructor(properties)) // .addMethod(generateToString(superName, properties)) // .build(); JavaFile javaFile = JavaFile.builder(packageName, subclass).build(); return javaFile.toString(); }
@Override public String generateClass(Context context, String className, String classToExtend, boolean isFinal) { String packageName = context.packageName(); ClassName superName = ClassName.get(context.autoValueClass()); Map<String, ExecutableElement> properties = context.properties(); TypeSpec subclass = TypeSpec.classBuilder(className) // .addModifiers(isFinal ? Modifier.FINAL : Modifier.ABSTRACT) // .superclass(ClassName.get(packageName, classToExtend)) // .addMethod(generateConstructor(properties)) // .addMethod(generateEquals(superName, properties)) // .addMethod(generateHashCode(superName, properties)) // .build(); JavaFile javaFile = JavaFile.builder(packageName, subclass).build(); return javaFile.toString(); }
@Override public boolean applicable(Context context) { Map<String, ExecutableElement> properties = context.properties(); for (ExecutableElement element : properties.values()) { if (getAnnotations(element).contains("Redacted")) { return true; } } return false; }