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())