From 56f301632ec7b76fca929f772ce3d9073a3db160 Mon Sep 17 00:00:00 2001 From: devhl-labs Date: Tue, 28 May 2024 04:41:30 -0400 Subject: [PATCH] removed warnings (#18775) --- .../languages/AbstractCSharpCodegen.java | 64 ++++++++++--------- .../languages/CSharpClientCodegen.java | 39 +---------- .../generichost/modelGeneric.mustache | 4 +- 3 files changed, 37 insertions(+), 70 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index ddb24d37bf..595d919150 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -22,7 +22,6 @@ import com.samskivert.mustache.Mustache.Lambda; import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Template; -import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; @@ -47,7 +46,7 @@ import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETT import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; -public abstract class AbstractCSharpCodegen extends DefaultCodegen implements CodegenConfig { +public abstract class AbstractCSharpCodegen extends DefaultCodegen { protected boolean optionalAssemblyInfoFlag = true; protected boolean optionalEmitDefaultValuesFlag = false; @@ -108,7 +107,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co protected Set propertySpecialKeywords = new HashSet<>(Arrays.asList("ToString", "ToJson", "GetHashCode", "Equals", "ShouldSerializeToString")); // A cache to efficiently lookup schema `toModelName()` based on the schema Key - private Map schemaKeyToModelNameCache = new HashMap<>(); + private final Map schemaKeyToModelNameCache = new HashMap<>(); public AbstractCSharpCodegen() { super(); @@ -464,7 +463,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co .put("uniqueLines", new UniqueLambda("\n", false)) .put("unique", new UniqueLambda("\n", true)) .put("camel_case", new CamelCaseLambda()) - .put("escape_reserved_word", new EscapeKeywordLambda((val) -> this.escapeKeyword(val))); + .put("escape_reserved_word", new EscapeKeywordLambda(this::escapeKeyword)); } @Override @@ -476,14 +475,14 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co property.dataType = property.datatypeWithEnum; } - if (property.isEnum && !property.vendorExtensions.containsKey(this.zeroBasedEnumVendorExtension)) { + if (property.isEnum && !property.vendorExtensions.containsKey(AbstractCSharpCodegen.zeroBasedEnumVendorExtension)) { if (Boolean.TRUE.equals(this.zeroBasedEnums)) { - property.vendorExtensions.put(this.zeroBasedEnumVendorExtension, true); + property.vendorExtensions.put(AbstractCSharpCodegen.zeroBasedEnumVendorExtension, true); } else if (!Boolean.FALSE.equals(this.zeroBasedEnums)) { if (property.allowableValues.containsKey("values")) { - final List allowableValues = (List) property.allowableValues.get("values"); + final List allowableValues = (List) property.allowableValues.get("values"); boolean isZeroBased = String.valueOf(allowableValues.get(0)).toLowerCase(Locale.ROOT).equals("unknown"); - property.vendorExtensions.put(this.zeroBasedEnumVendorExtension, isZeroBased); + property.vendorExtensions.put(AbstractCSharpCodegen.zeroBasedEnumVendorExtension, isZeroBased); } } } @@ -531,14 +530,14 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } } - if (cm.isEnum && !cm.vendorExtensions.containsKey(this.zeroBasedEnumVendorExtension)) { + if (cm.isEnum && !cm.vendorExtensions.containsKey(AbstractCSharpCodegen.zeroBasedEnumVendorExtension)) { if (Boolean.TRUE.equals(this.zeroBasedEnums)) { - cm.vendorExtensions.put(this.zeroBasedEnumVendorExtension, true); + cm.vendorExtensions.put(AbstractCSharpCodegen.zeroBasedEnumVendorExtension, true); } else if (!Boolean.FALSE.equals(this.zeroBasedEnums)) { if (cm.allowableValues.containsKey("values")) { - final List allowableValues = (List) cm.allowableValues.get("values"); + final List allowableValues = (List) cm.allowableValues.get("values"); boolean isZeroBased = String.valueOf(allowableValues.get(0)).toLowerCase(Locale.ROOT).equals("unknown"); - cm.vendorExtensions.put(this.zeroBasedEnumVendorExtension, isZeroBased); + cm.vendorExtensions.put(AbstractCSharpCodegen.zeroBasedEnumVendorExtension, isZeroBased); } } } @@ -560,6 +559,9 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co Map enumRefs = new HashMap<>(); for (Map.Entry entry : processed.entrySet()) { CodegenModel model = ModelUtils.getModelByName(entry.getKey(), processed); + if (model == null) { + continue; + } // if we don't call setHasDiscriminatorWithNonEmptyMapping then hasDiscriminatorWithNonEmptyMapping will be false, and we need it in the JsonConverter // the checks on oneOf and anyOf must be there or else hasDiscriminatorWithNonEmptyMapping will be true for GrandparentAnimal. @@ -578,7 +580,11 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co for (Map.Entry entry : objs.entrySet()) { CodegenModel model = ModelUtils.getModelByName(entry.getKey(), objs); - model.vendorExtensions.put("x-model-is-mutatable", modelIsMutatable(model, null)); + if (model == null) { + continue; + } + + model.vendorExtensions.put("x-model-is-mutable", modelIsMutable(model, null)); CodegenComposedSchemas composedSchemas = model.getComposedSchemas(); if (composedSchemas != null) { @@ -648,19 +654,17 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co * can instantiate the object. If false, then the model is only ever given * to us by the server, so we do not need a public constructor */ - private boolean modelIsMutatable(CodegenModel model, Set processed) { + private boolean modelIsMutable(CodegenModel model, Set processed) { if (processed == null) { processed = new HashSet(); } - Boolean isMutatable = model.allVars.stream().anyMatch(v -> !v.isReadOnly); - if (!isMutatable && !processed.contains(model.classname) && model.getDiscriminator() != null && model.getDiscriminator().getMappedModels() != null) { + boolean isMutable = model.allVars.stream().anyMatch(v -> !v.isReadOnly); + if (!isMutable && !processed.contains(model.classname) && model.getDiscriminator() != null && model.getDiscriminator().getMappedModels() != null) { processed.add(model.classname); - for (CodegenDiscriminator.MappedModel mappedModel : model.getDiscriminator().getMappedModels()) { - isMutatable = modelIsMutatable(model, processed); - } + isMutable = modelIsMutable(model, processed); } - return isMutatable; + return isMutable; } protected void removePropertiesDeclaredInComposedTypes(Map objs, CodegenModel model, List composedProperties) { @@ -677,7 +681,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } private void patchPropertyVendorExtensions(CodegenProperty property) { - Boolean isValueType = isValueType(property); + boolean isValueType = isValueType(property); property.vendorExtensions.put("x-is-value-type", isValueType); property.vendorExtensions.put("x-is-reference-type", !isValueType); property.vendorExtensions.put("x-is-nullable-type", this.getNullableReferencesTypes() || isValueType); @@ -736,7 +740,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co String[] numericTypes = {"double", "double?", "decimal", "decimal", "float", "float?", "int", "int?", "long", "long?", "ulong", "ulong?"}; enumVars.forEach((enumVar) -> { - enumVar.put("isNumeric", Arrays.stream(numericTypes).anyMatch(dataType::equals)); + enumVar.put("isNumeric", Arrays.asList(numericTypes).contains(dataType)); }); return enumVars; @@ -823,7 +827,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co case "0": postProcessResponseCode(response, "Default", httpStatusesWithReturn); response.vendorExtensions.put("x-http-status-is-default", true); - if (operation.responses.stream().count() == 1) { + if ((long) operation.responses.size() == 1) { response.vendorExtensions.put("x-only-default", true); } break; @@ -1031,7 +1035,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } } else { operation.returnContainer = operation.returnType; - operation.isMap = this.mapTypes.stream().anyMatch(t -> typeMapping.startsWith(t)); + operation.isMap = this.mapTypes.stream().anyMatch(typeMapping::startsWith); } } @@ -1438,7 +1442,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co // This supports arrays of arrays. String arrayType = typeMapping.get("array"); StringBuilder instantiationType = new StringBuilder(arrayType); - Schema items = ModelUtils.getSchemaItems(arr); + Schema items = ModelUtils.getSchemaItems(arr); String nestedType = getTypeDeclaration(items); // TODO: We may want to differentiate here between generics and primitive arrays. instantiationType.append("<").append(nestedType).append(">"); @@ -1459,7 +1463,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co return getArrayTypeDeclaration(p); } else if (ModelUtils.isMapSchema(p)) { // Should we also support maps of maps? - Schema inner = ModelUtils.getAdditionalProperties(p); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } return super.getTypeDeclaration(p); @@ -1720,8 +1724,6 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co private String adjustNamingStyle(String name) { switch (getEnumPropertyNaming()) { - case original: - return name; case camelCase: // NOTE: Removes hyphens and underscores return camelize(name, LOWERCASE_FIRST_LETTER); @@ -1790,7 +1792,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co boolean hasAllowableValues = p.allowableValues != null && !p.allowableValues.isEmpty(); if (hasAllowableValues) { //support examples for inline enums - final List values = (List) p.allowableValues.get("values"); + final List values = (List) p.allowableValues.get("values"); example = String.valueOf(values.get(0)); } else if (p.defaultValue == null) { example = p.example; @@ -1967,7 +1969,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co ? 1 : 0; - Map optionsMap = new HashMap(); + Map optionsMap = new HashMap(); optionsMap.put('i', "IgnoreCase"); optionsMap.put('m', "Multiline"); optionsMap.put('s', "SingleLine"); @@ -1987,7 +1989,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } } - String regex = pattern.substring(start, end).replace("'", "\'").replace("\"", "\"\""); + String regex = pattern.substring(start, end).replace("\"", "\"\""); vendorExtensions.put("x-regex", regex); vendorExtensions.put("x-modifiers", modifiers); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java index b0183cc8a8..f634fa4a45 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java @@ -18,12 +18,9 @@ package org.openapitools.codegen.languages; import com.google.common.collect.ImmutableMap; import com.samskivert.mustache.Mustache; -import io.swagger.v3.oas.models.media.ArraySchema; -import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.servers.Server; -import org.mozilla.javascript.optimizer.Codegen; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; @@ -408,7 +405,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { Map allDefinitions = ModelUtils.getSchemas(this.openAPI); CodegenModel codegenModel = super.fromModel(name, model); if (allDefinitions != null && codegenModel != null && codegenModel.parent != null) { - final Schema parentModel = allDefinitions.get(toModelName(codegenModel.parent)); + final Schema parentModel = allDefinitions.get(toModelName(codegenModel.parent)); if (parentModel != null) { final CodegenModel parentCodegenModel = super.fromModel(codegenModel.parent, parentModel); if (codegenModel.hasEnums) { @@ -426,13 +423,11 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { } } - CodegenProperty last = null; for (final CodegenProperty property : parentCodegenModel.vars) { // helper list of parentVars simplifies templating if (!propertyHash.containsKey(property.name)) { final CodegenProperty parentVar = property.clone(); parentVar.isInherited = true; - last = parentVar; LOGGER.debug("adding parent variable {}", property.name); codegenModel.parentVars.add(parentVar); } @@ -1067,12 +1062,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { this.packageGuid = packageGuid; } - // TODO: this does the same as super - @Override - public void setPackageName(String packageName) { - this.packageName = packageName; - } - /** * Sets the api name. This value must be a valid class name. * @@ -1085,12 +1074,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { this.apiName = apiName; } - // TODO: this does the same as super - @Override - public void setPackageVersion(String packageVersion) { - this.packageVersion = packageVersion; - } - public void setSupportsAsync(Boolean supportsAsync) { this.supportsAsync = supportsAsync; } @@ -1323,8 +1306,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { @SuppressWarnings("Duplicates") private static abstract class FrameworkStrategy { - private final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class); - static FrameworkStrategy NETSTANDARD_1_3 = new FrameworkStrategy("netstandard1.3", ".NET Standard 1.3", "net7.0") { }; static FrameworkStrategy NETSTANDARD_1_4 = new FrameworkStrategy("netstandard1.4", ".NET Standard 1.4", "net7.0") { @@ -1365,22 +1346,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { this.isNetStandard = isNetStandard; } - protected void configureAdditionalProperties(final Map properties) { - properties.putIfAbsent(CodegenConstants.DOTNET_FRAMEWORK, this.name); - - // not intended to be user-settable - properties.put(TARGET_FRAMEWORK_IDENTIFIER, this.getTargetFrameworkIdentifier()); - properties.put(TARGET_FRAMEWORK_VERSION, this.getTargetFrameworkVersion()); - properties.putIfAbsent(MCS_NET_VERSION_KEY, "4.6-api"); - - properties.put(NET_STANDARD, this.isNetStandard); - if (properties.containsKey(SUPPORTS_UWP)) { - LOGGER.warn(".NET {} generator does not support the UWP option. Use the csharp generator instead.", - this.name); - properties.remove(SUPPORTS_UWP); - } - } - protected String getNugetFrameworkIdentifier() { return this.name.toLowerCase(Locale.ROOT); } @@ -1496,7 +1461,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { @Override public String toInstantiationType(Schema schema) { if (ModelUtils.isMapSchema(schema)) { - Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); + Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); String inner = getSchemaType(additionalProperties); if (ModelUtils.isMapSchema(additionalProperties)) { inner = toInstantiationType(additionalProperties); diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache index 556d6f0e9d..ad8214873f 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache @@ -17,7 +17,7 @@ /// {{description}}{{^description}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/description}}{{#defaultValue}} (default to {{.}}){{/defaultValue}} {{/isDiscriminator}} {{/allVars}} - {{#model.vendorExtensions.x-model-is-mutatable}}{{>visibility}}{{/model.vendorExtensions.x-model-is-mutatable}}{{^model.vendorExtensions.x-model-is-mutatable}}internal{{/model.vendorExtensions.x-model-is-mutatable}} {{classname}}({{#lambda.joinWithComma}}{{{dataType}}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{#model.composedSchemas.anyOf}}{{^required}}Option<{{/required}}{{{dataType}}}{{>NullConditionalProperty}}{{^required}}>{{/required}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{baseType}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{/model.composedSchemas.anyOf}}{{>ModelSignature}}{{/lambda.joinWithComma}}){{#parent}} : base({{#lambda.joinWithComma}}{{#parentModel.composedSchemas.oneOf}}{{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{parent}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}}.{{#lambda.titlecase}}{{baseType}}{{/lambda.titlecase}} {{/parentModel.composedSchemas.oneOf}}{{>ModelBaseSignature}}{{/lambda.joinWithComma}}){{/parent}} + {{#model.vendorExtensions.x-model-is-mutable}}{{>visibility}}{{/model.vendorExtensions.x-model-is-mutable}}{{^model.vendorExtensions.x-model-is-mutable}}internal{{/model.vendorExtensions.x-model-is-mutable}} {{classname}}({{#lambda.joinWithComma}}{{{dataType}}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{#model.composedSchemas.anyOf}}{{^required}}Option<{{/required}}{{{dataType}}}{{>NullConditionalProperty}}{{^required}}>{{/required}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{baseType}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{/model.composedSchemas.anyOf}}{{>ModelSignature}}{{/lambda.joinWithComma}}){{#parent}} : base({{#lambda.joinWithComma}}{{#parentModel.composedSchemas.oneOf}}{{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{parent}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}}.{{#lambda.titlecase}}{{baseType}}{{/lambda.titlecase}} {{/parentModel.composedSchemas.oneOf}}{{>ModelBaseSignature}}{{/lambda.joinWithComma}}){{/parent}} { {{#composedSchemas.anyOf}} {{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}{{^required}}Option{{/required}} = {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}}; @@ -55,7 +55,7 @@ {{^composedSchemas.anyOf}} [JsonConstructor] {{/composedSchemas.anyOf}} - {{#model.vendorExtensions.x-model-is-mutatable}}{{>visibility}}{{/model.vendorExtensions.x-model-is-mutatable}}{{^model.vendorExtensions.x-model-is-mutatable}}internal{{/model.vendorExtensions.x-model-is-mutatable}} {{classname}}({{#lambda.joinWithComma}}{{#composedSchemas.anyOf}}{{^required}}Option<{{/required}}{{{baseType}}}{{>NullConditionalProperty}}{{^required}}>{{/required}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{/composedSchemas.anyOf}}{{>ModelSignature}}{{/lambda.joinWithComma}}){{#parent}} : base({{#lambda.joinWithComma}}{{>ModelBaseSignature}}{{/lambda.joinWithComma}}){{/parent}} + {{#model.vendorExtensions.x-model-is-mutable}}{{>visibility}}{{/model.vendorExtensions.x-model-is-mutable}}{{^model.vendorExtensions.x-model-is-mutable}}internal{{/model.vendorExtensions.x-model-is-mutable}} {{classname}}({{#lambda.joinWithComma}}{{#composedSchemas.anyOf}}{{^required}}Option<{{/required}}{{{baseType}}}{{>NullConditionalProperty}}{{^required}}>{{/required}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{/composedSchemas.anyOf}}{{>ModelSignature}}{{/lambda.joinWithComma}}){{#parent}} : base({{#lambda.joinWithComma}}{{>ModelBaseSignature}}{{/lambda.joinWithComma}}){{/parent}} { {{#composedSchemas.anyOf}} {{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}{{^required}}Option{{/required}} = {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}};