Skip to content

Commit 50f2aba

Browse files
author
springdoc
committed
fixes #94
1 parent 490b987 commit 50f2aba

File tree

7 files changed

+112
-5
lines changed

7 files changed

+112
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.springdoc.core;
2+
3+
import java.util.Iterator;
4+
5+
import com.fasterxml.jackson.databind.JavaType;
6+
import com.fasterxml.jackson.databind.node.ObjectNode;
7+
8+
import io.swagger.v3.core.converter.AnnotatedType;
9+
import io.swagger.v3.core.converter.ModelConverter;
10+
import io.swagger.v3.core.converter.ModelConverterContext;
11+
import io.swagger.v3.core.util.Json;
12+
import io.swagger.v3.oas.models.media.ObjectSchema;
13+
import io.swagger.v3.oas.models.media.Schema;
14+
15+
public class ObjectNodeConverter implements ModelConverter {
16+
17+
@Override
18+
public Schema resolve(AnnotatedType type, ModelConverterContext context, Iterator<ModelConverter> chain) {
19+
JavaType _type = Json.mapper().constructType(type.getType());
20+
if (_type != null) {
21+
Class<?> cls = _type.getRawClass();
22+
if (ObjectNode.class.isAssignableFrom(cls)) {
23+
return new ObjectSchema();
24+
}
25+
}
26+
if (chain.hasNext()) {
27+
return chain.next().resolve(type, context, chain);
28+
} else {
29+
return null;
30+
}
31+
}
32+
}

springdoc-openapi-common/src/main/java/org/springdoc/core/SpringDocAnnotationsUtils.java

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ private SpringDocAnnotationsUtils() {
2929

3030
static final String COMPONENTS_REF = "#/components/schemas/";
3131

32+
static {
33+
ModelConverters.getInstance().addConverter(new ObjectNodeConverter());
34+
}
35+
3236
public static Schema resolveSchemaFromType(Class<?> schemaImplementation, Components components) {
3337
Schema schemaObject = null;
3438
PrimitiveType primitiveType = PrimitiveType.fromType(schemaImplementation);

springdoc-openapi-core/src/test/java/test/org/springdoc/api/app39/SpringDocTestApp.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package test.org.springdoc.api.app39;
22

3-
import io.swagger.v3.oas.models.Components;
4-
import io.swagger.v3.oas.models.OpenAPI;
5-
import io.swagger.v3.oas.models.media.Schema;
6-
import io.swagger.v3.oas.models.media.StringSchema;
7-
import io.swagger.v3.oas.models.parameters.HeaderParameter;
83
import org.springdoc.api.OpenApiCustomiser;
94
import org.springframework.boot.SpringApplication;
105
import org.springframework.boot.autoconfigure.SpringBootApplication;
116
import org.springframework.context.annotation.Bean;
127

8+
import io.swagger.v3.oas.models.Components;
9+
import io.swagger.v3.oas.models.OpenAPI;
10+
import io.swagger.v3.oas.models.media.StringSchema;
11+
import io.swagger.v3.oas.models.parameters.HeaderParameter;
12+
1313
@SpringBootApplication
1414
public class SpringDocTestApp {
1515

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package test.org.springdoc.api.app40;
2+
3+
import org.springframework.web.bind.annotation.RequestMapping;
4+
import org.springframework.web.bind.annotation.RequestMethod;
5+
import org.springframework.web.bind.annotation.RestController;
6+
7+
import com.fasterxml.jackson.databind.node.ObjectNode;
8+
9+
@RestController("/api")
10+
public class HelloController {
11+
12+
@RequestMapping(value = "/iae_error", method = RequestMethod.GET)
13+
public ObjectNode getStartFormProperties() {
14+
return null;
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package test.org.springdoc.api.app40;
2+
3+
import test.org.springdoc.api.AbstractSpringDocTest;
4+
5+
public class SpringDocApp40Test extends AbstractSpringDocTest {
6+
7+
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package test.org.springdoc.api.app40;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class SpringDocTestApp {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(SpringDocTestApp.class, args);
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"openapi":"3.0.1",
3+
"info":{
4+
"title":"OpenAPI definition",
5+
"version":"v0"
6+
},
7+
"servers":[
8+
{
9+
"url":"http://localhost",
10+
"description":"Generated server url"
11+
}
12+
],
13+
"paths":{
14+
"/iae_error":{
15+
"get":{
16+
"operationId":"getStartFormProperties",
17+
"responses":{
18+
"200":{
19+
"description":"default response",
20+
"content":{
21+
"*/*":{
22+
"schema":{
23+
"type":"object"
24+
}
25+
}
26+
}
27+
}
28+
}
29+
}
30+
}
31+
},
32+
"components":{
33+
34+
}
35+
}

0 commit comments

Comments
 (0)