diff --git a/helm/Chart.yaml b/helm/Chart.yaml index 009c0fca..c86414da 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: pagopa-gpd-payments description: Microservice that exposes API for payment receipts retrieving and other operations type: application -version: 0.49.0 -appVersion: 0.12.0-1-fix +version: 0.54.0 +appVersion: 0.12.0-6-PAGOPA-1384-fix-date-format-exception dependencies: - name: microservice-chart version: 2.4.0 diff --git a/helm/values-dev.yaml b/helm/values-dev.yaml index 6ff1b10f..e04dbeae 100644 --- a/helm/values-dev.yaml +++ b/helm/values-dev.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-gpd-payments - tag: "0.12.0-1-fix" + tag: "0.12.0-6-PAGOPA-1384-fix-date-format-exception" pullPolicy: Always livenessProbe: httpGet: diff --git a/helm/values-prod.yaml b/helm/values-prod.yaml index b48cdc6b..5c4b9bd4 100644 --- a/helm/values-prod.yaml +++ b/helm/values-prod.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-gpd-payments - tag: "0.12.0-1-fix" + tag: "0.12.0-6-PAGOPA-1384-fix-date-format-exception" pullPolicy: Always livenessProbe: httpGet: diff --git a/helm/values-uat.yaml b/helm/values-uat.yaml index 01ad3d89..695425bc 100644 --- a/helm/values-uat.yaml +++ b/helm/values-uat.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-gpd-payments - tag: "0.12.0-1-fix" + tag: "0.12.0-6-PAGOPA-1384-fix-date-format-exception" pullPolicy: Always livenessProbe: httpGet: diff --git a/openapi/openapi.json b/openapi/openapi.json index 4ab8f244..bee174c6 100644 --- a/openapi/openapi.json +++ b/openapi/openapi.json @@ -4,7 +4,7 @@ "title": "PagoPA API Payments", "description": "Payments", "termsOfService": "https://www.pagopa.gov.it/", - "version": "0.12.0-1-fix" + "version": "0.12.0-6-PAGOPA-1384-fix-date-format-exception" }, "servers": [ { diff --git a/pom.xml b/pom.xml index 04e7f7a0..d45a4d17 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ it.gov.pagopa payments - 0.12.0-1-fix + 0.12.0-6-PAGOPA-1384-fix-date-format-exception Payments Payments diff --git a/src/main/java/it/gov/pagopa/payments/service/PartnerService.java b/src/main/java/it/gov/pagopa/payments/service/PartnerService.java index acf3650a..f8db6e49 100644 --- a/src/main/java/it/gov/pagopa/payments/service/PartnerService.java +++ b/src/main/java/it/gov/pagopa/payments/service/PartnerService.java @@ -60,7 +60,9 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeConstants; import javax.xml.datatype.DatatypeFactory; +import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -369,13 +371,15 @@ private PaGetPaymentRes generatePaGetPaymentResponse( responseData.setCreditorReferenceId( request.getQrCode().getNoticeNumber().substring(1)); // set IUV from notice number request responseData.setPaymentAmount(BigDecimal.valueOf(source.getAmount())); - responseData.setDueDate( - DatatypeFactory.newInstance().newXMLGregorianCalendar(source.getDueDate().toString())); - responseData.setRetentionDate( - source.getRetentionDate() != null - ? DatatypeFactory.newInstance() - .newXMLGregorianCalendar(source.getRetentionDate().toString()) - : null); + + DatatypeFactory datatypeFactory = DatatypeFactory.newInstance(); + XMLGregorianCalendar dueDateXMLGregorian = datatypeFactory.newXMLGregorianCalendar(CommonUtil.convertToGregorianCalendar(source.getDueDate())); + XMLGregorianCalendar retentionDateXMLGregorian = datatypeFactory.newXMLGregorianCalendar(CommonUtil.convertToGregorianCalendar(source.getRetentionDate())); + //dueDateXMLGregorian.setTimezone(DatatypeConstants.FIELD_UNDEFINED); TODO after update xsd to common:stISODateTime + retentionDateXMLGregorian.setTimezone(DatatypeConstants.FIELD_UNDEFINED); + + responseData.setDueDate(dueDateXMLGregorian); + responseData.setRetentionDate(source.getRetentionDate() != null ? retentionDateXMLGregorian : null); responseData.setLastPayment(false); // de-scoping responseData.setDescription(source.getDescription()); responseData.setCompanyName(Optional.ofNullable(source.getCompanyName()).orElse("NA")); @@ -435,13 +439,15 @@ private PaGetPaymentV2Response generatePaGetPaymentResponse( responseData.setCreditorReferenceId( request.getQrCode().getNoticeNumber().substring(1)); // set IUV from notice number request responseData.setPaymentAmount(BigDecimal.valueOf(source.getAmount())); - responseData.setDueDate( - DatatypeFactory.newInstance().newXMLGregorianCalendar(source.getDueDate().toString())); - responseData.setRetentionDate( - source.getRetentionDate() != null - ? DatatypeFactory.newInstance() - .newXMLGregorianCalendar(source.getRetentionDate().toString()) - : null); + + DatatypeFactory datatypeFactory = DatatypeFactory.newInstance(); + XMLGregorianCalendar dueDateXMLGregorian = datatypeFactory.newXMLGregorianCalendar(CommonUtil.convertToGregorianCalendar(source.getDueDate())); + XMLGregorianCalendar retentionDateXMLGregorian = datatypeFactory.newXMLGregorianCalendar(CommonUtil.convertToGregorianCalendar(source.getRetentionDate())); + //dueDateXMLGregorian.setTimezone(DatatypeConstants.FIELD_UNDEFINED); TODO after update xsd to common:stISODateTime + retentionDateXMLGregorian.setTimezone(DatatypeConstants.FIELD_UNDEFINED); + + responseData.setDueDate(dueDateXMLGregorian); + responseData.setRetentionDate(source.getRetentionDate() != null ? retentionDateXMLGregorian : null); responseData.setLastPayment(false); // de-scoping responseData.setDescription(source.getDescription()); responseData.setCompanyName(Optional.ofNullable(source.getCompanyName()).orElse("NA")); diff --git a/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java b/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java index 6b119ceb..d18273a3 100644 --- a/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java +++ b/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java @@ -16,7 +16,9 @@ import java.security.InvalidKeyException; import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeConstants; import javax.xml.datatype.DatatypeFactory; +import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamException; @@ -306,7 +308,9 @@ void paGetPaymentTest() // Test post condition assertThat(responseBody.getData().getCreditorReferenceId()).isEqualTo("11111111112222222"); assertThat(responseBody.getData().getDescription()).isEqualTo("string"); - assertThat(responseBody.getData().getDueDate()) + XMLGregorianCalendar dueDate = responseBody.getData().getDueDate(); + dueDate.setTimezone(DatatypeConstants.FIELD_UNDEFINED); + assertThat(dueDate) .isEqualTo( DatatypeFactory.newInstance().newXMLGregorianCalendar("2122-02-24T17:03:59.408")); assertThat(responseBody.getData().getRetentionDate()) @@ -354,7 +358,9 @@ void paGetPaymentIncompleteAddressTest() assertThat(responseBody.getData().getCreditorReferenceId()).isEqualTo("11111111112222222"); assertThat(responseBody.getData().getDescription()) .isEqualTo("Canone Unico Patrimoniale - CORPORATE"); - assertThat(responseBody.getData().getDueDate()) + XMLGregorianCalendar dueDate = responseBody.getData().getDueDate(); + dueDate.setTimezone(DatatypeConstants.FIELD_UNDEFINED); + assertThat(dueDate) .isEqualTo( DatatypeFactory.newInstance().newXMLGregorianCalendar("2125-04-20T12:15:38.927")); assertThat(responseBody.getData().getRetentionDate()) @@ -806,7 +812,9 @@ void paGetPaymentV2Test() // Test post condition assertThat(responseBody.getData().getCreditorReferenceId()).isEqualTo("11111111112222222"); assertThat(responseBody.getData().getDescription()).isEqualTo("string"); - assertThat(responseBody.getData().getDueDate()) + XMLGregorianCalendar dueDate = responseBody.getData().getDueDate(); + dueDate.setTimezone(DatatypeConstants.FIELD_UNDEFINED); + assertThat(dueDate) .isEqualTo( DatatypeFactory.newInstance().newXMLGregorianCalendar("2122-02-24T17:03:59.408")); assertThat(responseBody.getData().getRetentionDate()) @@ -864,12 +872,14 @@ void paGetPaymentIncompleteAddressV2Test() // Test execution PaGetPaymentV2Response responseBody = pService.paGetPaymentV2(requestBody); - + System.out.println(responseBody.getData().getDueDate()); // Test post condition assertThat(responseBody.getData().getCreditorReferenceId()).isEqualTo("11111111112222222"); assertThat(responseBody.getData().getDescription()) .isEqualTo("Canone Unico Patrimoniale - CORPORATE"); - assertThat(responseBody.getData().getDueDate()) + XMLGregorianCalendar dueDate = responseBody.getData().getDueDate(); + dueDate.setTimezone(DatatypeConstants.FIELD_UNDEFINED); + assertThat(dueDate) .isEqualTo( DatatypeFactory.newInstance().newXMLGregorianCalendar("2125-04-20T12:15:38.927")); assertThat(responseBody.getData().getRetentionDate())