Google Auto Factory / Dagger integration: depending on the entered code

Dagger doesn't seem to explain at all how to deal with the provision / management of auto-generated code like the one generated by Google Auto Factory. Also, the people at Google Auto don't really explain how to integrate with the dagger to cause pain for people like me without knowing how both libraries work.

The problem I see is that when you don't provide fully qualified names to factories created by Google Auto Factory, Dagger won't pick them up at all. However, providing the full name Factory will allow the dagger to fit everything together correctly.

My question is, is this a more general / undocumented problem when using a dagger that you might run into, or a bug that should be fixed in any library?

Works:

@Module(
        library = true,
        complete = false
    )
public class FactoryModule {

    @Provides
    MembersAdapterFactory provideMembersAdapterFactory(
        me.magneto.groups.adapters.MembersAdapterFactoryImpl membersAdapterFactory) {
        return membersAdapterFactory;
    }

}

      

It fails:

import me.magneto.groups.adapters.MembersAdapterFactoryImpl;

@Module(
          library = true,
          complete = false
       )
public class FactoryModule {

    @Provides
    MembersAdapterFactory provideMembersAdapterFactory(
        MembersAdapterFactoryImpl membersAdapterFactory) {
        return membersAdapterFactory;
    } 
}

      

Factory of:

public interface MembersAdapterFactory {

    public MembersAdapter make(
                       Context context, int resource, List<Member> members);

}



@AutoFactory(
    className = "MembersAdapterFactoryImpl",
    implementing = { MembersAdapterFactory.class }
)
public class MembersAdapter extends ArrayAdapter<Member> {


    private MembersAdapterHelper mMembersAdapterHelper;


    MembersAdapter(@Provided MembersAdapterHelper membersAdapterHelper,
                   Context context,
                   int resource,
                   List<Member> members) {
        super(context, resource, members);
        mMembersAdapterHelper = membersAdapterHelper;
    }
}

      

+3


source to share





All Articles