Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One of property creation missed #590

Merged
merged 11 commits into from
Jan 29, 2020
Prev Previous commit
Next Next commit
removed deprecated methods.
  • Loading branch information
HugoMario committed Jan 27, 2020
commit 6c89db9e1dc648d70aca3669a393ac5f7b270611
158 changes: 0 additions & 158 deletions src/main/java/io/swagger/codegen/v3/generators/SchemaHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,164 +153,6 @@ private void addInterfaces(List<Schema> schemas, CodegenModel codegenModel, Map<
}
}

/**
* creates a codegen model object based on a composed schema property.
* @param composedProperty
* @param codegenProperty
*/
@Deprecated
protected void createCodegenModel(ComposedSchema composedProperty, CodegenProperty codegenProperty) {
final List<Schema> oneOf = composedProperty.getOneOf();
final List<Schema> anyOf = composedProperty.getAnyOf();

if (oneOf != null && !oneOf.isEmpty()) {
if (!hasNonObjectSchema(oneOf)) {
final CodegenModel oneOfModel = createFromOneOfSchemas(oneOf);
codegenProperty.vendorExtensions.put("oneOf-model", oneOfModel);
}
}
if (anyOf != null && !anyOf.isEmpty()) {
if (!hasNonObjectSchema(anyOf)) {
final CodegenModel anyOfModel = createFromOneOfSchemas(anyOf);
codegenProperty.vendorExtensions.put("anyOf-model", anyOfModel);
}
}

}

@Deprecated
protected void configureComposedModelFromSchemaItems(CodegenModel codegenModel, ComposedSchema items) {
List<Schema> oneOfList = items.getOneOf();
if (oneOfList != null && !oneOfList.isEmpty()){
String name = "OneOf" + codegenModel.name + "Items";
final CodegenModel oneOfModel = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
this.configureModel(oneOfModel, name);
// setting name to be used as instance type on composed model.
items.addExtension("x-model-name", codegenConfig.toModelName(name));

final List<String> modelNames = new ArrayList<>();
for (Schema interfaceSchema : oneOfList) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
oneOfModel.vendorExtensions.put("x-model-names", modelNames);
if (!modelNames.isEmpty()) {
codegenModel.vendorExtensions.put("oneOf-model", oneOfModel);
}
}
List<Schema> anyOfList = items.getAnyOf();
if (anyOfList != null && !anyOfList.isEmpty()){
String name = "AnyOf" + codegenModel.name + "Items";
final CodegenModel anyOfModel = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
this.configureModel(anyOfModel, name);
items.addExtension("x-model-name", codegenConfig.toModelName(name));

final List<String> modelNames = new ArrayList<>();
for (Schema interfaceSchema : anyOfList) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
anyOfModel.vendorExtensions.put("x-model-names", modelNames);
if (!modelNames.isEmpty()) {
codegenModel.vendorExtensions.put("anyOf-model", anyOfModel);
}
}
}

@Deprecated
public void configureOneOfModel(CodegenModel codegenModel, List<Schema> oneOf) {
final CodegenModel oneOfModel = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
this.configureModel(oneOfModel, "OneOf" + codegenModel.name);

final List<String> modelNames = new ArrayList<>();
for (Schema interfaceSchema : oneOf) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
oneOfModel.vendorExtensions.put("x-model-names", modelNames);
if (!modelNames.isEmpty()) {
codegenModel.vendorExtensions.put("oneOf-model", oneOfModel);
if (codegenModel.interfaceModels == null) {
codegenModel.interfaceModels = new ArrayList<>();
}
codegenModel.interfaceModels.add(oneOfModel);
}
}

@Deprecated
public void configureAnyOfModel(CodegenModel codegenModel, List<Schema> anyOf) {
final CodegenModel anyOfModel = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
this.configureModel(anyOfModel, "AnyOf" + codegenModel.name);
final List<String> modelNames = new ArrayList<>();
for (Schema interfaceSchema : anyOf) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
anyOfModel.vendorExtensions.put("x-model-names", modelNames);
if (!modelNames.isEmpty()) {
codegenModel.vendorExtensions.put("anyOf-model", anyOfModel);
if (codegenModel.interfaceModels == null) {
codegenModel.interfaceModels = new ArrayList<>();
}
codegenModel.interfaceModels.add(anyOfModel);
}
}

@Deprecated
protected void configureOneOfModelFromProperty(CodegenProperty codegenProperty, CodegenModel codegenModel) {
String name = "OneOf" + codegenConfig.toModelName(codegenModel.name);
name += codegenConfig.toModelName(codegenProperty.name);
CodegenModel oneOfModel = (CodegenModel) codegenProperty.vendorExtensions.get("oneOf-model");
this.configureModel(oneOfModel, name);
codegenProperty.vendorExtensions.remove("oneOf-model");

codegenProperty.datatype = name;
codegenProperty.datatypeWithEnum = name;
codegenProperty.baseType = name;
codegenProperty.complexType = name;

codegenModel.vendorExtensions.put("oneOf-model", oneOfModel);
}

@Deprecated
protected void configureAnyOfModelFromProperty(CodegenProperty codegenProperty, CodegenModel codegenModel) {
String name = "AnyOf" + codegenConfig.toModelName(codegenModel.name);
name += codegenConfig.toModelName(codegenProperty.name);
CodegenModel anyOfModel = (CodegenModel) codegenProperty.vendorExtensions.get("anyOf-model");
this.configureModel(anyOfModel, name);
codegenProperty.vendorExtensions.remove("anyOf-model");

codegenProperty.datatype = name;
codegenProperty.datatypeWithEnum = name;
codegenProperty.baseType = name;
codegenProperty.complexType = name;

codegenModel.vendorExtensions.put("anyOf-model", anyOfModel);
}

@Deprecated
protected CodegenModel createFromOneOfSchemas(List<Schema> schemas) {
final CodegenModel codegenModel = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
final List<String> modelNames = new ArrayList<>();

for (Schema interfaceSchema : schemas) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
codegenModel.vendorExtensions.put("x-model-names", modelNames);
return codegenModel;
}

protected void configureModel(CodegenModel codegenModel, String name) {
codegenModel.name = name;
codegenModel.classname = codegenConfig.toModelName(name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,142 +3,18 @@
import io.swagger.codegen.v3.CodegenModel;
import io.swagger.codegen.v3.CodegenModelFactory;
import io.swagger.codegen.v3.CodegenModelType;
import io.swagger.codegen.v3.CodegenProperty;
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
import io.swagger.codegen.v3.generators.SchemaHandler;
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;

public class HtmlSchemaHandler extends SchemaHandler {

public HtmlSchemaHandler(DefaultCodegenConfig codegenConfig) {
super(codegenConfig);
}


@Override
public void createCodegenModel(ComposedSchema composedProperty, CodegenProperty codegenProperty) {
final List<Schema> oneOf = composedProperty.getOneOf();
final List<Schema> anyOf = composedProperty.getAnyOf();

if (oneOf != null && !oneOf.isEmpty()) {
if (!hasNonObjectSchema(oneOf)) {
final CodegenModel oneOfModel = createFromOneOfSchemas(oneOf);
codegenProperty.vendorExtensions.put("oneOf-model", oneOfModel);
}
}
if (anyOf != null && !anyOf.isEmpty()) {
if (!hasNonObjectSchema(anyOf)) {
final CodegenModel anyOfModel = createFromOneOfSchemas(anyOf);
codegenProperty.vendorExtensions.put("anyOf-model", anyOfModel);
}
}

}

@Override
public void configureComposedModelFromSchemaItems(CodegenModel codegenModel, ComposedSchema items) {
List<Schema> oneOfList = items.getOneOf();
if (oneOfList != null && !oneOfList.isEmpty()){
String name = "OneOf" + codegenModel.name + "Items";
final CodegenModel oneOfModel = createComposedModel(name);
// setting name to be used as instance type on composed model.
items.addExtension("x-model-name", codegenConfig.toModelName(name));

final List<String> modelNames = new ArrayList<>();
for (Schema interfaceSchema : oneOfList) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
oneOfModel.vendorExtensions.put("x-model-names", modelNames);
if (!modelNames.isEmpty()) {
codegenModel.vendorExtensions.put("oneOf-model", oneOfModel);
}
}
List<Schema> anyOfList = items.getAnyOf();
if (anyOfList != null && !anyOfList.isEmpty()){
String name = "AnyOf" + codegenModel.name + "Items";
final CodegenModel anyOfModel = createComposedModel(name);
items.addExtension("x-model-name", codegenConfig.toModelName(name));

final List<String> modelNames = new ArrayList<>();
for (Schema interfaceSchema : anyOfList) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
anyOfModel.vendorExtensions.put("x-model-names", modelNames);
if (!modelNames.isEmpty()) {
codegenModel.vendorExtensions.put("anyOf-model", anyOfModel);
}
}
}

@Override
public void configureOneOfModel(CodegenModel codegenModel, List<Schema> oneOf) {
// no ops for html generator
}

@Override
public void configureAnyOfModel(CodegenModel codegenModel, List<Schema> anyOf) {
// no ops for html generator
}

@Override
public void configureOneOfModelFromProperty(CodegenProperty codegenProperty, CodegenModel codegenModel) {
// no ops for html generator
}

@Override
public void configureAnyOfModelFromProperty(CodegenProperty codegenProperty, CodegenModel codegenModel) {
// no ops for html generator
}

@Override
protected CodegenModel createFromOneOfSchemas(List<Schema> schemas) {
final CodegenModel codegenModel = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
final List<String> modelNames = new ArrayList<>();

for (Schema interfaceSchema : schemas) {
if (StringUtils.isNotBlank(interfaceSchema.get$ref())) {
String schemaName = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
modelNames.add(codegenConfig.toModelName(schemaName));
}
}
codegenModel.vendorExtensions.put("x-model-names", modelNames);
return codegenModel;
}

protected CodegenModel createComposedModel(String name) {
final CodegenModel composedModel = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
this.configureModel(composedModel, name);
return composedModel;
}

@Override
protected void configureModel(CodegenModel codegenModel, String name) {
codegenModel.name = name;
codegenModel.classname = codegenConfig.toModelName(name);
codegenModel.classVarName = codegenConfig.toVarName(name);
codegenModel.classFilename = codegenConfig.toModelFilename(name);
codegenModel.vendorExtensions.put("x-is-composed-model", Boolean.TRUE);
}

@Override
protected boolean hasNonObjectSchema(List<Schema> schemas) {
for (Schema schema : schemas) {
if (!codegenConfig.isObjectSchema(schema)) {
return true;
}
}
return false;
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
package io.swagger.codegen.v3.generators.typescript;

import io.swagger.codegen.v3.CodegenConstants;
import io.swagger.codegen.v3.CodegenModel;
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
import io.swagger.codegen.v3.generators.SchemaHandler;
import io.swagger.v3.oas.models.media.Schema;

import java.util.List;

public class TypeScriptSchemaHandler extends SchemaHandler {

Expand All @@ -16,16 +11,4 @@ public TypeScriptSchemaHandler(DefaultCodegenConfig codegenConfig) {
super(codegenConfig);
this.codegenConfig = (AbstractTypeScriptClientCodegen) codegenConfig;
}

@Override
public void configureOneOfModel(CodegenModel codegenModel, List<Schema> oneOf) {
codegenModel.getVendorExtensions().put(CodegenConstants.IS_ALIAS_EXT_NAME, Boolean.TRUE);
this.codegenConfig.addImport(codegenModel, codegenModel.dataType);
}

@Override
public void configureAnyOfModel(CodegenModel codegenModel, List<Schema> anyOf) {
codegenModel.getVendorExtensions().put(CodegenConstants.IS_ALIAS_EXT_NAME, Boolean.TRUE);
this.codegenConfig.addImport(codegenModel, codegenModel.dataType);
}
}