Skip to content

Commit c35d216

Browse files
authored
Merge pull request #20 from yoshiori/remove_scala_dependency
Change JSON Schema lib
2 parents 57d1d4b + e116763 commit c35d216

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

gradle/libs.versions.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
[versions]
22
jackson = "2.16.1"
33
retrofit = "2.9.0"
4+
victoolsJsonSchema = "4.38.0"
5+
javaxValidation = "2.0.1.Final"
46

57
[libraries]
68
jacksonDatabind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
79
jacksonAnnotations = { module = "com.fasterxml.jackson.core:jackson-annotations", version.ref = "jackson" }
8-
jacksonJsonSchema = { module = "com.kjetland:mbknor-jackson-jsonschema_2.12", version = "1.0.34" }
910
lombok = { module = "org.projectlombok:lombok", version = "1.18.30" }
1011
junitBom = { module = "org.junit:junit-bom", version = "5.8.2" }
1112
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
1213
retrofitJackson = { module = "com.squareup.retrofit2:converter-jackson", version.ref = "retrofit" }
1314
retrofitRxJava2 = { module = "com.squareup.retrofit2:adapter-rxjava2", version.ref = "retrofit" }
1415
retrofitMock = { module = "com.squareup.retrofit2:retrofit-mock", version.ref = "retrofit" }
1516
jtokkit = { module = "com.knuddels:jtokkit", version = "1.1.0" }
17+
victoolsJsonSchemaGenerator = { module = "com.github.victools:jsonschema-generator", version.ref = "victoolsJsonSchema" }
18+
victoolsJsonSchemaJackson = { module = "com.github.victools:jsonschema-module-jackson", version.ref = "victoolsJsonSchema" }
19+
javaxValidationApi = { module = "javax.validation:validation-api", version.ref = "javaxValidation" }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
44
networkTimeout=10000
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

service/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ dependencies {
66
api libs.retrofit
77
implementation libs.retrofitRxJava2
88
implementation libs.retrofitJackson
9-
implementation libs.jacksonJsonSchema
9+
implementation libs.victoolsJsonSchemaGenerator
10+
implementation libs.victoolsJsonSchemaJackson
11+
implementation libs.javaxValidationApi
1012

1113
testImplementation(platform(libs.junitBom))
1214
testImplementation 'org.junit.jupiter:junit-jupiter'

service/src/main/java/com/launchableinc/openai/service/ChatFunctionParametersSerializer.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,22 @@
33
import com.fasterxml.jackson.core.JsonGenerator;
44
import com.fasterxml.jackson.databind.JsonNode;
55
import com.fasterxml.jackson.databind.JsonSerializer;
6-
import com.fasterxml.jackson.databind.ObjectMapper;
76
import com.fasterxml.jackson.databind.SerializerProvider;
8-
import com.kjetland.jackson.jsonSchema.JsonSchemaConfig;
9-
import com.kjetland.jackson.jsonSchema.JsonSchemaGenerator;
7+
import com.github.victools.jsonschema.generator.SchemaGenerator;
8+
import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder;
9+
import com.github.victools.jsonschema.generator.SchemaVersion;
10+
import com.github.victools.jsonschema.module.jackson.JacksonModule;
11+
import com.github.victools.jsonschema.module.jackson.JacksonOption;
1012

1113
import java.io.IOException;
1214

1315
public class ChatFunctionParametersSerializer extends JsonSerializer<Class<?>> {
1416

15-
private final ObjectMapper mapper = new ObjectMapper();
16-
private final JsonSchemaConfig config = JsonSchemaConfig.vanillaJsonSchemaDraft4();
17-
private final JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator(mapper, config);
17+
private final SchemaGenerator schemaGenerator = new SchemaGenerator(
18+
new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_7)
19+
.with(new JacksonModule(JacksonOption.RESPECT_JSONPROPERTY_REQUIRED))
20+
.build()
21+
);
1822

1923
@Override
2024
public void serialize(Class<?> value, JsonGenerator gen, SerializerProvider serializers)
@@ -23,7 +27,7 @@ public void serialize(Class<?> value, JsonGenerator gen, SerializerProvider seri
2327
gen.writeNull();
2428
} else {
2529
try {
26-
JsonNode schema = jsonSchemaGenerator.generateJsonSchema(value);
30+
JsonNode schema = schemaGenerator.generateSchema(value);
2731
gen.writeObject(schema);
2832
} catch (Exception e) {
2933
throw new RuntimeException("Failed to generate JSON Schema", e);

0 commit comments

Comments
 (0)