Skip to content

Instantly share code, notes, and snippets.

View fabioCollini's full-sized avatar

Fabio Collini fabioCollini

View GitHub Profile
public interface EndlessObserver<T> {
void onNext(T t);
void onNextError(Throwable t);
}
@fabioCollini
fabioCollini / MainActivity
Last active August 29, 2015 14:06
ObservableQueue
public class MainActivity extends ActionBarActivity {
//...
@Override protected void onStart() {
super.onStart();
subscriptions.add(repoService.getRepoListObservable().subscribe(new Action1<Observable<List<Repo>>>() {
@Override public void call(Observable<List<Repo>> listObservable) {
showProgress();
subscriptions.add(listObservable.subscribe(new Action1<List<Repo>>() {
class WeatherUseCase(
private val locationManager: LocationManager,
private val repository: TemperatureRepository) {
suspend fun getCityData(): String = coroutineScope {
try {
val location = locationManager.getLastLocation()
val cities = async { locationManager.getCities(location) }
@Component(modules = [WeatherModule::class])
@WeatherSingleton
interface WeatherComponent {
val temperatureRepository: TemperatureRepository
}
//...
@Component(modules = [LocationModule::class])
@LocationSingleton
interface LocationComponent {
val locationManager: LocationManager
@DomainSingleton
@Component(dependencies = [
LocationComponent::class, WeatherComponent::class])
interface DomainComponent {
val weatherUseCase: WeatherUseCase
}
@DomainSingleton
class WeatherUseCase @Inject constructor(
private val locationManager: LocationManager,
private val repository: TemperatureRepository) {
//...
}
@DomainSingleton
@Component(dependencies = [DomainDependencies::class])
interface DomainComponent {
val weatherUseCase: WeatherUseCase
}
interface DomainDependencies {
val locationManager: LocationManager
val temperatureRepository: TemperatureRepository
class DomainDependenciesImpl(
private val locationComponent: LocationComponent,
private val weatherComponent: WeatherComponent
) : DomainDependencies {
override val locationManager: LocationManager
get() = locationComponent.locationManager
override val temperatureRepository: TemperatureRepository
get() = weatherComponent.temperatureRepository
@DomainDependenciesSingleton
@Component(dependencies = [
LocationComponent::class, WeatherComponent::class
])
interface DomainDependenciesImpl : DomainDependencies
interface WeatherComponent {
val temperatureRepository: TemperatureRepository
}
@Component(
modules = [WeatherModule::class]
)
@WeatherSingleton
interface WeatherComponentImpl : WeatherComponent