From 611d079c3e08759a2e47795a86b1905366d06bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 15 May 2025 13:20:08 +0200 Subject: [PATCH 1/3] fix: pass message to error decoder --- .../eu/enmeshed/ConnectorErrorDecoder.java | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/enmeshed/ConnectorErrorDecoder.java b/src/main/java/eu/enmeshed/ConnectorErrorDecoder.java index 833adce..3663dd8 100644 --- a/src/main/java/eu/enmeshed/ConnectorErrorDecoder.java +++ b/src/main/java/eu/enmeshed/ConnectorErrorDecoder.java @@ -4,6 +4,18 @@ import eu.enmeshed.exceptions.PeerDeletionException; import eu.enmeshed.exceptions.WrongRelationshipStatusException; import feign.FeignException; +import feign.FeignException.BadRequest; +import feign.FeignException.Conflict; +import feign.FeignException.FeignClientException; +import feign.FeignException.Forbidden; +import feign.FeignException.Gone; +import feign.FeignException.MethodNotAllowed; +import feign.FeignException.NotAcceptable; +import feign.FeignException.NotFound; +import feign.FeignException.TooManyRequests; +import feign.FeignException.Unauthorized; +import feign.FeignException.UnprocessableEntity; +import feign.FeignException.UnsupportedMediaType; import feign.Request; import feign.Response; import feign.RetryableException; @@ -33,17 +45,32 @@ public FeignException decode(String methodKey, Response response) { String responseBody = new String(responseBodyBytes); ConnectorError connectorError = objectMapper.convertValue(objectMapper.readTree(responseBody).get("error"), ConnectorError.class); - FeignException feignException = FeignException.errorStatus(methodKey, response); + var request = response.request(); + var headers = response.headers(); + var message = connectorError.message(); if (connectorError.isRelationshipStatusWrong()) { - return new WrongRelationshipStatusException(connectorError.message(), feignException.request(), responseBodyBytes, feignException.responseHeaders()); + return new WrongRelationshipStatusException(message, request, responseBodyBytes, headers); } if (connectorError.hasPeerDeletionError()) { - return new PeerDeletionException(connectorError.message(), feignException.request(), responseBodyBytes, feignException.responseHeaders()); + return new PeerDeletionException(message, request, responseBodyBytes, headers); } - return feignException; + return switch (responseStatus) { + case 400 -> new BadRequest(message, request, responseBodyBytes, headers); + case 401 -> new Unauthorized(message, request, responseBodyBytes, headers); + case 403 -> new Forbidden(message, request, responseBodyBytes, headers); + case 404 -> new NotFound(message, request, responseBodyBytes, headers); + case 405 -> new MethodNotAllowed(message, request, responseBodyBytes, headers); + case 406 -> new NotAcceptable(message, request, responseBodyBytes, headers); + case 409 -> new Conflict(message, request, responseBodyBytes, headers); + case 410 -> new Gone(message, request, responseBodyBytes, headers); + case 415 -> new UnsupportedMediaType(message, request, responseBodyBytes, headers); + case 429 -> new TooManyRequests(message, request, responseBodyBytes, headers); + case 422 -> new UnprocessableEntity(message, request, responseBodyBytes, headers); + default -> new FeignClientException(responseStatus, message, request, responseBodyBytes, headers); + }; } catch (IOException e) { log.error("Failed to parse error response body", e); return new RetryableException( From 91328db1c45142ef2a717a4a65022b9a58e86ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 15 May 2025 13:20:41 +0200 Subject: [PATCH 2/3] fix: add object reference to all places where truncatedReference exists --- .../eu/enmeshed/model/ObjectReference.java | 18 ++++++++++++++++++ .../eu/enmeshed/model/file/ConnectorFile.java | 2 ++ .../RelationshipTemplate.java | 3 +++ .../enmeshed/model/tokens/ConnectorToken.java | 4 ++++ 4 files changed, 27 insertions(+) create mode 100644 src/main/java/eu/enmeshed/model/ObjectReference.java diff --git a/src/main/java/eu/enmeshed/model/ObjectReference.java b/src/main/java/eu/enmeshed/model/ObjectReference.java new file mode 100644 index 0000000..f12ec1c --- /dev/null +++ b/src/main/java/eu/enmeshed/model/ObjectReference.java @@ -0,0 +1,18 @@ +package eu.enmeshed.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@SuperBuilder +public class ObjectReference { + + private String truncated; + private String url; +} diff --git a/src/main/java/eu/enmeshed/model/file/ConnectorFile.java b/src/main/java/eu/enmeshed/model/file/ConnectorFile.java index 7e687c9..6fe727b 100644 --- a/src/main/java/eu/enmeshed/model/file/ConnectorFile.java +++ b/src/main/java/eu/enmeshed/model/file/ConnectorFile.java @@ -1,6 +1,7 @@ package eu.enmeshed.model.file; import com.fasterxml.jackson.annotation.JsonProperty; +import eu.enmeshed.model.ObjectReference; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -29,5 +30,6 @@ public class ConnectorFile { private boolean own; private String truncatedReference; + private ObjectReference reference; private String secretKey; } diff --git a/src/main/java/eu/enmeshed/model/relationshipTemplates/RelationshipTemplate.java b/src/main/java/eu/enmeshed/model/relationshipTemplates/RelationshipTemplate.java index eca9491..b285b38 100644 --- a/src/main/java/eu/enmeshed/model/relationshipTemplates/RelationshipTemplate.java +++ b/src/main/java/eu/enmeshed/model/relationshipTemplates/RelationshipTemplate.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import eu.enmeshed.model.ContentWrapper; +import eu.enmeshed.model.ObjectReference; import eu.enmeshed.model.event.WebhookData; import java.time.ZonedDateTime; import lombok.AllArgsConstructor; @@ -36,4 +37,6 @@ public class RelationshipTemplate extends ContentWrapper Date: Thu, 15 May 2025 13:21:02 +0200 Subject: [PATCH 3/3] chore: rename variable --- .../relationshipTemplates/GetRelationshipTemplatesQuery.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/eu/enmeshed/requests/relationshipTemplates/GetRelationshipTemplatesQuery.java b/src/main/java/eu/enmeshed/requests/relationshipTemplates/GetRelationshipTemplatesQuery.java index dc0b544..5ee3e66 100644 --- a/src/main/java/eu/enmeshed/requests/relationshipTemplates/GetRelationshipTemplatesQuery.java +++ b/src/main/java/eu/enmeshed/requests/relationshipTemplates/GetRelationshipTemplatesQuery.java @@ -1,6 +1,5 @@ package eu.enmeshed.requests.relationshipTemplates; -import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -19,6 +18,5 @@ public class GetRelationshipTemplatesQuery { private String createdBy; private String createdByDevice; private int maxNumberOfAllocations; - @JsonProperty("isOwn") - private boolean own; + private boolean isOwn; }