/** * Write a companion class for {@code type} that extends {@link StaticInjection}. */ private void generateStaticInjection(TypeElement type, List<Element> fields) throws IOException { ClassName typeName = ClassName.get(type); ClassName adapterClassName = adapterName(ClassName.get(type), STATIC_INJECTION_SUFFIX); TypeSpec.Builder result = TypeSpec.classBuilder(adapterClassName.simpleName()) .addOriginatingElement(type) .addJavadoc(AdapterJavadocs.STATIC_INJECTION_TYPE, type) .addModifiers(PUBLIC, FINAL) .superclass(StaticInjection.class); for (Element field : fields) { result.addField(memberBindingField(false, field)); } result.addMethod(attachMethod(null, fields, false, typeName, null, true)); result.addMethod(staticInjectMethod(fields, typeName)); String packageName = getPackage(type).getQualifiedName().toString(); JavaFile javaFile = JavaFile.builder(packageName, result.build()) .addFileComment(AdapterJavadocs.GENERATED_BY_DAGGER) .build(); javaFile.writeTo(processingEnv.getFiler()); }
.addOriginatingElement(type) .addModifiers(PUBLIC, FINAL) .superclass(ParameterizedTypeName.get(ClassName.get(Binding.class), injectedClassName))
.addOriginatingElement(type) .addJavadoc(AdapterJavadocs.MODULE_TYPE, Provides.class) .superclass(ParameterizedTypeName.get(ClassName.get(ModuleAdapter.class), moduleClassName))
.addOriginatingElement(value.getElement()) .addTypeVariables(typeVariables) .addModifiers(Modifier.PUBLIC)
.addOriginatingElement(restService) .addModifiers(Modifier.PUBLIC) .superclass(RestServiceModel.class)
TypeSpec.Builder factory = TypeSpec.classBuilder( ClassName.get(packageName, "AutoValueGson_" + adapterName)); factory.addOriginatingElement(sourceElement); factory.addModifiers(PUBLIC, FINAL); factory.superclass(ClassName.get(packageName, qualifiedName));
.addOriginatingElement(element) .addAnnotation( AnnotationSpec.builder(Generated.class)
factory.addOriginatingElement(first); ClassName elementClassName = ClassName.get(first); ClassName typeAdapterClassName = ClassName.get(elementClassName.packageName(), factory.addOriginatingElement(element); ClassName elementClassName = ClassName.get(element); ClassName typeAdapterClassName = ClassName.get(elementClassName.packageName(), Prefix.PREFIX + StringUtils.join("_", elementClassName.simpleNames()));
.addOriginatingElement(descriptor.method()) .addAnnotation( AnnotationSpec.builder(Module.class)
} else { TypeSpec classSpec = toTypeSpec(deriveConfig, className, derivedClass.getValue()._2()) .addOriginatingElement(element) .build(); JavaFile javaFile = JavaFile.builder(targetClassName.packageName(), classSpec).build(); TypeSpec classSpec = toTypeSpec(deriveConfig, targetClassName, codeSpec).addOriginatingElement(element) .build();
} else { TypeSpec classSpec = toTypeSpec(deriveConfig, className, derivedClass.getValue()._2()) .addOriginatingElement(element) .build(); JavaFile javaFile = JavaFile.builder(targetClassName.packageName(), classSpec).build(); TypeSpec classSpec = toTypeSpec(deriveConfig, targetClassName, codeSpec).addOriginatingElement(element) .build();
private JavaFile buildJavaFile( ClassName generatedTypeName, T input, TypeSpec.Builder typeSpecBuilder) { typeSpecBuilder.addOriginatingElement(originatingElement(input)); Optional<AnnotationSpec> generatedAnnotation = generatedAnnotation(elements, sourceVersion) .map( annotation -> AnnotationSpec.builder(ClassName.get(annotation)) .addMember("value", "$S", "dagger.internal.codegen.ComponentProcessor") .addMember("comments", "$S", GENERATED_COMMENTS) .build()); generatedAnnotation.ifPresent(typeSpecBuilder::addAnnotation); JavaFile.Builder javaFileBuilder = JavaFile.builder(generatedTypeName.packageName(), typeSpecBuilder.build()) .skipJavaLangImports(true); if (!generatedAnnotation.isPresent()) { javaFileBuilder.addFileComment("Generated by Dagger ($L).", GENERATED_COMMENTS); } return javaFileBuilder.build(); }
JavaFile brewJava() { TypeSpec.Builder typeSpecBuilder = getTypeSpecBuilder() .addOriginatingElement(originatingElement); return JavaFile.builder(className.packageName(), typeSpecBuilder.build()) .skipJavaLangImports(true) .build(); }
.addOriginatingElement(classElement) .build();