Skip to content

Commit a4d6c68

Browse files
committed
Wrap the generator to avoid refs in the generated schema
1 parent ee19313 commit a4d6c68

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneJsonSchemaGenerator.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package io.crossplane.compositefunctions.starter.registration;
22

33
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import com.fasterxml.jackson.databind.JavaType;
45
import com.fasterxml.jackson.databind.ObjectMapper;
56
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
67
import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema;
78
import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchemaGenerator;
9+
import com.fasterxml.jackson.module.jsonSchema.jakarta.factories.SchemaFactoryWrapper;
10+
import com.fasterxml.jackson.module.jsonSchema.jakarta.factories.VisitorContext;
811
import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ArraySchema;
912
import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.versions.schema.OpenAPIV3Schema;
1013
import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps;
@@ -29,7 +32,17 @@ public static OpenAPIV3Schema getOpenAPIV3Schema(Class clazz, Class mixin) {
2932
//Add mixin class to ignore id field as OpenShift does not support it.
3033
mapper.addMixIn(clazz, mixin);
3134
// apper.addMixIn(ObjectMeta.class, MetadataIgnorer.class);
32-
JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper);
35+
36+
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
37+
visitor.setVisitorContext(new VisitorContext(){
38+
@Override
39+
public String addSeenSchemaUri(JavaType aSeenSchema) {
40+
return javaTypeToUrn(aSeenSchema);
41+
}
42+
});
43+
44+
45+
JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper, visitor);
3346
JsonSchema jsonSchema = generator.generateSchema(clazz);
3447

3548
removeIdField(jsonSchema);

0 commit comments

Comments
 (0)