diff --git a/ojdbc-provider-jackson-oson/README.md b/ojdbc-provider-jackson-oson/README.md
index e9d2d4b6..9858d903 100644
--- a/ojdbc-provider-jackson-oson/README.md
+++ b/ojdbc-provider-jackson-oson/README.md
@@ -23,9 +23,13 @@ JDK versions. The coordinates for the latest release are:
com.oracle.database.jdbc
ojdbc-provider-jackson-oson
- 1.0.1
+ 1.0.2
```
+### Note
+The extention uses ojdbc8 as it's dependency. If the application env. has other ojdbc jar
+in the dependency, be sure to exclude the ojdbc8 jar from the extention.
+
## Building the provider module
1. Clone the repository:
```bash
diff --git a/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonGenerator.java b/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonGenerator.java
index 51f62f97..67672337 100644
--- a/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonGenerator.java
+++ b/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonGenerator.java
@@ -58,6 +58,7 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
+import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.*;
import java.util.Arrays;
@@ -538,6 +539,18 @@ public void writeDate(Date value) throws IOException {
}
}
+ public void writeLocalDate(LocalDate value) throws IOException {
+ _verifyValueWrite("write LocalDate");
+ DATE dd = null;
+ try {
+ dd = new DATE(value);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ OracleJsonDate jsonDate = new OracleJsonDateImpl(dd.shareBytes());
+ gen.write(jsonDate);
+ }
+
public void writeTimeStamp(Timestamp value) throws IOException {
_verifyValueWrite("write TimeStamp");
TIMESTAMP timestamp = new TIMESTAMP(value);
diff --git a/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonModule.java b/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonModule.java
index a9787bbc..5fef2f32 100644
--- a/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonModule.java
+++ b/ojdbc-provider-jackson-oson/src/main/java/oracle/jdbc/provider/oson/OsonModule.java
@@ -141,6 +141,9 @@ public OsonModule() {
addDeserializer(UUID.class, OsonUUIDDeserializer.INSTANCE);
addDeserializer(Boolean.class, OsonBooleanDeserializer.INSTANCE);
+ addSerializer(LocalDate.class, OsonLocalDateSerializer.INSTANCE);
+ addDeserializer(LocalDate.class, OsonLocalDateDeserializer.INSTANCE);
+
}
@@ -153,14 +156,12 @@ public void setupModule(SetupContext context) {
public JsonSerializer> modifySerializer(SerializationConfig config, BeanDescription beanDesc, JsonSerializer> serializer) {
Iterator properties = serializer.properties();
while (properties.hasNext()) {
+ boolean serializerAssigned = false;
BeanPropertyWriter writer = (BeanPropertyWriter) properties.next();
- if (Util.implementsSerializable(writer.getType().getInterfaces())
- && !Util.isJavaWrapperSerializable(writer)){
- writer.assignSerializer(OsonSerializableSerializer.INSTANCE);
- }
if (writer.getMember().hasAnnotation(Convert.class)) {
Convert annotation = writer.getMember().getAnnotation(Convert.class);
Class extends jakarta.persistence.AttributeConverter> converterClass = annotation.converter();
+ serializerAssigned = true;
if (writer.getType().isArrayType()) {
JsonSerializer> mySerializer = new OsonConverterArraySerializer(converterClass);
writer.assignSerializer((JsonSerializer