Skip to content

Commit 951aa7a

Browse files
authored
add getActualInstanceRecursively (#6636)
1 parent b729e1d commit 951aa7a

File tree

4 files changed

+76
-2
lines changed

4 files changed

+76
-2
lines changed

modules/openapi-generator/src/main/resources/Java/libraries/jersey2/AbstractOpenApiSchema.mustache

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,25 @@ public abstract class AbstractOpenApiSchema {
5252
*/
5353
public void setActualInstance(Object instance) {this.instance = instance;}
5454

55+
/**
56+
* Get the instant recursively when the schemas defined in oneOf/anyof happen to be oneOf/anyOf schema as well
57+
*
58+
* @return an instance of the actual schema/object
59+
*/
60+
public Object getActualInstanceRecursively() {
61+
return getActualInstanceRecursively(this);
62+
}
63+
64+
private Object getActualInstanceRecursively(AbstractOpenApiSchema object) {
65+
if (object.getActualInstance() == null) {
66+
return null;
67+
} else if (object.getActualInstance() instanceof AbstractOpenApiSchema) {
68+
return getActualInstanceRecursively((AbstractOpenApiSchema)object.getActualInstance());
69+
} else {
70+
return object.getActualInstance();
71+
}
72+
}
73+
5574
/**
5675
* Get the schema type (e.g. anyOf, oneOf)
5776
*

samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,25 @@ public AbstractOpenApiSchema(String schemaType, Boolean isNullable) {
6363
*/
6464
public void setActualInstance(Object instance) {this.instance = instance;}
6565

66+
/**
67+
* Get the instant recursively when the schemas defined in oneOf/anyof happen to be oneOf/anyOf schema as well
68+
*
69+
* @return an instance of the actual schema/object
70+
*/
71+
public Object getActualInstanceRecursively() {
72+
return getActualInstanceRecursively(this);
73+
}
74+
75+
private Object getActualInstanceRecursively(AbstractOpenApiSchema object) {
76+
if (object.getActualInstance() == null) {
77+
return null;
78+
} else if (object.getActualInstance() instanceof AbstractOpenApiSchema) {
79+
return getActualInstanceRecursively((AbstractOpenApiSchema)object.getActualInstance());
80+
} else {
81+
return object.getActualInstance();
82+
}
83+
}
84+
6685
/**
6786
* Get the schema type (e.g. anyOf, oneOf)
6887
*

samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,25 @@ public AbstractOpenApiSchema(String schemaType, Boolean isNullable) {
6363
*/
6464
public void setActualInstance(Object instance) {this.instance = instance;}
6565

66+
/**
67+
* Get the instant recursively when the schemas defined in oneOf/anyof happen to be oneOf/anyOf schema as well
68+
*
69+
* @return an instance of the actual schema/object
70+
*/
71+
public Object getActualInstanceRecursively() {
72+
return getActualInstanceRecursively(this);
73+
}
74+
75+
private Object getActualInstanceRecursively(AbstractOpenApiSchema object) {
76+
if (object.getActualInstance() == null) {
77+
return null;
78+
} else if (object.getActualInstance() instanceof AbstractOpenApiSchema) {
79+
return getActualInstanceRecursively((AbstractOpenApiSchema)object.getActualInstance());
80+
} else {
81+
return object.getActualInstance();
82+
}
83+
}
84+
6685
/**
6786
* Get the schema type (e.g. anyOf, oneOf)
6887
*

samples/openapi3/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/model/MammalTest.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,29 @@ public void testMammal() throws Exception {
4545
Zebra z = new Zebra();
4646
z.setType(Zebra.TypeEnum.MOUNTAIN);
4747
z.setClassName("zebra");
48-
4948
m.setActualInstance(z);
50-
5149
Assert.assertEquals(JSON.getDefault().getMapper().writeValueAsString(m), "{\"type\":\"mountain\",\"className\":\"zebra\"}");
5250
}
5351

52+
/**
53+
* Model tests for getActualInstanceRecursively
54+
*/
55+
@Test
56+
public void testGetActualInstanceRecursively() throws Exception {
57+
Mammal m = new Mammal();
58+
Pig p = new Pig();
59+
DanishPig dp = new DanishPig();
60+
dp.setClassName("danish_pig");
61+
p.setActualInstance(dp);
62+
m.setActualInstance(p);
63+
Assert.assertTrue(m.getActualInstanceRecursively() instanceof DanishPig);
64+
65+
Pig p2 = new Pig();
66+
m.setActualInstance(p2);
67+
Assert.assertEquals(m.getActualInstanceRecursively(), null);
68+
69+
}
70+
5471
/**
5572
* Test the property 'hasBaleen'
5673
*/

0 commit comments

Comments
 (0)