Skip to content

Commit a60dd57

Browse files
JSONB: Create Default method (#190)
* JSONB: Create Default method Signed-off-by: Anders Swanson <[email protected]>
1 parent def64b1 commit a60dd57

File tree

2 files changed

+30
-8
lines changed
  • database/starters/oracle-spring-boot-starter-json-collections/src

2 files changed

+30
-8
lines changed

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

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
// Copyright (c) 2024, Oracle and/or its affiliates.
1+
// Copyright (c) 2024, 2025, Oracle and/or its affiliates.
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;
56
import java.io.ByteArrayOutputStream;
67
import java.io.IOException;
78
import java.io.InputStream;
89
import java.nio.ByteBuffer;
910

11+
import jakarta.json.bind.JsonbBuilder;
1012
import jakarta.json.stream.JsonGenerator;
1113
import jakarta.json.stream.JsonParser;
1214
import oracle.sql.json.OracleJsonFactory;
@@ -16,6 +18,10 @@ public class JSONB {
1618
private final OracleJsonFactory oracleJsonFactory;
1719
private final YassonJsonb jsonb;
1820

21+
public static JSONB createDefault() {
22+
return new JSONB(new OracleJsonFactory(), (YassonJsonb) JsonbBuilder.create());
23+
}
24+
1925
public JSONB(OracleJsonFactory oracleJsonFactory, YassonJsonb jsonb) {
2026
this.oracleJsonFactory = oracleJsonFactory;
2127
this.jsonb = jsonb;
@@ -38,6 +44,12 @@ public JsonParser toJsonParser(Object o) {
3844
return oracleJsonFactory.createJsonBinaryParser(buf).wrap(JsonParser.class);
3945
}
4046

47+
public <T> T fromOSON(byte[] oson, Class<T> clazz) throws IOException {
48+
try (ByteArrayInputStream inputStream = new ByteArrayInputStream(oson)) {
49+
return fromOSON(inputStream, clazz);
50+
}
51+
}
52+
4153
public <T> T fromOSON(JsonParser parser, Class<T> clazz) {
4254
return jsonb.fromJson(parser, clazz);
4355
}

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

+17-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
// Copyright (c) 2024, Oracle and/or its affiliates.
1+
// Copyright (c) 2024, 2025, Oracle and/or its affiliates.
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

55
import java.io.ByteArrayInputStream;
6+
import java.io.IOException;
67
import java.io.InputStream;
78
import java.nio.ByteBuffer;
89

@@ -18,7 +19,7 @@
1819

1920
public class JSONBTest {
2021

21-
private JSONB jsonb = new JSONB(new OracleJsonFactory(), (YassonJsonb) JsonbBuilder.create());
22+
private JSONB jsonb = JSONB.createDefault();
2223
private Student s = new Student(Student.newId(), "Alice", new StudentDetails(
2324
"Mathematics",
2425
3.77,
@@ -36,8 +37,7 @@ void toOSON() {
3637
void parserToObject() {
3738
JsonParser parser = jsonb.toJsonParser(s);
3839
Student student = jsonb.fromOSON(parser, Student.class);
39-
assertThat(student).isNotNull();
40-
assertThat(student).isEqualTo(s);
40+
validateStudent(student);
4141
}
4242

4343
@Test
@@ -46,16 +46,26 @@ void inputStreamToObject() {
4646
InputStream is = new ByteArrayInputStream(oson);
4747

4848
Student student = jsonb.fromOSON(is, Student.class);
49-
assertThat(student).isNotNull();
50-
assertThat(student).isEqualTo(s);
49+
validateStudent(student);
5150
}
5251

5352
@Test
54-
void byteBufferToOjbect() {
53+
void byteBufferToObject() {
5554
byte[] oson = jsonb.toOSON(s);
5655
ByteBuffer buf = ByteBuffer.wrap(oson);
5756

5857
Student student = jsonb.fromOSON(buf, Student.class);
58+
validateStudent(student);
59+
}
60+
61+
@Test
62+
void byteArrayToObject() throws IOException {
63+
byte[] oson = jsonb.toOSON(s);
64+
Student student = jsonb.fromOSON(oson, Student.class);
65+
validateStudent(student);
66+
}
67+
68+
void validateStudent(Student student) {
5969
assertThat(student).isNotNull();
6070
assertThat(student).isEqualTo(s);
6171
}

0 commit comments

Comments
 (0)