From d5579f732f4eeafc6f960680b7acccb52a87a22e Mon Sep 17 00:00:00 2001 From: "kornel.danko" Date: Fri, 6 Dec 2024 14:31:48 +0100 Subject: [PATCH 1/3] #726 make jsonb adapters null safe --- .../coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java | 3 +++ .../coffee/tool/jsonb/adapter/DateJsonbAdapter.java | 3 +++ .../coffee/tool/jsonb/adapter/DurationJsonbAdapter.java | 3 +++ .../tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java | 3 +++ 4 files changed, 12 insertions(+) diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java index c72cb852c..d06f2d67f 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java @@ -48,6 +48,9 @@ public String adaptToJson(Class obj) { /** {@inheritDoc} */ @Override public Class adaptFromJson(String obj) { + if (obj == null) { + return null; + } try { return Class.forName(obj); } catch (ClassNotFoundException e) { diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java index bdbbfc86f..37ac01d06 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java @@ -53,6 +53,9 @@ public Long adaptToJson(Date date) { /** {@inheritDoc} */ @Override public Date adaptFromJson(Long date) { + if (date == null) { + return null; + } try { return new Date(date); } catch (Exception e) { diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java index 4256b640d..11c7b2dc8 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java @@ -49,6 +49,9 @@ public String adaptToJson(Duration duration) { /** {@inheritDoc} */ @Override public Duration adaptFromJson(String duration) { + if (duration == null) { + return null; + } return DateXmlUtil.getDatatypeFactory().newDuration(duration); } } diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java index d20dd9f82..117a98a3d 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java @@ -57,6 +57,9 @@ public String adaptToJson(XMLGregorianCalendar calendar) { /** {@inheritDoc} */ @Override public XMLGregorianCalendar adaptFromJson(String calendar) { + if (calendar == null) { + return null; + } try { XMLGregorianCalendar xmlCal = toXMLGregorianCalendar(calendar); return xmlCal.normalize(); From 0164d65b589beae47304966b48e98e3c20f7dcb1 Mon Sep 17 00:00:00 2001 From: "kornel.danko" Date: Fri, 6 Dec 2024 15:38:00 +0100 Subject: [PATCH 2/3] #726 javadoc --- .../tool/jsonb/adapter/ClassTypeJsonbAdapter.java | 10 +++++++--- .../coffee/tool/jsonb/adapter/DateJsonbAdapter.java | 8 +++++++- .../tool/jsonb/adapter/DurationJsonbAdapter.java | 8 +++++++- .../adapter/XMLGregorianCalendarJsonbAdapter.java | 8 +++++++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java index d06f2d67f..156d58e3b 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/ClassTypeJsonbAdapter.java @@ -19,8 +19,6 @@ */ package hu.icellmobilsoft.coffee.tool.jsonb.adapter; -import java.time.YearMonth; - import jakarta.json.bind.JsonbException; import jakarta.json.bind.adapter.JsonbAdapter; @@ -45,7 +43,13 @@ public String adaptToJson(Class obj) { return obj.getName(); } - /** {@inheritDoc} */ + /** + * Converts a {@link String} into a {@link Class} + * + * @param obj + * string to convert or {@code null}. + * @return the converted object or {@code null}, if the given {@code date} param is null + */ @Override public Class adaptFromJson(String obj) { if (obj == null) { diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java index 37ac01d06..8c0ce1f6d 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DateJsonbAdapter.java @@ -50,7 +50,13 @@ public Long adaptToJson(Date date) { return date.getTime(); } - /** {@inheritDoc} */ + /** + * Converts a {@link Long} into a {@link Date} object + * + * @param date + * Long to convert or {@code null}. + * @return the converted object or {@code null}, if the given {@code date} param is null + */ @Override public Date adaptFromJson(Long date) { if (date == null) { diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java index 11c7b2dc8..3e6bc011c 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/DurationJsonbAdapter.java @@ -46,7 +46,13 @@ public String adaptToJson(Duration duration) { return String.valueOf(duration); } - /** {@inheritDoc} */ + /** + * Converts a {@link String} into a {@link Duration} object + * + * @param duration + * string to convert or {@code null}. + * @return the converted object or {@code null}, if the given {@code duration} param is null + */ @Override public Duration adaptFromJson(String duration) { if (duration == null) { diff --git a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java index 117a98a3d..5bfe1f27a 100644 --- a/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java +++ b/coffee-tool/src/main/java/hu/icellmobilsoft/coffee/tool/jsonb/adapter/XMLGregorianCalendarJsonbAdapter.java @@ -54,7 +54,13 @@ public String adaptToJson(XMLGregorianCalendar calendar) { return calendar.toXMLFormat(); } - /** {@inheritDoc} */ + /** + * Converts a {@link String}r into a {@link XMLGregorianCalendar} object + * + * @param calendar + * string to convert or {@code null}. + * @return the converted object or {@code null}, if the given {@code calendar} param is null + */ @Override public XMLGregorianCalendar adaptFromJson(String calendar) { if (calendar == null) { From b9ffc2f70182faa004e38a40fc23decebae99c49 Mon Sep 17 00:00:00 2001 From: "kornel.danko" Date: Mon, 9 Dec 2024 08:58:44 +0100 Subject: [PATCH 3/3] #726 migration notes --- docs/en/migration/migration290to2100.adoc | 8 +++++++- docs/hu/migration/migration290to2100.adoc | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/en/migration/migration290to2100.adoc b/docs/en/migration/migration290to2100.adoc index 2bc8119db..5115d9e97 100644 --- a/docs/en/migration/migration290to2100.adoc +++ b/docs/en/migration/migration290to2100.adoc @@ -12,4 +12,10 @@ Changes are backwards compatible doesnt need any migration. Java11 support has been removed from the ci build process, and the default Java version has been changed to 17. ==== Migration -The minimum supported Java version is 17. \ No newline at end of file +The minimum supported Java version is 17. + +=== coffee-tool +The default custom jsonb adapters have become null safe. + +==== Migration +Changes are backwards compatible doesnt need any migration. diff --git a/docs/hu/migration/migration290to2100.adoc b/docs/hu/migration/migration290to2100.adoc index 5ff601b87..4d02c4f89 100644 --- a/docs/hu/migration/migration290to2100.adoc +++ b/docs/hu/migration/migration290to2100.adoc @@ -12,4 +12,10 @@ A változtatások nem eredményeznek átállási munkálatokat, visszafelé komp A ci build folyamatból el lett távolítva a java11 támogatás, és az alapértelmezett java verzió a 17 lett. ==== Migration -A legkisebb támogatott java verzió a 17-es. \ No newline at end of file +A legkisebb támogatott java verzió a 17-es. + +=== coffee-tool +Az alapértelmezett egyedi jsob adapterek null safe-ek lettek. + +==== Migration +A változtatások nem eredményeznek átállási munkálatokat, visszafelé kompatibilis.