clean up error handling
extract remote service error handling - use helper in AccountRegistryService - use helper in DeviceRegistryService - add responseErrorHandler in Helper.kt - add hlaejaErrorHandler in Helper.kt change NoChangeException to extend HlaejaException change NotFoundException to extend HlaejaException
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
package ltd.hlaeja.service
|
||||
|
||||
import java.util.UUID
|
||||
import ltd.hlaeja.exception.DeviceRegistryException
|
||||
import ltd.hlaeja.exception.HlaejaException
|
||||
import ltd.hlaeja.library.deviceRegistry.Type
|
||||
import ltd.hlaeja.library.deviceRegistry.Types
|
||||
import ltd.hlaeja.property.DeviceRegistryProperty
|
||||
@@ -10,10 +8,10 @@ import ltd.hlaeja.util.deviceRegistryType
|
||||
import ltd.hlaeja.util.deviceRegistryTypes
|
||||
import ltd.hlaeja.util.deviceRegistryTypesCreate
|
||||
import ltd.hlaeja.util.deviceRegistryTypesUpdate
|
||||
import org.springframework.http.HttpStatus.BAD_REQUEST
|
||||
import ltd.hlaeja.util.hlaejaErrorHandler
|
||||
import ltd.hlaeja.util.responseErrorHandler
|
||||
import org.springframework.stereotype.Service
|
||||
import org.springframework.web.reactive.function.client.WebClient
|
||||
import org.springframework.web.server.ResponseStatusException
|
||||
import reactor.core.publisher.Flux
|
||||
import reactor.core.publisher.Mono
|
||||
|
||||
@@ -31,33 +29,16 @@ class DeviceRegistryService(
|
||||
fun createType(
|
||||
request: Type.Request,
|
||||
): Mono<Type.Response> = webClient.deviceRegistryTypesCreate(request, property)
|
||||
.onErrorResume { error ->
|
||||
when (error) {
|
||||
is DeviceRegistryException -> Mono.error(error)
|
||||
else -> Mono.error(ResponseStatusException(BAD_REQUEST, error.message))
|
||||
}
|
||||
}
|
||||
.onErrorResume(::hlaejaErrorHandler)
|
||||
|
||||
fun getType(
|
||||
type: UUID,
|
||||
): Mono<Type.Response> = webClient.deviceRegistryType(type, property)
|
||||
.onErrorResume { error ->
|
||||
when (error) {
|
||||
is ResponseStatusException -> Mono.error(error)
|
||||
else -> Mono.error(ResponseStatusException(BAD_REQUEST, error.message))
|
||||
}
|
||||
}
|
||||
.onErrorResume(::responseErrorHandler)
|
||||
|
||||
fun updateType(
|
||||
type: UUID,
|
||||
request: Type.Request,
|
||||
): Mono<Type.Response> = webClient.deviceRegistryTypesUpdate(type, request, property)
|
||||
.onErrorResume(::errorHandler)
|
||||
|
||||
private fun errorHandler(
|
||||
error: Throwable,
|
||||
): Mono<out Type.Response> = when (error) {
|
||||
is HlaejaException -> Mono.error(error)
|
||||
else -> Mono.error(ResponseStatusException(BAD_REQUEST, error.message))
|
||||
}
|
||||
.onErrorResume(::hlaejaErrorHandler)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user