1
0
mirror of https://github.com/pcvolkmer/etl-processor.git synced 2025-04-19 17:26:51 +00:00

feat: handle and save issue report for non HTTP 2xx responses

This commit is contained in:
Paul-Christian Volkmer 2025-03-22 10:43:31 +01:00
parent 9bdd8ba375
commit 4ad6c4bd0a
4 changed files with 13 additions and 11 deletions

View File

@ -28,6 +28,7 @@ import org.springframework.http.HttpHeaders
import org.springframework.http.MediaType import org.springframework.http.MediaType
import org.springframework.retry.support.RetryTemplate import org.springframework.retry.support.RetryTemplate
import org.springframework.web.client.RestClientException import org.springframework.web.client.RestClientException
import org.springframework.web.client.RestClientResponseException
import org.springframework.web.client.RestTemplate import org.springframework.web.client.RestTemplate
abstract class RestMtbFileSender( abstract class RestMtbFileSender(
@ -64,9 +65,10 @@ abstract class RestMtbFileSender(
} }
} catch (e: IllegalArgumentException) { } catch (e: IllegalArgumentException) {
logger.error("Not a valid URI to export to: '{}'", restTargetProperties.uri!!) logger.error("Not a valid URI to export to: '{}'", restTargetProperties.uri!!)
} catch (e: RestClientException) { } catch (e: RestClientResponseException) {
logger.info(restTargetProperties.uri!!.toString()) logger.info(restTargetProperties.uri!!.toString())
logger.error("Cannot send data to remote system", e) logger.error("Request data not accepted by remote system", e)
return MtbFileSender.Response(e.statusCode.asRequestStatus(), e.responseBodyAsString)
} }
return MtbFileSender.Response(RequestStatus.ERROR, "Sonstiger Fehler bei der Übertragung") return MtbFileSender.Response(RequestStatus.ERROR, "Sonstiger Fehler bei der Übertragung")
} }

View File

@ -93,7 +93,7 @@ class RequestProcessor(
Instant.now(), Instant.now(),
responseStatus.status, responseStatus.status,
when (responseStatus.status) { when (responseStatus.status) {
RequestStatus.WARNING -> Optional.of(responseStatus.body) RequestStatus.ERROR, RequestStatus.WARNING -> Optional.of(responseStatus.body)
else -> Optional.empty() else -> Optional.empty()
} }
) )

View File

@ -213,23 +213,23 @@ class RestBwhcMtbFileSenderTest {
), ),
RequestWithResponse( RequestWithResponse(
HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST,
"??", ERROR_RESPONSE_BODY,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY)
), ),
RequestWithResponse( RequestWithResponse(
HttpStatus.UNPROCESSABLE_ENTITY, HttpStatus.UNPROCESSABLE_ENTITY,
errorBody, errorBody,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, errorBody)
), ),
// Some more errors not mentioned in documentation // Some more errors not mentioned in documentation
RequestWithResponse( RequestWithResponse(
HttpStatus.NOT_FOUND, HttpStatus.NOT_FOUND,
"what????", ERROR_RESPONSE_BODY,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY)
), ),
RequestWithResponse( RequestWithResponse(
HttpStatus.INTERNAL_SERVER_ERROR, HttpStatus.INTERNAL_SERVER_ERROR,
"what????", ERROR_RESPONSE_BODY,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY)
) )
) )

View File

@ -213,23 +213,23 @@ class RestDipMtbFileSenderTest {
), ),
RequestWithResponse( RequestWithResponse(
HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST,
"??", ERROR_RESPONSE_BODY,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY)
), ),
RequestWithResponse( RequestWithResponse(
HttpStatus.UNPROCESSABLE_ENTITY, HttpStatus.UNPROCESSABLE_ENTITY,
errorBody, errorBody,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, errorBody)
), ),
// Some more errors not mentioned in documentation // Some more errors not mentioned in documentation
RequestWithResponse( RequestWithResponse(
HttpStatus.NOT_FOUND, HttpStatus.NOT_FOUND,
"what????", ERROR_RESPONSE_BODY,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY)
), ),
RequestWithResponse( RequestWithResponse(
HttpStatus.INTERNAL_SERVER_ERROR, HttpStatus.INTERNAL_SERVER_ERROR,
"what????", ERROR_RESPONSE_BODY,
MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY) MtbFileSender.Response(RequestStatus.ERROR, ERROR_RESPONSE_BODY)
) )
) )