package autodagger.example;
import android.app.Activity;
import android.os.Bundle;
import javax.inject.Named;
import autodagger.AutoComponent;
import autodagger.AutoExpose;
import autodagger.AutoInjector;
import dagger.Module;
import dagger.Provides;
/**
* Showcase: @AutoComponent
*
* @author Lukasz Piliszczuk - lukasz.pili@gmail.com
*/
@AutoComponent(
modules = {FirstActivity.ModuleOne.class, FirstActivity.ModuleTwo.class},
dependencies = MyApp.class,
superinterfaces = {HasDependenciesOne.class, HasDependenciesTwo.class},
subcomponents = {MySubObject1.class, MySubObject2.class, MyManualSubcomponent.class}
)
@AutoInjector
@DaggerScope(FirstActivity.class)
public class FirstActivity extends Activity {
private FirstActivityComponent component;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
component = DaggerFirstActivityComponent.builder()
.myAppComponent(((MyApp) getApplication()).getComponent())
.moduleOne(new ModuleOne())
.moduleTwo(new ModuleTwo())
.build();
component.inject(this);
}
@Module
public static class ModuleOne {
@Provides
@DaggerScope(FirstActivity.class)
public MyObject2<String, String> providesMyObject2() {
return new MyObject2<>();
}
@Provides
@DaggerScope(FirstActivity.class)
public MyObject3 providesMyObject3() {
return new MyObject3<>();
}
@Provides
@DaggerScope(FirstActivity.class)
@Named("1")
@AutoExpose(FirstActivity.class)
public MyObject4 providesMyObject4Qualifier1() {
return new MyObject4();
}
@Provides
@DaggerScope(FirstActivity.class)
@Named("2")
@AutoExpose(FirstActivity.class)
public MyObject4 providesMyObject4Qualifier2() {
return new MyObject4();
}
}
@Module
public static class ModuleTwo {
}
}