Fixes issue 5876 (#5977)

* Fixes getParentName function

* Updates getChildrenMap to not throw a NPE

* Updates test

* Runs ensure up to date
This commit is contained in:
Justin Black 2020-04-20 01:00:24 -07:00 committed by GitHub
parent 4818644278
commit 1766279916
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 12 additions and 23 deletions

View File

@ -1104,9 +1104,9 @@ public class ModelUtils {
public static Map<String, List<String>> getChildrenMap(OpenAPI openAPI) {
Map<String, Schema> allSchemas = getSchemas(openAPI);
// FIXME: The collect here will throw NPE if a spec document has only a single oneOf hierarchy.
Map<String, List<Entry<String, Schema>>> groupedByParent = allSchemas.entrySet().stream()
.filter(entry -> isComposedSchema(entry.getValue()))
.filter(entry -> getParentName((ComposedSchema) entry.getValue(), allSchemas)!=null)
.collect(Collectors.groupingBy(entry -> getParentName((ComposedSchema) entry.getValue(), allSchemas)));
return groupedByParent.entrySet().stream()
@ -1165,14 +1165,6 @@ public class ModelUtils {
int nullSchemaChildrenCount = 0;
boolean hasAmbiguousParents = false;
List<String> refedWithoutDiscriminator = new ArrayList<>();
String schemaName = "";
for (String thisSchemaName : allSchemas.keySet()) {
Schema sc = allSchemas.get(thisSchemaName);
if (isComposedSchema(sc) && (ComposedSchema) sc == composedSchema) {
schemaName = thisSchemaName;
break;
}
}
if (interfaces != null && !interfaces.isEmpty()) {
for (Schema schema : interfaces) {
@ -1189,10 +1181,7 @@ public class ModelUtils {
} else {
// not a parent since discriminator.propertyName is not set
hasAmbiguousParents = true;
boolean isNotExtractedInlineSchema = !parentName.equals(schemaName+"_allOf");
if (isNotExtractedInlineSchema) {
refedWithoutDiscriminator.add(parentName);
}
refedWithoutDiscriminator.add(parentName);
}
} else {
// not a ref, doing nothing, except counting the number of times the 'null' type

View File

@ -612,8 +612,8 @@ public class DefaultCodegenTest {
Schema schema = openAPI.getComponents().getSchemas().get("MessageEventCoreWithTimeListEntries");
codegen.setOpenAPI(openAPI);
CodegenModel model = codegen.fromModel("MessageEventCoreWithTimeListEntries", schema);
Assert.assertEquals(model.parent, "MessageEventCore");
Assert.assertEquals(model.allParents, Collections.singletonList("MessageEventCore"));
Assert.assertEquals(model.parent, null);
Assert.assertEquals(model.allParents, null);
}
@Test

View File

@ -3,9 +3,9 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**inter_net** | **bool** | | [optional]
**radio_waves** | **bool** | | [optional]
**tele_vision** | **bool** | | [optional]
**inter_net** | **bool** | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -3,8 +3,8 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**tele_vision** | **bool** | | [optional]
**radio_waves** | **bool** | | [optional]
**tele_vision** | **bool** | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -84,9 +84,9 @@ class Child(ModelComposed):
and the value is attribute type.
"""
return {
'inter_net': (bool,), # noqa: E501
'radio_waves': (bool,), # noqa: E501
'tele_vision': (bool,), # noqa: E501
'inter_net': (bool,), # noqa: E501
}
@staticmethod
@ -94,9 +94,9 @@ class Child(ModelComposed):
return None
attribute_map = {
'inter_net': 'interNet', # noqa: E501
'radio_waves': 'radioWaves', # noqa: E501
'tele_vision': 'teleVision', # noqa: E501
'inter_net': 'interNet', # noqa: E501
}
required_properties = set([
@ -127,9 +127,9 @@ class Child(ModelComposed):
deserializing a file_type parameter.
If passed, type conversion is attempted
If omitted no type conversion is done.
inter_net (bool): [optional] # noqa: E501
radio_waves (bool): [optional] # noqa: E501
tele_vision (bool): [optional] # noqa: E501
inter_net (bool): [optional] # noqa: E501
"""
self._data_store = {}

View File

@ -84,8 +84,8 @@ class Parent(ModelComposed):
and the value is attribute type.
"""
return {
'tele_vision': (bool,), # noqa: E501
'radio_waves': (bool,), # noqa: E501
'tele_vision': (bool,), # noqa: E501
}
@staticmethod
@ -93,8 +93,8 @@ class Parent(ModelComposed):
return None
attribute_map = {
'tele_vision': 'teleVision', # noqa: E501
'radio_waves': 'radioWaves', # noqa: E501
'tele_vision': 'teleVision', # noqa: E501
}
required_properties = set([
@ -125,8 +125,8 @@ class Parent(ModelComposed):
deserializing a file_type parameter.
If passed, type conversion is attempted
If omitted no type conversion is done.
tele_vision (bool): [optional] # noqa: E501
radio_waves (bool): [optional] # noqa: E501
tele_vision (bool): [optional] # noqa: E501
"""
self._data_store = {}