private MethodSpec bindAndroidInjectorFactory( AndroidInjectorDescriptor descriptor, ClassName subcomponentBuilderName) { return methodBuilder("bindAndroidInjectorFactory") .addAnnotation(Binds.class) .addAnnotation(IntoMap.class) .addAnnotation(androidInjectorMapKey(descriptor)) .addModifiers(ABSTRACT) .returns( parameterizedTypeName( AndroidInjector.Factory.class, WildcardTypeName.subtypeOf(TypeName.OBJECT))) .addParameter(subcomponentBuilderName, "builder") .build(); }
private MethodSpec bindAndroidInjectorFactory( AndroidInjectorDescriptor descriptor, ClassName subcomponentBuilderName) { return methodBuilder("bindAndroidInjectorFactory") .addAnnotation(Binds.class) .addAnnotation(IntoMap.class) .addAnnotation(descriptor.mapKeyAnnotation()) .addModifiers(ABSTRACT) .returns( parameterizedTypeName( AndroidInjector.Factory.class, WildcardTypeName.subtypeOf(descriptor.frameworkType()))) .addParameter(subcomponentBuilderName, "builder") .build(); }
private TypeSpec subcomponentBuilder( AndroidInjectorDescriptor descriptor, ClassName subcomponentBuilderName) { return classBuilder(subcomponentBuilderName) .addAnnotation(Builder.class) .addModifiers(PUBLIC, ABSTRACT, STATIC) .superclass(parameterizedTypeName(AndroidInjector.Builder.class, descriptor.injectedType())) .build(); }
private TypeSpec subcomponentBuilder( AndroidInjectorDescriptor descriptor, ClassName subcomponentBuilderName) { return classBuilder(subcomponentBuilderName) .addAnnotation(Builder.class) .addModifiers(PUBLIC, ABSTRACT, STATIC) .superclass(parameterizedTypeName(AndroidInjector.Builder.class, descriptor.injectedType())) .build(); }
private TypeSpec subcomponent( AndroidInjectorDescriptor descriptor, ClassName subcomponentName, ClassName subcomponentBuilderName) { AnnotationSpec.Builder subcomponentAnnotation = AnnotationSpec.builder(Subcomponent.class); for (ClassName module : descriptor.modules()) { subcomponentAnnotation.addMember("modules", CodeBlock.of("$T.class", module)); } return interfaceBuilder(subcomponentName) .addModifiers(PUBLIC) .addAnnotation(subcomponentAnnotation.build()) .addAnnotations(descriptor.scopes()) .addSuperinterface(parameterizedTypeName(AndroidInjector.class, descriptor.injectedType())) .addType(subcomponentBuilder(descriptor, subcomponentBuilderName)) .build(); }
private TypeSpec subcomponent( AndroidInjectorDescriptor descriptor, ClassName subcomponentName, ClassName subcomponentBuilderName) { AnnotationSpec.Builder subcomponentAnnotation = AnnotationSpec.builder(Subcomponent.class); for (ClassName module : descriptor.modules()) { subcomponentAnnotation.addMember("modules", CodeBlock.of("$T.class", module)); } return interfaceBuilder(subcomponentName) .addModifiers(PUBLIC) .addAnnotation(subcomponentAnnotation.build()) .addAnnotations(descriptor.scopes()) .addSuperinterface(parameterizedTypeName(AndroidInjector.class, descriptor.injectedType())) .addType(subcomponentBuilder(descriptor, subcomponentBuilderName)) .build(); }