Skip to content

Commit bf043cc

Browse files
committed
Add support for architecture components
1 parent 628a502 commit bf043cc

File tree

56 files changed

+748
-475
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+748
-475
lines changed

art/architecture.png

-4.9 KB
Loading

art/ui.png

-9.21 KB
Loading

build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22

33
buildscript {
4-
ext.kotlin_version = '1.1.3-2'
4+
ext.kotlin_version = '1.1.4-3'
55
repositories {
66
google()
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.0.0-beta2'
10+
classpath 'com.android.tools.build:gradle:3.0.0-beta6'
1111
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1212
classpath "com.dicedmelon.gradle:jacoco-android:0.1.1"
1313

cache/src/main/java/org/buffer/android/boilerplate/cache/BufferooCacheImpl.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.buffer.android.boilerplate.cache
22

33
import io.reactivex.Completable
4-
import io.reactivex.Observable
4+
import io.reactivex.Flowable
55
import org.buffer.android.boilerplate.cache.db.BufferoosDatabase
66
import org.buffer.android.boilerplate.cache.mapper.BufferooEntityMapper
77
import org.buffer.android.boilerplate.cache.model.CachedBufferoo
@@ -54,9 +54,9 @@ class BufferooCacheImpl @Inject constructor(val bufferoosDatabase: BufferoosData
5454
/**
5555
* Retrieve a list of [BufferooEntity] instances from the database.
5656
*/
57-
override fun getBufferoos(): Observable<List<BufferooEntity>> {
58-
return Observable.defer {
59-
Observable.just(bufferoosDatabase.cachedBufferooDao().getBufferoos())
57+
override fun getBufferoos(): Flowable<List<BufferooEntity>> {
58+
return Flowable.defer {
59+
Flowable.just(bufferoosDatabase.cachedBufferooDao().getBufferoos())
6060
}.map {
6161
it.map { entityMapper.mapFromCached(it) }
6262
}

data/src/main/java/org/buffer/android/boilerplate/data/BufferooDataRepository.kt

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.buffer.android.boilerplate.data
22

33
import io.reactivex.Completable
4-
import io.reactivex.Observable
4+
import io.reactivex.Flowable
55
import org.buffer.android.boilerplate.data.mapper.BufferooMapper
66
import org.buffer.android.boilerplate.data.model.BufferooEntity
77
import org.buffer.android.boilerplate.data.source.BufferooDataStoreFactory
@@ -28,19 +28,17 @@ class BufferooDataRepository @Inject constructor(private val factory: BufferooDa
2828
return factory.retrieveCacheDataStore().saveBufferoos(bufferooEntities)
2929
}
3030

31-
override fun getBufferoos(): Observable<List<Bufferoo>> {
31+
override fun getBufferoos(): Flowable<List<Bufferoo>> {
3232
val dataStore = factory.retrieveDataStore()
3333
return dataStore.getBufferoos()
3434
.flatMap {
35-
val bufferoos = mutableListOf<Bufferoo>()
36-
it.map { bufferoos.add(bufferooMapper.mapFromEntity(it)) }
37-
Observable.just(bufferoos)
35+
Flowable.just(it.map { bufferooMapper.mapFromEntity(it) })
3836
}
3937
.flatMap {
4038
if (dataStore is BufferooRemoteDataStore) {
41-
saveBufferoos(it).toSingle { it }.toObservable()
39+
saveBufferoos(it).toSingle { it }.toFlowable()
4240
} else {
43-
Observable.just(it)
41+
Flowable.just(it)
4442
}
4543
}
4644
}

data/src/main/java/org/buffer/android/boilerplate/data/repository/BufferooCache.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.buffer.android.boilerplate.data.repository
22

33
import io.reactivex.Completable
4-
import io.reactivex.Observable
4+
import io.reactivex.Flowable
55
import org.buffer.android.boilerplate.data.model.BufferooEntity
66

77
/**
@@ -23,7 +23,7 @@ interface BufferooCache {
2323
/**
2424
* Retrieve a list of Bufferoos, from the cache
2525
*/
26-
fun getBufferoos(): Observable<List<BufferooEntity>>
26+
fun getBufferoos(): Flowable<List<BufferooEntity>>
2727

2828
/**
2929
* Checks if an element (User) exists in the cache.

data/src/main/java/org/buffer/android/boilerplate/data/repository/BufferooDataStore.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.buffer.android.boilerplate.data.repository
22

33
import io.reactivex.Completable
4-
import io.reactivex.Observable
4+
import io.reactivex.Flowable
55
import org.buffer.android.boilerplate.data.model.BufferooEntity
66

77
/**
@@ -15,6 +15,6 @@ interface BufferooDataStore {
1515

1616
fun saveBufferoos(bufferoos: List<BufferooEntity>): Completable
1717

18-
fun getBufferoos(): Observable<List<BufferooEntity>>
18+
fun getBufferoos(): Flowable<List<BufferooEntity>>
1919

2020
}

data/src/main/java/org/buffer/android/boilerplate/data/repository/BufferooRemote.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.buffer.android.boilerplate.data.repository
22

3-
import io.reactivex.Observable
3+
import io.reactivex.Flowable
44
import org.buffer.android.boilerplate.data.model.BufferooEntity
55

66
/**
@@ -12,6 +12,6 @@ interface BufferooRemote {
1212
/**
1313
* Retrieve a list of Bufferoos, from the cache
1414
*/
15-
fun getBufferoos(): Observable<List<BufferooEntity>>
15+
fun getBufferoos(): Flowable<List<BufferooEntity>>
1616

1717
}

data/src/main/java/org/buffer/android/boilerplate/data/source/BufferooCacheDataStore.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.buffer.android.boilerplate.data.source
22

33
import io.reactivex.Completable
4-
import io.reactivex.Observable
4+
import io.reactivex.Flowable
55
import org.buffer.android.boilerplate.data.model.BufferooEntity
66
import org.buffer.android.boilerplate.data.repository.BufferooCache
77
import org.buffer.android.boilerplate.data.repository.BufferooDataStore
@@ -34,7 +34,7 @@ open class BufferooCacheDataStore @Inject constructor(private val bufferooCache:
3434
/**
3535
* Retrieve a list of [BufferooEntity] instance from the cache
3636
*/
37-
override fun getBufferoos(): Observable<List<BufferooEntity>> {
37+
override fun getBufferoos(): Flowable<List<BufferooEntity>> {
3838
return bufferooCache.getBufferoos()
3939
}
4040

data/src/main/java/org/buffer/android/boilerplate/data/source/BufferooRemoteDataStore.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package org.buffer.android.boilerplate.data.source
22

33
import io.reactivex.Completable
4-
import io.reactivex.Observable
5-
import io.reactivex.Single
4+
import io.reactivex.Flowable
65
import org.buffer.android.boilerplate.data.model.BufferooEntity
76
import org.buffer.android.boilerplate.data.repository.BufferooDataStore
87
import org.buffer.android.boilerplate.data.repository.BufferooRemote
@@ -26,7 +25,7 @@ open class BufferooRemoteDataStore @Inject constructor(private val bufferooRemot
2625
/**
2726
* Retrieve a list of [BufferooEntity] instances from the API
2827
*/
29-
override fun getBufferoos(): Observable<List<BufferooEntity>> {
28+
override fun getBufferoos(): Flowable<List<BufferooEntity>> {
3029
return bufferooRemote.getBufferoos()
3130
}
3231

data/src/test/java/org/buffer/android/boilerplate/data/BufferooDataRepositoryTest.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package org.buffer.android.boilerplate.data
22

33
import com.nhaarman.mockito_kotlin.*
44
import io.reactivex.Completable
5-
import io.reactivex.Observable
5+
import io.reactivex.Flowable
66
import org.buffer.android.boilerplate.data.mapper.BufferooMapper
77
import org.buffer.android.boilerplate.data.model.BufferooEntity
88
import org.buffer.android.boilerplate.data.repository.BufferooDataStore
@@ -88,7 +88,7 @@ class BufferooDataRepositoryTest {
8888
@Test
8989
fun getBufferoosCompletes() {
9090
stubBufferooDataStoreFactoryRetrieveDataStore(bufferooCacheDataStore)
91-
stubBufferooCacheDataStoreGetBufferoos(Observable.just(
91+
stubBufferooCacheDataStoreGetBufferoos(Flowable.just(
9292
BufferooFactory.makeBufferooEntityList(2)))
9393
val testObserver = bufferooDataRepository.getBufferoos().test()
9494
testObserver.assertComplete()
@@ -101,7 +101,7 @@ class BufferooDataRepositoryTest {
101101
val bufferooEntities = BufferooFactory.makeBufferooEntityList(2)
102102
bufferoos.forEachIndexed { index, bufferoo ->
103103
stubBufferooMapperMapFromEntity(bufferooEntities[index], bufferoo) }
104-
stubBufferooCacheDataStoreGetBufferoos(Observable.just(bufferooEntities))
104+
stubBufferooCacheDataStoreGetBufferoos(Flowable.just(bufferooEntities))
105105

106106
val testObserver = bufferooDataRepository.getBufferoos().test()
107107
testObserver.assertValue(bufferoos)
@@ -130,12 +130,12 @@ class BufferooDataRepositoryTest {
130130
.thenReturn(completable)
131131
}
132132

133-
private fun stubBufferooCacheDataStoreGetBufferoos(single: Observable<List<BufferooEntity>>) {
133+
private fun stubBufferooCacheDataStoreGetBufferoos(single: Flowable<List<BufferooEntity>>) {
134134
whenever(bufferooCacheDataStore.getBufferoos())
135135
.thenReturn(single)
136136
}
137137

138-
private fun stubBufferooRemoteDataStoreGetBufferoos(single: Observable<List<BufferooEntity>>) {
138+
private fun stubBufferooRemoteDataStoreGetBufferoos(single: Flowable<List<BufferooEntity>>) {
139139
whenever(bufferooRemoteDataStore.getBufferoos())
140140
.thenReturn(single)
141141
}

data/src/test/java/org/buffer/android/boilerplate/data/source/BufferooCacheDataStoreTest.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.nhaarman.mockito_kotlin.any
44
import com.nhaarman.mockito_kotlin.mock
55
import com.nhaarman.mockito_kotlin.whenever
66
import io.reactivex.Completable
7-
import io.reactivex.Observable
7+
import io.reactivex.Flowable
88
import org.buffer.android.boilerplate.data.model.BufferooEntity
99
import org.buffer.android.boilerplate.data.repository.BufferooCache
1010
import org.buffer.android.boilerplate.data.test.factory.BufferooFactory
@@ -48,7 +48,7 @@ class BufferooCacheDataStoreTest {
4848
//<editor-fold desc="Get Bufferoos">
4949
@Test
5050
fun getBufferoosCompletes() {
51-
stubBufferooCacheGetBufferoos(Observable.just(BufferooFactory.makeBufferooEntityList(2)))
51+
stubBufferooCacheGetBufferoos(Flowable.just(BufferooFactory.makeBufferooEntityList(2)))
5252
val testObserver = bufferooCacheDataStore.getBufferoos().test()
5353
testObserver.assertComplete()
5454
}
@@ -60,7 +60,7 @@ class BufferooCacheDataStoreTest {
6060
.thenReturn(completable)
6161
}
6262

63-
private fun stubBufferooCacheGetBufferoos(single: Observable<List<BufferooEntity>>) {
63+
private fun stubBufferooCacheGetBufferoos(single: Flowable<List<BufferooEntity>>) {
6464
whenever(bufferooCache.getBufferoos())
6565
.thenReturn(single)
6666
}

data/src/test/java/org/buffer/android/boilerplate/data/source/BufferooRemoteDataStoreTest.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package org.buffer.android.boilerplate.data.source
22

33
import com.nhaarman.mockito_kotlin.mock
44
import com.nhaarman.mockito_kotlin.whenever
5-
import io.reactivex.Observable
5+
import io.reactivex.Flowable
66
import org.buffer.android.boilerplate.data.model.BufferooEntity
77
import org.buffer.android.boilerplate.data.repository.BufferooRemote
88
import org.buffer.android.boilerplate.data.test.factory.BufferooFactory
@@ -41,14 +41,14 @@ class BufferooRemoteDataStoreTest {
4141
//<editor-fold desc="Get Bufferoos">
4242
@Test
4343
fun getBufferoosCompletes() {
44-
stubBufferooCacheGetBufferoos(Observable.just(BufferooFactory.makeBufferooEntityList(2)))
44+
stubBufferooCacheGetBufferoos(Flowable.just(BufferooFactory.makeBufferooEntityList(2)))
4545
val testObserver = bufferooRemote.getBufferoos().test()
4646
testObserver.assertComplete()
4747
}
4848
//</editor-fold>
4949

5050
//<editor-fold desc="Stub helper methods">
51-
private fun stubBufferooCacheGetBufferoos(single: Observable<List<BufferooEntity>>) {
51+
private fun stubBufferooCacheGetBufferoos(single: Flowable<List<BufferooEntity>>) {
5252
whenever(bufferooRemote.getBufferoos())
5353
.thenReturn(single)
5454
}

dependencies.gradle

+7-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ext {
1313
androidCompileSdkVersion = 26
1414

1515
//Libraries
16-
kotlinVersion = '1.1.3-2'
16+
kotlinVersion = '1.1.4-3'
1717
butterKnifeVersion = '7.0.1'
1818
recyclerViewVersion = '21.0.3'
1919
rxJavaVersion = '2.0.2'
@@ -25,8 +25,8 @@ ext {
2525
okHttpVersion = '3.8.1'
2626
androidAnnotationsVersion = '21.0.3'
2727
retrofitVersion = '2.3.0'
28-
roomVersion = '1.0.0-alpha9'
29-
supportLibraryVersion = '26.0.1'
28+
roomVersion = '1.0.0-alpha9-1'
29+
supportLibraryVersion = '26.1.0'
3030
timberVersion = '4.5.1'
3131
glideVersion = '4.0.0'
3232
daggerVersion = '2.11'
@@ -74,7 +74,10 @@ ext {
7474
androidAnnotations: "com.android.support:support-annotations:${androidAnnotationsVersion}",
7575
retrofit: "com.squareup.retrofit2:retrofit:${retrofitVersion}",
7676
retrofitConverter: "com.squareup.retrofit2:converter-gson:${retrofitVersion}",
77-
retrofitAdapter: "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}"
77+
retrofitAdapter: "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}",
78+
archRuntime: "android.arch.lifecycle:runtime:${roomVersion}",
79+
archExtensions: "android.arch.lifecycle:extensions:${roomVersion}",
80+
archCompiler: "android.arch.lifecycle:compiler:${roomVersion}",
7881
]
7982

8083
presentationTestDependencies = [

domain/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apply plugin: 'kotlin'
22

3-
sourceCompatibility = 1.7
4-
targetCompatibility = 1.7
3+
sourceCompatibility = 1.8
4+
targetCompatibility = 1.8
55

66
configurations.all {
77
resolutionStrategy {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.buffer.android.boilerplate.domain.interactor
2+
3+
import io.reactivex.SingleObserver
4+
import io.reactivex.disposables.Disposable
5+
6+
/**
7+
* Default [SingleObserver] base class to define
8+
*/
9+
open class BaseFlowableObserver<T> : SingleObserver<T> {
10+
11+
override fun onSubscribe(d: Disposable) { }
12+
13+
override fun onSuccess(t: T) { }
14+
15+
override fun onError(exception: Throwable) { }
16+
17+
}

domain/src/main/java/org/buffer/android/boilerplate/domain/interactor/ObservableUseCase.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package org.buffer.android.boilerplate.domain.interactor
22

3-
import io.reactivex.Observable
3+
import io.reactivex.Flowable
44
import io.reactivex.Single
55
import io.reactivex.disposables.CompositeDisposable
66
import io.reactivex.disposables.Disposable
7-
import io.reactivex.observers.DisposableObserver
87
import io.reactivex.schedulers.Schedulers
8+
import io.reactivex.subscribers.DisposableSubscriber
99
import org.buffer.android.boilerplate.domain.executor.PostExecutionThread
1010
import org.buffer.android.boilerplate.domain.executor.ThreadExecutor
1111

@@ -23,15 +23,15 @@ abstract class ObservableUseCase<T, in Params> constructor(
2323
/**
2424
* Builds a [Single] which will be used when the current [ObservableUseCase] is executed.
2525
*/
26-
protected abstract fun buildUseCaseObservable(params: Params? = null): Observable<T>
26+
protected abstract fun buildUseCaseObservable(params: Params? = null): Flowable<T>
2727

2828
/**
2929
* Executes the current use case.
3030
*/
31-
open fun execute(observer: DisposableObserver<T>, params: Params? = null) {
31+
open fun execute(observer: DisposableSubscriber<T>, params: Params? = null) {
3232
val observable = this.buildUseCaseObservable(params)
3333
.subscribeOn(Schedulers.from(threadExecutor))
34-
.observeOn(postExecutionThread.scheduler) as Observable<T>
34+
.observeOn(postExecutionThread.scheduler) as Flowable<T>
3535
addDisposable(observable.subscribeWith(observer))
3636
}
3737

domain/src/main/java/org/buffer/android/boilerplate/domain/interactor/browse/GetBufferoos.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.buffer.android.boilerplate.domain.interactor.browse
22

3-
import io.reactivex.Observable
3+
import io.reactivex.Flowable
44
import org.buffer.android.boilerplate.domain.executor.PostExecutionThread
55
import org.buffer.android.boilerplate.domain.executor.ThreadExecutor
66
import org.buffer.android.boilerplate.domain.interactor.ObservableUseCase
@@ -16,7 +16,7 @@ open class GetBufferoos @Inject constructor(val bufferooRepository: BufferooRepo
1616
postExecutionThread: PostExecutionThread):
1717
ObservableUseCase<List<Bufferoo>, Void?>(threadExecutor, postExecutionThread) {
1818

19-
public override fun buildUseCaseObservable(params: Void?): Observable<List<Bufferoo>> {
19+
public override fun buildUseCaseObservable(params: Void?): Flowable<List<Bufferoo>> {
2020
return bufferooRepository.getBufferoos()
2121
}
2222

domain/src/main/java/org/buffer/android/boilerplate/domain/repository/BufferooRepository.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.buffer.android.boilerplate.domain.repository
22

33
import io.reactivex.Completable
4-
import io.reactivex.Observable
4+
import io.reactivex.Flowable
55
import org.buffer.android.boilerplate.domain.model.Bufferoo
66

77
/**
@@ -15,6 +15,6 @@ interface BufferooRepository {
1515

1616
fun saveBufferoos(bufferoos: List<Bufferoo>): Completable
1717

18-
fun getBufferoos(): Observable<List<Bufferoo>>
18+
fun getBufferoos(): Flowable<List<Bufferoo>>
1919

2020
}

0 commit comments

Comments
 (0)