Skip to content

Commit 3a2c7fc

Browse files
committed
Merge https://github.com/OpenAPITools/openapi-generator into fix-cpp-qt-enum-asjsonobject
2 parents beb4118 + 0bfce24 commit 3a2c7fc

427 files changed

Lines changed: 10578 additions & 4524 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/samples-kotlin-client.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ jobs:
6565
- samples/client/echo_api/kotlin-jvm-spring-3-restclient
6666
- samples/client/petstore/kotlin-name-parameter-mappings
6767
- samples/client/others/kotlin-jvm-okhttp-parameter-tests
68+
- samples/client/others/kotlin-jvm-okhttp-path-comments
6869
steps:
6970
- uses: actions/checkout@v4
7071
- uses: actions/setup-java@v4
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
generatorName: avro-schema
2+
outputDir: samples/openapi3/schema/petstore/avro-schema-issue6268
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/issue6268.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/avro-schema
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
generatorName: kotlin
2+
outputDir: samples/client/others/kotlin-jvm-okhttp-path-comments
3+
library: jvm-okhttp4
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/kotlin/issue20618-path-comments.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/kotlin-client
6+
additionalProperties:
7+
artifactId: kotlin-petstore-okhttp4-path-comments
8+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
generatorName: rust
2+
outputDir: samples/client/petstore/rust/hyper/test-duplicates
3+
library: hyper
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust/test_duplicates.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/rust
6+
additionalProperties:
7+
supportAsync: "false"
8+
packageName: test-duplicates-hyper
9+
modelNameMappings:
10+
Duplicatetest: another_test
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
generatorName: rust
2+
outputDir: samples/client/petstore/rust/reqwest/test-duplicates
3+
library: reqwest
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust/test_duplicates.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/rust
6+
additionalProperties:
7+
supportAsync: false
8+
packageName: test-duplicates-reqwest
9+
enumNameMappings:
10+
delivered: shipped
11+
modelNameMappings:
12+
Duplicatetest: another_test

modules/openapi-generator/pom.xml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,43 @@
145145
<artifactId>maven-release-plugin</artifactId>
146146
<version>${maven-release-plugin.version}</version>
147147
</plugin>
148+
<plugin>
149+
<groupId>org.antlr</groupId>
150+
<artifactId>antlr4-maven-plugin</artifactId>
151+
<version>4.13.2</version>
152+
<executions>
153+
<execution>
154+
<phase>generate-test-sources</phase>
155+
<goals>
156+
<goal>antlr4</goal>
157+
</goals>
158+
</execution>
159+
</executions>
160+
<configuration>
161+
<sourceDirectory>${basedir}/src/test/antlr4</sourceDirectory>
162+
<libDirectory>${basedir}/src/test/antlr4/imports</libDirectory>
163+
<outputDirectory>${project.build.directory}/generated-test-sources/antlr4</outputDirectory>
164+
</configuration>
165+
</plugin>
166+
<plugin>
167+
<groupId>org.codehaus.mojo</groupId>
168+
<artifactId>build-helper-maven-plugin</artifactId>
169+
<version>3.6.0</version>
170+
<executions>
171+
<execution>
172+
<id>add-test-source</id>
173+
<phase>generate-test-sources</phase>
174+
<goals>
175+
<goal>add-test-source</goal>
176+
</goals>
177+
<configuration>
178+
<sources>
179+
<source>${project.build.directory}/generated-test-sources/antlr4</source>
180+
</sources>
181+
</configuration>
182+
</execution>
183+
</executions>
184+
</plugin>
148185
</plugins>
149186
</build>
150187
<profiles>
@@ -464,6 +501,12 @@
464501
<artifactId>snakeyaml</artifactId>
465502
<version>${snakeyaml.version}</version>
466503
</dependency>
504+
<dependency>
505+
<groupId>org.antlr</groupId>
506+
<artifactId>antlr4-runtime</artifactId>
507+
<version>4.13.2</version>
508+
<scope>test</scope>
509+
</dependency>
467510
</dependencies>
468511
<repositories>
469512
<repository>

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ protected String addModelNamePrefixAndSuffix(String name) {
346346

347347
@Override
348348
public String toModelName(String name) {
349+
if (modelNameMapping.containsKey(name)) {
350+
return modelNameMapping.get(name);
351+
}
352+
349353
return sanitizeIdentifier(addModelNamePrefixAndSuffix(name), CasingType.CAMEL_CASE, "model", "model", false);
350354
}
351355

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AvroSchemaCodegen.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.openapitools.codegen.languages;
1818

19+
import io.swagger.v3.oas.models.media.Schema;
1920
import lombok.Getter;
2021
import lombok.Setter;
2122
import org.apache.commons.io.FilenameUtils;
@@ -25,6 +26,7 @@
2526
import org.openapitools.codegen.meta.Stability;
2627
import org.openapitools.codegen.meta.features.*;
2728
import org.openapitools.codegen.model.ModelsMap;
29+
import org.openapitools.codegen.utils.ModelUtils;
2830
import org.slf4j.Logger;
2931
import org.slf4j.LoggerFactory;
3032

@@ -153,6 +155,25 @@ public void processOpts() {
153155
}
154156
}
155157

158+
/**
159+
* Return the default value of the property
160+
*
161+
* @param p OpenAPI property object
162+
* @return string presentation of the default value of the property
163+
*/
164+
@Override
165+
public String toDefaultValue(Schema p) {
166+
if (p.getDefault() == null) {
167+
return null;
168+
}
169+
170+
if (ModelUtils.isDateSchema(p) || ModelUtils.isDateTimeSchema(p) || ModelUtils.isStringSchema(p)) {
171+
return "\"" + p.getDefault().toString() + "\"";
172+
}
173+
174+
return p.getDefault().toString();
175+
}
176+
156177
@Override
157178
public CodegenType getTag() {
158179
return CodegenType.SCHEMA;

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,35 @@
4040
import java.util.stream.Collectors;
4141
import java.util.stream.Stream;
4242

43+
import com.samskivert.mustache.Mustache;
44+
import lombok.Getter;
45+
import lombok.Setter;
46+
import org.apache.commons.lang3.StringUtils;
47+
import org.openapitools.codegen.CliOption;
48+
import org.openapitools.codegen.CodegenConstants;
49+
import org.openapitools.codegen.CodegenModel;
50+
import org.openapitools.codegen.CodegenOperation;
51+
import org.openapitools.codegen.CodegenParameter;
52+
import org.openapitools.codegen.CodegenProperty;
53+
import org.openapitools.codegen.CodegenType;
54+
import org.openapitools.codegen.SupportingFile;
55+
import org.openapitools.codegen.VendorExtension;
56+
import org.openapitools.codegen.meta.features.ClientModificationFeature;
57+
import org.openapitools.codegen.meta.features.DocumentationFeature;
58+
import org.openapitools.codegen.meta.features.GlobalFeature;
59+
import org.openapitools.codegen.meta.features.ParameterFeature;
60+
import org.openapitools.codegen.meta.features.SchemaSupportFeature;
61+
import org.openapitools.codegen.meta.features.SecurityFeature;
62+
import org.openapitools.codegen.meta.features.WireFormatFeature;
63+
import org.openapitools.codegen.model.ModelMap;
64+
import org.openapitools.codegen.model.ModelsMap;
65+
import org.openapitools.codegen.model.OperationMap;
66+
import org.openapitools.codegen.model.OperationsMap;
67+
import org.openapitools.codegen.templating.mustache.ReplaceAllLambda;
68+
import org.openapitools.codegen.utils.ProcessUtils;
69+
import org.slf4j.Logger;
70+
import org.slf4j.LoggerFactory;
71+
4372
import static java.util.Collections.sort;
4473

4574
public class KotlinClientCodegen extends AbstractKotlinCodegen {
@@ -536,6 +565,10 @@ public void processOpts() {
536565
}
537566
writer.write(content);
538567
});
568+
// When a path is added to a Javadoc, if it ends with a `/*` is will cause a compiler error
569+
// as the parser interrupts that as a start of a multiline comment.
570+
// We replace paths like `/v1/foo/*` with `/v1/foo/<*>` to avoid this
571+
additionalProperties.put("sanitizePathComment", new ReplaceAllLambda("\\/\\*", "/<*>"));
539572
}
540573

541574
private void processDateLibrary() {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,10 +417,16 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
417417
op.vendorExtensions.put("x-comment-type", "void");
418418
}
419419
// Create a variable to add typing for return value of interface
420-
if (op.returnType != null) {
420+
if (op.returnType == null) {
421+
op.vendorExtensions.put("x-return-type", "void");
422+
} else if (op.isArray || op.isMap || isApplicationJsonOrApplicationXml(op)
423+
|| !op.returnTypeIsPrimitive // it could make sense to remove it, but it would break retro-compatibility
424+
) {
421425
op.vendorExtensions.put("x-return-type", "array|object|null");
426+
} else if ("binary".equals(op.returnProperty.dataFormat)) {
427+
op.vendorExtensions.put("x-return-type", "mixed");
422428
} else {
423-
op.vendorExtensions.put("x-return-type", "void");
429+
op.vendorExtensions.put("x-return-type", op.returnType);
424430
}
425431

426432
// Add operation's authentication methods to whole interface
@@ -438,6 +444,18 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
438444
return objs;
439445
}
440446

447+
private boolean isApplicationJsonOrApplicationXml(CodegenOperation op) {
448+
if (op.produces != null) {
449+
for(Map<String, String> produce : op.produces) {
450+
String mediaType = produce.get("mediaType");
451+
if (isJsonMimeType(mediaType) || isXmlMimeType(mediaType)) {
452+
return true;
453+
}
454+
}
455+
}
456+
return false;
457+
}
458+
441459
@Override
442460
public ModelsMap postProcessModels(ModelsMap objs) {
443461
objs = super.postProcessModels(objs);

0 commit comments

Comments
 (0)