Skip to content

Commit 9cf72c6

Browse files
authored
Mumbo (#10)
Removing encryption from the core library and adding a mumbo module
1 parent 6070f72 commit 9cf72c6

40 files changed

Lines changed: 910 additions & 425 deletions

.idea/codeStyles/Project.xml

Lines changed: 0 additions & 29 deletions
This file was deleted.

app/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,18 @@ android {
7979
exclude 'META-INF/dependencies.txt'
8080
exclude 'META-INF/LGPL2.1'
8181
exclude 'META-INF/eclipse.inf'
82+
exclude 'META-INF/app_release.kotlin_module'
8283
exclude 'about_files/LICENSE-2.0.txt'
8384
exclude 'plugin.xml'
8485
exclude 'plugin.properties'
8586
}
8687
}
8788

8889
dependencies {
89-
implementation project(":lib")
90+
implementation project(":mumbo_store")
9091

9192
implementation appDependencies.gson
93+
implementation appDependencies.appcompatV7
9294

9395
implementation appDependencies.dagger
9496
kapt appDependencies.daggerCompiler

app/src/main/java/uk/co/glass_software/android/shared_preferences/demo/ExpandableListAdapter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ import android.view.View
2828
import android.view.ViewGroup
2929
import android.widget.BaseExpandableListAdapter
3030
import android.widget.TextView
31-
import uk.co.glass_software.android.shared_preferences.StoreEntryFactory
3231
import uk.co.glass_software.android.shared_preferences.demo.model.Counter
3332
import uk.co.glass_software.android.shared_preferences.demo.model.LastOpenDate
3433
import uk.co.glass_software.android.shared_preferences.demo.model.Person
3534
import uk.co.glass_software.android.shared_preferences.demo.model.PersonEntry
36-
import uk.co.glass_software.android.shared_preferences.utils.StoreMode
35+
import uk.co.glass_software.android.shared_preferences.mumbo.MumboEntryFactory
36+
import uk.co.glass_software.android.shared_preferences.mumbo.store.StoreMode
3737
import java.text.SimpleDateFormat
3838
import java.util.*
3939
import kotlin.collections.ArrayList
@@ -46,7 +46,7 @@ internal class ExpandableListAdapter(
4646
private val simpleDateFormat: SimpleDateFormat,
4747
private val plainTextPreferences: SharedPreferences,
4848
private val encryptedPreferences: SharedPreferences,
49-
private val storeEntryFactory: StoreEntryFactory
49+
private val storeEntryFactory: MumboEntryFactory
5050
) : BaseExpandableListAdapter() {
5151

5252
private val headers: LinkedList<String> = LinkedList()

app/src/main/java/uk/co/glass_software/android/shared_preferences/demo/MainPresenter.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ import androidx.lifecycle.Lifecycle.Event.ON_RESUME
2626
import androidx.lifecycle.OnLifecycleEvent
2727
import io.reactivex.disposables.CompositeDisposable
2828
import uk.co.glass_software.android.boilerplate.ui.mvp.MvpPresenter
29-
import uk.co.glass_software.android.shared_preferences.StoreEntryFactory
3029
import uk.co.glass_software.android.shared_preferences.demo.MainMvpContract.*
3130
import uk.co.glass_software.android.shared_preferences.demo.model.Counter
3231
import uk.co.glass_software.android.shared_preferences.demo.model.LastOpenDate
3332
import uk.co.glass_software.android.shared_preferences.demo.model.Person
3433
import uk.co.glass_software.android.shared_preferences.demo.model.PersonEntry
34+
import uk.co.glass_software.android.shared_preferences.mumbo.MumboEntryFactory
35+
import uk.co.glass_software.android.shared_preferences.mumbo.store.StoreMode.ENCRYPTED
36+
import uk.co.glass_software.android.shared_preferences.mumbo.store.StoreMode.PLAIN_TEXT
3537
import uk.co.glass_software.android.shared_preferences.persistence.base.KeyValueStore
36-
import uk.co.glass_software.android.shared_preferences.utils.StoreMode.ENCRYPTED
37-
import uk.co.glass_software.android.shared_preferences.utils.StoreMode.PLAIN_TEXT
3838
import java.util.*
3939

4040
internal class MainPresenter(mvpView: MainMvpView,
@@ -43,7 +43,7 @@ internal class MainPresenter(mvpView: MainMvpView,
4343
private val lastOpenDate: LastOpenDate,
4444
private val plainTextStore: KeyValueStore,
4545
private val encryptedStore: KeyValueStore,
46-
private val storeEntryFactory: StoreEntryFactory)
46+
private val storeEntryFactory: MumboEntryFactory)
4747
: MvpPresenter<MainMvpView, MainMvpPresenter, MainViewComponent>(mvpView, CompositeDisposable()),
4848
MainMvpPresenter {
4949

app/src/main/java/uk/co/glass_software/android/shared_preferences/demo/MainViewModule.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ import android.view.LayoutInflater
2828
import com.google.gson.Gson
2929
import dagger.Module
3030
import dagger.Provides
31-
import uk.co.glass_software.android.shared_preferences.StoreEntryFactory
32-
import uk.co.glass_software.android.shared_preferences.StoreEntryFactory.Companion.DEFAULT_ENCRYPTED_PREFERENCE_NAME
33-
import uk.co.glass_software.android.shared_preferences.StoreEntryFactory.Companion.DEFAULT_PLAIN_TEXT_PREFERENCE_NAME
3431
import uk.co.glass_software.android.shared_preferences.demo.model.Counter
3532
import uk.co.glass_software.android.shared_preferences.demo.model.LastOpenDate
3633
import uk.co.glass_software.android.shared_preferences.demo.model.PersonEntry
34+
import uk.co.glass_software.android.shared_preferences.mumbo.MumboEntryFactory
35+
import uk.co.glass_software.android.shared_preferences.mumbo.MumboEntryFactory.Companion.DEFAULT_ENCRYPTED_PREFERENCE_NAME
36+
import uk.co.glass_software.android.shared_preferences.mumbo.MumboEntryFactory.Companion.DEFAULT_PLAIN_TEXT_PREFERENCE_NAME
3737
import uk.co.glass_software.android.shared_preferences.persistence.base.KeyValueStore
3838
import uk.co.glass_software.android.shared_preferences.persistence.preferences.StoreUtils
3939
import java.text.SimpleDateFormat
@@ -61,20 +61,20 @@ internal class MainViewModule(private val mainActivity: MainActivity) {
6161
@Provides
6262
@Singleton
6363
fun providerStoreEntryFactory(serialiser: GsonSerialiser) =
64-
StoreEntryFactory.builder(mainActivity)
64+
MumboEntryFactory.builder(mainActivity)
6565
.customSerialiser(serialiser)
6666
.build()
6767

6868
@Provides
6969
@Singleton
7070
@Named(PLAIN_TEXT)
71-
fun providePlainTextStore(storeEntryFactory: StoreEntryFactory) =
71+
fun providePlainTextStore(storeEntryFactory: MumboEntryFactory) =
7272
storeEntryFactory.plainTextStore
7373

7474
@Provides
7575
@Singleton
7676
@Named(ENCRYPTED)
77-
fun provideEncryptedStore(storeEntryFactory: StoreEntryFactory) =
77+
fun provideEncryptedStore(storeEntryFactory: MumboEntryFactory) =
7878
storeEntryFactory.encryptedStore
7979

8080
@Provides
@@ -129,7 +129,7 @@ internal class MainViewModule(private val mainActivity: MainActivity) {
129129
lastOpenDate: LastOpenDate,
130130
@Named(PLAIN_TEXT) plainTextStore: KeyValueStore,
131131
@Named(ENCRYPTED) encryptedStore: KeyValueStore,
132-
storeEntryFactory: StoreEntryFactory): MainMvpContract.MainMvpPresenter =
132+
storeEntryFactory: MumboEntryFactory): MainMvpContract.MainMvpPresenter =
133133
MainPresenter(
134134
mainActivity,
135135
personEntry,
@@ -149,7 +149,7 @@ internal class MainViewModule(private val mainActivity: MainActivity) {
149149
simpleDateFormat: SimpleDateFormat,
150150
@Named(PLAIN_TEXT) plainTextPreferences: SharedPreferences,
151151
@Named(ENCRYPTED) encryptedPreferences: SharedPreferences,
152-
storeEntryFactory: StoreEntryFactory) =
152+
storeEntryFactory: MumboEntryFactory) =
153153
ExpandableListAdapter(
154154
presenter,
155155
lastOpenDate,

build.gradle

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
// Top-level build file where you can add configuration options common to all sub-projects/modules.
2323

2424
buildscript {
25-
ext.kotlinVersion = '1.2.71'
25+
ext.kotlinVersion = '1.3.21'
2626

2727
repositories {
2828
jcenter()
@@ -37,7 +37,7 @@ buildscript {
3737

3838
dependencies {
3939
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
40-
classpath 'com.android.tools.build:gradle:3.3.0-beta04'
40+
classpath 'com.android.tools.build:gradle:3.5.0-alpha07'
4141
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
4242
}
4343
}
@@ -62,21 +62,22 @@ ext {
6262
buildToolsVersion = '28.0.2'
6363

6464
jitPackVersion = '1.0'
65+
supportLibraryVersion = '1.0.0-beta01'
6566

66-
daggerVersion = '2.17'
67+
daggerVersion = '2.21'
6768
jsr250Version = '1.0'
6869

6970
boilerplateVersion = '2.1'
7071

71-
rxJavaVersion = '2.2.0'
72+
rxJavaVersion = '2.2.7'
7273
rxKotlinVersion = '2.3.0'
73-
rxAndroidVersion = '2.1.0'
74+
rxAndroidVersion = '2.1.1'
7475

7576
gsonVersion = '2.8.5'
76-
concealVersion = '2.0.2'
77+
mumboVersion = '1.0'
7778

78-
jUnitVersion = '4.12'
79-
mockitoVersion = '2.1.0'
79+
jUnitVersion = '4.13-beta-2'
80+
mockitoVersion = '2.25.1'
8081
supportLibVersion = '27.1.1'
8182

8283
appDependencies = [
@@ -85,6 +86,8 @@ ext {
8586
kotlinJdk8 : "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion",
8687
kotlinReflect : "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion",
8788

89+
appcompatV7 : "androidx.appcompat:appcompat:$supportLibraryVersion",
90+
8891
rxJava : "io.reactivex.rxjava2:rxjava:$rxJavaVersion",
8992
rxKotlin : "io.reactivex.rxjava2:rxkotlin:$rxKotlinVersion",
9093
rxAndroid : "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion",
@@ -97,7 +100,7 @@ ext {
97100
gson : "com.google.code.gson:gson:$gsonVersion",
98101

99102
boilerplate : "com.github.pthomain:boilerplate:$boilerplateVersion",
100-
conceal : "com.facebook.conceal:conceal:$concealVersion",
103+
mumbo : "com.github.pthomain:mumbo:$mumboVersion",
101104

102105
jUnit : "junit:junit:$jUnitVersion",
103106
mockitoCore : "org.mockito:mockito-core:$mockitoVersion"

gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
# under the License.
2020
#
2121

22-
#Sat Sep 29 13:30:37 BST 2018
22+
#Sun Mar 24 10:33:55 GMT 2019
2323
distributionBase=GRADLE_USER_HOME
2424
distributionPath=wrapper/dists
2525
zipStoreBase=GRADLE_USER_HOME
2626
zipStorePath=wrapper/dists
27-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
27+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip

lib/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ dependencies {
8484
api appDependencies.kotlinJdk8
8585

8686
api appDependencies.boilerplate
87-
api appDependencies.conceal
8887

8988
testImplementation appDependencies.jUnit
9089
testImplementation appDependencies.mockitoCore

lib/src/main/java/uk/co/glass_software/android/shared_preferences/SharedPreferenceComponent.kt

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,34 +23,15 @@ package uk.co.glass_software.android.shared_preferences
2323

2424
import dagger.Component
2525
import uk.co.glass_software.android.boilerplate.utils.log.Logger
26-
import uk.co.glass_software.android.shared_preferences.encryption.manager.EncryptionManager
27-
import uk.co.glass_software.android.shared_preferences.encryption.manager.EncryptionManagerModule
2826
import uk.co.glass_software.android.shared_preferences.persistence.base.KeyValueStore
2927
import uk.co.glass_software.android.shared_preferences.persistence.preferences.StoreModule
30-
import uk.co.glass_software.android.shared_preferences.persistence.preferences.StoreModule.Companion.ENCRYPTED
31-
import uk.co.glass_software.android.shared_preferences.persistence.preferences.StoreModule.Companion.FORGETFUL
32-
import uk.co.glass_software.android.shared_preferences.persistence.preferences.StoreModule.Companion.LENIENT
33-
import uk.co.glass_software.android.shared_preferences.persistence.preferences.StoreModule.Companion.PLAIN_TEXT
34-
import javax.inject.Named
3528
import javax.inject.Singleton
3629

3730
@Singleton
38-
@Component(modules = [EncryptionManagerModule::class, StoreModule::class])
31+
@Component(modules = [StoreModule::class])
3932
internal interface SharedPreferenceComponent {
4033

41-
@Named(PLAIN_TEXT)
4234
fun store(): KeyValueStore
4335

44-
@Named(ENCRYPTED)
45-
fun encryptedStore(): KeyValueStore
46-
47-
@Named(LENIENT)
48-
fun lenientStore(): KeyValueStore
49-
50-
@Named(FORGETFUL)
51-
fun forgetfulStore(): KeyValueStore
52-
53-
fun keyStoreManager(): EncryptionManager?
54-
5536
fun logger(): Logger
5637
}

lib/src/main/java/uk/co/glass_software/android/shared_preferences/StoreEntryFactory.kt

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -22,60 +22,32 @@
2222
package uk.co.glass_software.android.shared_preferences
2323

2424
import android.content.Context
25-
import uk.co.glass_software.android.boilerplate.utils.log.Logger
26-
import uk.co.glass_software.android.shared_preferences.encryption.manager.EncryptionManager
2725
import uk.co.glass_software.android.shared_preferences.persistence.base.KeyValueStore
2826
import uk.co.glass_software.android.shared_preferences.persistence.base.UniqueKeyProvider
2927
import uk.co.glass_software.android.shared_preferences.persistence.base.ValueClassProvider
3028
import uk.co.glass_software.android.shared_preferences.persistence.preferences.StoreEntry
31-
import uk.co.glass_software.android.shared_preferences.utils.StoreMode
32-
import uk.co.glass_software.android.shared_preferences.utils.StoreMode.*
3329

34-
class StoreEntryFactory internal constructor(logger: Logger,
35-
val plainTextStore: KeyValueStore,
36-
val encryptedStore: KeyValueStore,
37-
val lenientStore: KeyValueStore,
38-
val forgetfulStore: KeyValueStore,
39-
val encryptionManager: EncryptionManager?) {
40-
init {
41-
logger.d(
42-
this,
43-
"Encryption supported: ${if (encryptionManager?.isEncryptionSupported == true) "TRUE" else "FALSE"}"
44-
)
45-
}
30+
class StoreEntryFactory internal constructor(val store: KeyValueStore) {
4631

4732
fun <C> open(key: String,
48-
mode: StoreMode,
4933
valueClass: Class<C>): StoreEntry<C> =
50-
when (mode) {
51-
PLAIN_TEXT -> plainTextStore
52-
ENCRYPTED -> encryptedStore
53-
LENIENT -> lenientStore
54-
FORGETFUL -> forgetfulStore
55-
}.let {
56-
open(
57-
it,
58-
object : UniqueKeyProvider {
59-
override val uniqueKey = key
60-
},
61-
object : ValueClassProvider<C> {
62-
override val valueClass = valueClass
63-
}
64-
)
65-
}
34+
35+
open(
36+
store,
37+
object : UniqueKeyProvider {
38+
override val uniqueKey = key
39+
},
40+
object : ValueClassProvider<C> {
41+
override val valueClass = valueClass
42+
}
43+
)
6644

6745
private fun <C> open(store: KeyValueStore,
6846
keyProvider: UniqueKeyProvider,
6947
valueClassProvider: ValueClassProvider<C>) =
7048
StoreEntry(store, keyProvider, valueClassProvider)
7149

7250
companion object {
73-
74-
const val DEFAULT_PLAIN_TEXT_PREFERENCE_NAME = "plain_text_store"
75-
const val DEFAULT_ENCRYPTED_PREFERENCE_NAME = "encrypted_store"
76-
77-
fun buildDefault(context: Context) = builder(context).build()
78-
7951
fun builder(context: Context) = StoreEntryFactoryBuilder(
8052
context.applicationContext,
8153
BuildConfig.DEBUG

0 commit comments

Comments
 (0)