Skip to content

Commit 569f6ac

Browse files
committed
refactor: inject logger via constructor
1 parent b849ff6 commit 569f6ac

22 files changed

Lines changed: 160 additions & 104 deletions

File tree

miracl-sdk/src/androidTest/java/com/miracl/trust/session/SessionManagerTest.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import com.miracl.trust.network.ApiRequestExecutor
88
import com.miracl.trust.network.ApiSettings
99
import com.miracl.trust.network.HttpsURLConnectionRequestExecutor
1010
import com.miracl.trust.util.json.KotlinxSerializationJsonUtil
11+
import com.miracl.trust.util.log.DefaultLogger
12+
import com.miracl.trust.util.log.Logger
1113
import com.miracl.trust.utilities.AccessIdResponse
1214
import com.miracl.trust.utilities.MIRACLService
1315
import com.miracl.trust.utilities.randomPinLength
@@ -26,14 +28,15 @@ class SessionManagerTest {
2628

2729
@Before
2830
fun setUp() = runBlocking {
29-
val httpRequestExecutor = HttpsURLConnectionRequestExecutor(10, 10)
31+
val logger = DefaultLogger(Logger.LoggingLevel.NONE)
32+
val httpRequestExecutor = HttpsURLConnectionRequestExecutor(logger, 10, 10)
3033
val apiSettings = ApiSettings(projectUrl)
3134
val apiRequestExecutor =
3235
ApiRequestExecutor(httpRequestExecutor, KotlinxSerializationJsonUtil)
3336

3437
val sessionApi =
3538
SessionApiManager(apiRequestExecutor, KotlinxSerializationJsonUtil, apiSettings)
36-
sessionManager = SessionManager(sessionApi)
39+
sessionManager = SessionManager(sessionApi, logger)
3740
}
3841

3942
@Test

miracl-sdk/src/androidTest/java/com/miracl/trust/utilities/MIRACLService.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import com.miracl.trust.network.HttpMethod
77
import com.miracl.trust.network.HttpsURLConnectionRequestExecutor
88
import com.miracl.trust.signing.Signature
99
import com.miracl.trust.test.BuildConfig
10+
import com.miracl.trust.util.log.DefaultLogger
11+
import com.miracl.trust.util.log.Logger
1012
import kotlinx.coroutines.runBlocking
1113
import kotlinx.serialization.SerialName
1214
import kotlinx.serialization.Serializable
@@ -67,7 +69,12 @@ data class VerifySignatureResponse(
6769
)
6870

6971
object MIRACLService {
70-
private val requestExecutor = HttpsURLConnectionRequestExecutor(10, 10)
72+
private val requestExecutor = HttpsURLConnectionRequestExecutor(
73+
logger = DefaultLogger(Logger.LoggingLevel.NONE),
74+
connectTimeout = 10,
75+
readTimeout = 10
76+
)
77+
7178
private val json = Json {
7279
encodeDefaults = true
7380
ignoreUnknownKeys = true

miracl-sdk/src/main/java/com/miracl/trust/MIRACLTrust.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ public class MIRACLTrust private constructor(
4242
configuration: Configuration
4343
) {
4444
public companion object {
45-
internal var logger: Logger? = null
46-
private set
47-
4845
private const val NOT_INITIALIZED_EXCEPTION = "MIRACLTrust SDK not initialized!"
4946

5047
private lateinit var instance: MIRACLTrust
@@ -72,6 +69,7 @@ public class MIRACLTrust private constructor(
7269
}
7370

7471
//region Properties
72+
private val logger = configuration.logger
7573
private val apiSettings: ApiSettings
7674
private val verificator: Verificator
7775
private val registrator: RegistratorContract
@@ -97,15 +95,13 @@ public class MIRACLTrust private constructor(
9795

9896
//region Initialization
9997
init {
100-
logger = configuration.logger
101-
10298
val apiRequestExecutor = ApiRequestExecutor(
10399
configuration.httpRequestExecutor,
104100
KotlinxSerializationJsonUtil,
105101
configuration.applicationInfo
106102
)
107103

108-
val componentFactory = configuration.componentFactory ?: ComponentFactory(context)
104+
val componentFactory = configuration.componentFactory ?: ComponentFactory(context, logger)
109105
apiSettings = ApiSettings(configuration.projectUrl)
110106

111107
miraclTrustCoroutineContext = configuration.miraclCoroutineContext
@@ -1690,7 +1686,7 @@ public class MIRACLTrust private constructor(
16901686

16911687
//region Private
16921688
private fun logError(tag: String, exception: Exception) {
1693-
logger?.error(
1689+
logger.error(
16941690
tag,
16951691
LoggerConstants.FLOW_ERROR
16961692
.format(
@@ -1701,7 +1697,7 @@ public class MIRACLTrust private constructor(
17011697

17021698
private fun <T> T.logIfError(tag: String): T {
17031699
if (this is MIRACLError<*, *>) {
1704-
logger?.error(
1700+
logger.error(
17051701
tag,
17061702
LoggerConstants.FLOW_ERROR
17071703
.format(

miracl-sdk/src/main/java/com/miracl/trust/authentication/Authentication.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import com.miracl.trust.session.SessionApi
1515
import com.miracl.trust.storage.UserStorage
1616
import com.miracl.trust.util.acquirePin
1717
import com.miracl.trust.util.hexStringToByteArray
18-
import com.miracl.trust.util.log.Loggable
18+
import com.miracl.trust.util.log.Logger
1919
import com.miracl.trust.util.log.LoggerConstants
2020
import com.miracl.trust.util.toUserDto
2121
import com.miracl.trust.util.toHexString
@@ -74,8 +74,9 @@ internal class Authenticator(
7474
private val sessionApi: SessionApi,
7575
private val crypto: Crypto,
7676
private val registrator: RegistratorContract,
77-
private val userStorage: UserStorage
78-
) : AuthenticatorContract, Loggable {
77+
private val userStorage: UserStorage,
78+
private val logger: Logger
79+
) : AuthenticatorContract {
7980
companion object {
8081
const val PUSH_NOTIFICATION_PROJECT_ID = "projectID"
8182
const val PUSH_NOTIFICATION_USER_ID = "userID"
@@ -320,7 +321,7 @@ internal class Authenticator(
320321
try {
321322
userStorage.update(user.revoke().toUserDto())
322323
} catch (ex: Exception) {
323-
logger?.error(
324+
logger.error(
324325
LoggerConstants.AUTHENTICATOR_TAG,
325326
LoggerConstants.AuthenticatorOperations.REVOKE_USER_ERROR.format(
326327
ex
@@ -330,6 +331,6 @@ internal class Authenticator(
330331
}
331332

332333
private fun logOperation(operation: String) {
333-
logger?.info(LoggerConstants.AUTHENTICATOR_TAG, operation)
334+
logger.info(LoggerConstants.AUTHENTICATOR_TAG, operation)
334335
}
335336
}

miracl-sdk/src/main/java/com/miracl/trust/configuration/Configuration.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,17 +184,17 @@ public class Configuration private constructor(
184184
deviceNameValue = Build.MODEL
185185
}
186186

187-
if (!this::httpRequestExecutorValue.isInitialized) {
188-
httpRequestExecutorValue =
189-
HttpsURLConnectionRequestExecutor(connectTimeout, readTimeout)
190-
}
191-
192187
if (!this::loggerValue.isInitialized) {
193188
val loggingLevel = loggingLevel ?: Logger.LoggingLevel.NONE
194189
loggerValue = DefaultLogger(loggingLevel)
195190
this.loggingLevel = loggingLevel
196191
}
197192

193+
if (!this::httpRequestExecutorValue.isInitialized) {
194+
httpRequestExecutorValue =
195+
HttpsURLConnectionRequestExecutor(loggerValue, connectTimeout, readTimeout)
196+
}
197+
198198
return Configuration(this)
199199
}
200200
}

miracl-sdk/src/main/java/com/miracl/trust/crypto/Crypto.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.miracl.trust.crypto
33
import com.miracl.trust.MIRACLError
44
import com.miracl.trust.MIRACLResult
55
import com.miracl.trust.MIRACLSuccess
6-
import com.miracl.trust.util.log.Loggable
6+
import com.miracl.trust.util.log.Logger
77
import com.miracl.trust.util.log.LoggerConstants.CRYPTO_OPERATION_FINISHED
88
import com.miracl.trust.util.log.LoggerConstants.CRYPTO_OPERATION_STARTED
99
import com.miracl.trust.util.log.LoggerConstants.CRYPTO_TAG
@@ -15,8 +15,9 @@ internal enum class SupportedEllipticCurves {
1515
}
1616

1717
internal class Crypto(
18+
private val logger: Logger,
1819
private val cryptoExternal: CryptoExternalContract = CryptoExternal()
19-
) : Loggable {
20+
) {
2021
fun getClientPass1Proof(
2122
mpinId: ByteArray,
2223
token: ByteArray,
@@ -121,10 +122,10 @@ internal class Crypto(
121122
}
122123

123124
private fun logOperationStarted(operationName: String) {
124-
logger?.debug(CRYPTO_TAG, CRYPTO_OPERATION_STARTED.format(operationName))
125+
logger.debug(CRYPTO_TAG, CRYPTO_OPERATION_STARTED.format(operationName))
125126
}
126127

127128
private fun logOperationFinished(operationName: String) {
128-
logger?.debug(CRYPTO_TAG, CRYPTO_OPERATION_FINISHED.format(operationName))
129+
logger.debug(CRYPTO_TAG, CRYPTO_OPERATION_FINISHED.format(operationName))
129130
}
130131
}

miracl-sdk/src/main/java/com/miracl/trust/factory/ComponentFactory.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ import com.miracl.trust.session.*
1010
import com.miracl.trust.signing.DocumentSigner
1111
import com.miracl.trust.storage.UserStorage
1212
import com.miracl.trust.storage.room.RoomDatabaseModule
13+
import com.miracl.trust.util.log.Logger
1314

1415
internal class ComponentFactory(
15-
private val context: Context
16+
private val context: Context,
17+
private val logger: Logger
1618
) {
17-
private val crypto: Crypto = Crypto()
19+
private val crypto: Crypto = Crypto(logger)
1820

1921
fun defaultUserStorage(projectId: String): UserStorage =
2022
RoomDatabaseModule(context, projectId).userStorage()
@@ -23,7 +25,7 @@ internal class ComponentFactory(
2325
authenticator: AuthenticatorContract,
2426
verificationApi: VerificationApi,
2527
userStorage: UserStorage
26-
): Verificator = Verificator(authenticator, verificationApi, userStorage)
28+
): Verificator = Verificator(authenticator, verificationApi, userStorage, logger)
2729

2830
fun createRegistrator(
2931
registrationApi: RegistrationApi,
@@ -32,7 +34,8 @@ internal class ComponentFactory(
3234
Registrator(
3335
registrationApi,
3436
crypto,
35-
userStorage
37+
userStorage,
38+
logger
3639
)
3740

3841
fun createAuthenticator(
@@ -46,23 +49,24 @@ internal class ComponentFactory(
4649
sessionApi,
4750
crypto,
4851
registrator,
49-
userStorage
52+
userStorage,
53+
logger
5054
)
5155

5256
fun createDocumentSigner(
5357
authenticator: AuthenticatorContract,
5458
userStorage: UserStorage,
5559
crossDeviceSessionApi: CrossDeviceSessionApi
5660
): DocumentSigner =
57-
DocumentSigner(crypto, authenticator, userStorage, crossDeviceSessionApi)
61+
DocumentSigner(crypto, authenticator, userStorage, crossDeviceSessionApi, logger)
5862

5963
fun createSessionManager(
6064
sessionApi: SessionApi
6165
): SessionManagerContract =
62-
SessionManager(sessionApi)
66+
SessionManager(sessionApi, logger)
6367

6468
fun createCrossDeviceSessionManager(
6569
crossDeviceSessionApi: CrossDeviceSessionApi
6670
): CrossDeviceSessionManagerContract =
67-
CrossDeviceSessionManager(crossDeviceSessionApi)
71+
CrossDeviceSessionManager(crossDeviceSessionApi, logger)
6872
}

miracl-sdk/src/main/java/com/miracl/trust/network/HttpsURLConnectionRequestExecutor.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.miracl.trust.network
33
import com.miracl.trust.MIRACLError
44
import com.miracl.trust.MIRACLResult
55
import com.miracl.trust.MIRACLSuccess
6-
import com.miracl.trust.util.log.Loggable
6+
import com.miracl.trust.util.log.Logger
77
import com.miracl.trust.util.log.LoggerConstants
88
import com.miracl.trust.util.log.LoggerConstants.NETWORK_TAG
99
import java.io.*
@@ -25,9 +25,10 @@ internal class DefaultHttpConnectionBuilder : HttpURLConnectionBuilder {
2525
* Provides implementation of the HttpRequestExecutor that uses [HttpURLConnection].
2626
*/
2727
internal class HttpsURLConnectionRequestExecutor(
28+
private val logger: Logger,
2829
connectTimeout: Int,
2930
readTimeout: Int
30-
) : HttpRequestExecutor, Loggable {
31+
) : HttpRequestExecutor {
3132
companion object {
3233
private const val ENCODING = "UTF-8"
3334
private const val MEDIA_TYPE = "application/json; charset=utf-8"
@@ -55,7 +56,7 @@ internal class HttpsURLConnectionRequestExecutor(
5556
try {
5657
urlConnection = buildURLConnection(apiRequest)
5758

58-
logger?.debug(
59+
logger.debug(
5960
NETWORK_TAG,
6061
LoggerConstants.NETWORK_REQUEST.format(
6162
urlConnection.requestMethod,
@@ -72,7 +73,7 @@ internal class HttpsURLConnectionRequestExecutor(
7273
}
7374
)
7475

75-
logger?.debug(
76+
logger.debug(
7677
NETWORK_TAG,
7778
LoggerConstants.NETWORK_RESPONSE.format(
7879
urlConnection.requestMethod,
@@ -93,7 +94,7 @@ internal class HttpsURLConnectionRequestExecutor(
9394
}
9495
} catch (ex: Exception) {
9596
if (ex is IOException) {
96-
logger?.error(NETWORK_TAG, ex.toString())
97+
logger.error(NETWORK_TAG, ex.toString())
9798
}
9899

99100
return MIRACLError(HttpRequestExecutorException.ExecutionError(cause = ex))
@@ -116,7 +117,7 @@ internal class HttpsURLConnectionRequestExecutor(
116117

117118
apiRequest.body?.also {
118119
if (apiRequest.method == HttpMethod.GET) {
119-
logger?.info(NETWORK_TAG, HTTP_METHOD_NOT_EXPECTED_TO_HAVE_A_BODY_LOG)
120+
logger.info(NETWORK_TAG, HTTP_METHOD_NOT_EXPECTED_TO_HAVE_A_BODY_LOG)
120121
}
121122

122123
urlConnection.setRequestProperty(

miracl-sdk/src/main/java/com/miracl/trust/registration/Registration.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.miracl.trust.model.User
1313
import com.miracl.trust.storage.UserStorage
1414
import com.miracl.trust.util.acquirePin
1515
import com.miracl.trust.util.hexStringToByteArray
16-
import com.miracl.trust.util.log.Loggable
16+
import com.miracl.trust.util.log.Logger
1717
import com.miracl.trust.util.log.LoggerConstants
1818
import com.miracl.trust.util.toUserDto
1919
import com.miracl.trust.util.toHexString
@@ -34,8 +34,9 @@ internal interface RegistratorContract {
3434
internal class Registrator(
3535
private val registrationApi: RegistrationApi,
3636
private val crypto: Crypto,
37-
private val userStorage: UserStorage
38-
) : RegistratorContract, Loggable {
37+
private val userStorage: UserStorage,
38+
private val logger: Logger
39+
) : RegistratorContract {
3940
companion object {
4041
internal const val MIN_PIN_LENGTH = 4
4142
internal const val MAX_PIN_LENGTH = 6
@@ -283,6 +284,6 @@ internal class Registrator(
283284
}
284285

285286
private fun logOperation(operation: String) {
286-
logger?.info(LoggerConstants.REGISTRATOR_TAG, operation)
287+
logger.info(LoggerConstants.REGISTRATOR_TAG, operation)
287288
}
288289
}

miracl-sdk/src/main/java/com/miracl/trust/registration/Verificator.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@ import com.miracl.trust.model.User
1313
import com.miracl.trust.session.AuthenticationSessionDetails
1414
import com.miracl.trust.session.CrossDeviceSession
1515
import com.miracl.trust.storage.UserStorage
16-
import com.miracl.trust.util.log.Loggable
16+
import com.miracl.trust.util.log.Logger
1717
import com.miracl.trust.util.log.LoggerConstants
1818
import com.miracl.trust.util.toHexString
1919

2020
internal class Verificator(
2121
private val authenticator: AuthenticatorContract,
2222
private val verificationApi: VerificationApi,
23-
private val userStorage: UserStorage
24-
) : Loggable {
23+
private val userStorage: UserStorage,
24+
private val logger: Logger
25+
) {
2526
suspend fun sendVerificationEmail(
2627
userId: String,
2728
projectId: String,
@@ -191,6 +192,6 @@ internal class Verificator(
191192
}
192193

193194
private fun logOperation(operation: String) {
194-
logger?.info(LoggerConstants.VERIFICATOR_TAG, operation)
195+
logger.info(LoggerConstants.VERIFICATOR_TAG, operation)
195196
}
196197
}

0 commit comments

Comments
 (0)