From 37fb9443ea6af0bd9869724cb44426df8938433e Mon Sep 17 00:00:00 2001 From: Artyom <17145209+Korna@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:29:30 +0300 Subject: [PATCH] Update PushMessageProviderServiceFactory implementation --- .../PushMessageProviderServiceFactory.kt | 17 ++----------- .../PushMessageProviderServiceFactoryImpl.kt | 25 +++++++++++++++++++ ...hMessageProviderServiceFactoryImplTest.kt} | 8 +++--- 3 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryImpl.kt rename push-message-provider/src/test/kotlin/ru/touchin/push/message/provider/factories/{PushMessageProviderServiceFactoryTest.kt => PushMessageProviderServiceFactoryImplTest.kt} (96%) diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactory.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactory.kt index 0f31512..cb444a7 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactory.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactory.kt @@ -1,23 +1,10 @@ package ru.touchin.push.message.provider.factories -import org.springframework.stereotype.Component -import ru.touchin.common.exceptions.CommonException import ru.touchin.push.message.provider.enums.PlatformType -import ru.touchin.push.message.provider.properties.PushMessageProviderProperties import ru.touchin.push.message.provider.services.PushMessageProviderService -@Component -class PushMessageProviderServiceFactory( - private val pushMessageProviderProperties: PushMessageProviderProperties, - private val pushMessageProviderServices: List -) { +interface PushMessageProviderServiceFactory { - fun get(platformType: PlatformType): PushMessageProviderService { - val supportedProviderTypes = pushMessageProviderProperties.platformProviders[platformType]?.firstOrNull() - ?: throw CommonException("No push message provider set for platform '$platformType'") - - return pushMessageProviderServices.find { it.type == supportedProviderTypes } - ?: throw CommonException("No push message provider found for platform '$platformType'") - } + fun get(platformType: PlatformType): PushMessageProviderService } diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryImpl.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryImpl.kt new file mode 100644 index 0000000..03e7118 --- /dev/null +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryImpl.kt @@ -0,0 +1,25 @@ +package ru.touchin.push.message.provider.factories + +import org.springframework.stereotype.Component +import ru.touchin.common.exceptions.CommonException +import ru.touchin.push.message.provider.enums.PlatformType +import ru.touchin.push.message.provider.properties.PushMessageProviderProperties +import ru.touchin.push.message.provider.services.PushMessageProviderService +import kotlin.jvm.Throws + +@Component +class PushMessageProviderServiceFactoryImpl( + private val pushMessageProviderProperties: PushMessageProviderProperties, + private val pushMessageProviderServices: List +) : PushMessageProviderServiceFactory { + + @Throws(CommonException::class) + override fun get(platformType: PlatformType): PushMessageProviderService { + val supportedProviderTypes = pushMessageProviderProperties.platformProviders[platformType]?.firstOrNull() + ?: throw CommonException("Configuration has no setup for platform '$platformType'") + + return pushMessageProviderServices.find { it.type == supportedProviderTypes } + ?: throw CommonException("Configuration has no push message provider support for platform '$platformType'") + } + +} diff --git a/push-message-provider/src/test/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryTest.kt b/push-message-provider/src/test/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryImplTest.kt similarity index 96% rename from push-message-provider/src/test/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryTest.kt rename to push-message-provider/src/test/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryImplTest.kt index f7f83b3..ff875d6 100644 --- a/push-message-provider/src/test/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryTest.kt +++ b/push-message-provider/src/test/kotlin/ru/touchin/push/message/provider/factories/PushMessageProviderServiceFactoryImplTest.kt @@ -12,7 +12,7 @@ import ru.touchin.push.message.provider.enums.PushMessageProviderType import ru.touchin.push.message.provider.properties.PushMessageProviderProperties import ru.touchin.push.message.provider.services.PushMessageProviderService -class PushMessageProviderServiceFactoryTest { +class PushMessageProviderServiceFactoryImplTest { private val pushMessageProviderServiceFcm = object : PushMessageProviderService { @@ -24,7 +24,7 @@ class PushMessageProviderServiceFactoryTest { @Test @DisplayName("При отсутствии поддерживаемых платформ выбрасывается исключение") fun get_platformNotFound() { - val pushMessageProviderServiceFactory = PushMessageProviderServiceFactory( + val pushMessageProviderServiceFactory = PushMessageProviderServiceFactoryImpl( pushMessageProviderProperties = PushMessageProviderProperties( platformProviders = emptyMap() ), @@ -42,7 +42,7 @@ class PushMessageProviderServiceFactoryTest { @Test @DisplayName("При отсутствии назначенного провайдера у поддерживаемой платформы выбрасывается исключение") fun get_providerServiceForPlatformNotFound() { - val pushMessageProviderServiceFactory = PushMessageProviderServiceFactory( + val pushMessageProviderServiceFactory = PushMessageProviderServiceFactoryImpl( pushMessageProviderProperties = PushMessageProviderProperties( platformProviders = mapOf( PlatformType.IOS to emptyList() @@ -62,7 +62,7 @@ class PushMessageProviderServiceFactoryTest { @Test @DisplayName("Настроенной платформе назначается первый сервис из доступных") fun get_firstSupportedProviderService() { - val pushMessageProviderServiceFactory = PushMessageProviderServiceFactory( + val pushMessageProviderServiceFactory = PushMessageProviderServiceFactoryImpl( pushMessageProviderProperties = PushMessageProviderProperties( platformProviders = mapOf(PlatformType.IOS to listOf(PushMessageProviderType.FCM)) ),