@PerFeature public class ScannerStarterImpl implements ScannerStarter { @Inject public ScannerStarterImpl() { } @Override public void start(Context context) { Class<?> cls = ScannerActivity.class; Intent intent = new Intent(context, cls); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } }
@PerFeature public class PurchaseRepositoryImpl implements PurchaseRepository { private final HttpClientApi mHttpClient; @Inject public PurchaseRepositoryImpl(HttpClientApi mHttpClient) { this.mHttpClient = mHttpClient; } @Override public Single<PurchaseModel> makePurchaseInStore() { return mHttpClient.doAnyRequest() .map(o -> new PurchaseModel()); } }
@PerFeature public class AntitheftStarterImpl implements AntitheftStarter { @Inject public AntitheftStarterImpl() { } @Override public void start(Context context) { Class<?> cls = AntitheftActivity.class; Intent intent = new Intent(context, cls); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } }
@PerFeature public class AntitheftRepositoryImpl implements AntitheftRepository { private final HttpClientApi mHttpClient; private final DbClientApi mDbClient; @Inject public AntitheftRepositoryImpl(HttpClientApi httpClient, DbClientApi dbClient) { mHttpClient = httpClient; mDbClient = dbClient; } @Override public Single<AntitheftModel> doAntitheftLowLevelWork() { return mHttpClient.doAnyRequest() .map(o -> new AntitheftModel()); } }
@PerFeature public class ScannerInteractorImpl implements ScannerInteractor { private final ScannerRepository mScannerRepository; @Inject public ScannerInteractorImpl(ScannerRepository scannerRepository) { mScannerRepository = scannerRepository; } @Override public Single<ScannerModel> doScannerWork() { return mScannerRepository.doScannerLowLevelWork() .flatMap(this::doSomeLogic); } private Single<ScannerModel> doSomeLogic(ScannerModel scannerModel) { return Single.timer(3000, TimeUnit.MILLISECONDS) .map(aLong -> scannerModel); } }
@Component(dependencies = { CoreUtilsApi.class, CoreNetworkApi.class, CoreDbApi.class, PurchaseFeatureApi.class }) @PerFeature interface ScannerFeatureDependenciesComponent extends ScannerFeatureDependencies { }
@Component(dependencies = { CoreUtilsApi.class, CoreNetworkApi.class, CoreDbApi.class, PurchaseFeatureApi.class }) @PerFeature interface AntitheftFeatureDependenciesComponent extends AntitheftFeatureDependencies { }
@Component(dependencies = CoreNetworkApi.class) @PerFeature interface PurchaseFeatureDependenciesComponent extends PurchaseFeatureDependencies { }
@PerFeature @Provides Router provideRouter() { return mCicerone.getRouter(); }
@PerFeature @Provides Router provideRouter() { return mCicerone.getRouter(); }
@PerFeature @Provides NavigatorHolder provideNavigatorHolder() { return mCicerone.getNavigatorHolder(); }
@PerFeature @Provides NavigatorHolder provideNavigatorHolder() { return mCicerone.getNavigatorHolder(); }
@PerFeature @Binds public abstract PurchaseRepository providePurchaseRepository(PurchaseRepositoryImpl purchaseRepository);
@PerFeature @Binds public abstract AntitheftStarter provideAntitheftStarter(AntitheftStarterImpl antitheftStarter);
@PerFeature @Binds public abstract ScannerInteractor provideScannerInteractor(ScannerInteractorImpl scannerInteractor);
@PerFeature @Binds public abstract AntitheftInteractor provideAntitheftInteractor(AntitheftInteractorImpl antitheftInteractor);
@PerFeature @Binds public abstract ScannerRepository provideScannerRepository(ScannerRepositoryImpl scannerRepository);
@PerFeature @Binds public abstract PurchaseInteractor providePurchaseInteractor(PurchaseInteractorImpl purchaseInteractor);
@PerFeature @Binds public abstract AntitheftRepository provideAntitheftRepository(AntitheftRepositoryImpl antitheftRepository);
@PerFeature @Binds public abstract ScannerStarter provideScannerStarter(ScannerStarterImpl scannerStarter);