Skip to content

Commit cb48a4d

Browse files
JSONB OSON Adapters (#127)
Signed-off-by: Anders Swanson <anders.swanson@oracle.com>
1 parent 8c9d4c0 commit cb48a4d

File tree

2 files changed

+35
-0
lines changed
  • database/starters/oracle-spring-boot-starter-json-collections/src

2 files changed

+35
-0
lines changed

database/starters/oracle-spring-boot-starter-json-collections/src/main/java/com/oracle/spring/json/jsonb/JSONB.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import java.io.ByteArrayOutputStream;
66
import java.io.IOException;
7+
import java.io.InputStream;
78
import java.nio.ByteBuffer;
89

910
import jakarta.json.stream.JsonGenerator;
@@ -40,4 +41,14 @@ public JsonParser toJsonParser(Object o) {
4041
public <T> T fromOSON(JsonParser parser, Class<T> clazz) {
4142
return jsonb.fromJson(parser, clazz);
4243
}
44+
45+
public <T> T fromOSON(InputStream inputStream, Class<T> clazz) {
46+
JsonParser jsonParser = oracleJsonFactory.createJsonBinaryParser(inputStream).wrap(JsonParser.class);
47+
return jsonb.fromJson(jsonParser, clazz);
48+
}
49+
50+
public <T> T fromOSON(ByteBuffer byteBuffer, Class<T> clazz) {
51+
JsonParser jsonParser = oracleJsonFactory.createJsonBinaryParser(byteBuffer).wrap(JsonParser.class);
52+
return jsonb.fromJson(jsonParser, clazz);
53+
}
4354
}

database/starters/oracle-spring-boot-starter-json-collections/src/test/java/com/oracle/spring/json/jsonb/JSONBTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33
package com.oracle.spring.json.jsonb;
44

5+
import java.io.ByteArrayInputStream;
6+
import java.io.InputStream;
7+
import java.nio.ByteBuffer;
8+
59
import com.oracle.spring.json.test.Student;
610
import com.oracle.spring.json.test.StudentDetails;
711
import jakarta.json.bind.JsonbBuilder;
@@ -35,4 +39,24 @@ void parserToObject() {
3539
assertThat(student).isNotNull();
3640
assertThat(student).isEqualTo(s);
3741
}
42+
43+
@Test
44+
void inputStreamToObject() {
45+
byte[] oson = jsonb.toOSON(s);
46+
InputStream is = new ByteArrayInputStream(oson);
47+
48+
Student student = jsonb.fromOSON(is, Student.class);
49+
assertThat(student).isNotNull();
50+
assertThat(student).isEqualTo(s);
51+
}
52+
53+
@Test
54+
void byteBufferToOjbect() {
55+
byte[] oson = jsonb.toOSON(s);
56+
ByteBuffer buf = ByteBuffer.wrap(oson);
57+
58+
Student student = jsonb.fromOSON(buf, Student.class);
59+
assertThat(student).isNotNull();
60+
assertThat(student).isEqualTo(s);
61+
}
3862
}

0 commit comments

Comments
 (0)