forked from loafle/openapi-generator-original
* [PHP][php-nextgen] List all possible return types (fix #17113) * Switch to LinkedHashSet
This commit is contained in:
parent
6180fea305
commit
806b99e43a
@ -34,11 +34,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
public class PhpNextgenClientCodegen extends AbstractPhpCodegen {
|
||||
@SuppressWarnings("hiding")
|
||||
@ -189,16 +185,31 @@ public class PhpNextgenClientCodegen extends AbstractPhpCodegen {
|
||||
objs = super.postProcessOperationsWithModels(objs, allModels);
|
||||
OperationMap operations = objs.getOperations();
|
||||
for (CodegenOperation operation : operations.getOperation()) {
|
||||
if (operation.returnType == null) {
|
||||
operation.vendorExtensions.putIfAbsent("x-php-return-type", "void");
|
||||
} else {
|
||||
if (operation.returnProperty.isContainer) { // array or map
|
||||
operation.vendorExtensions.putIfAbsent("x-php-return-type", "array");
|
||||
} else {
|
||||
operation.vendorExtensions.putIfAbsent("x-php-return-type", operation.returnType);
|
||||
Set<String> phpReturnTypeOptions = new LinkedHashSet<>();
|
||||
Set<String> docReturnTypeOptions = new LinkedHashSet<>();
|
||||
|
||||
for (CodegenResponse response : operation.responses) {
|
||||
if (response.dataType != null) {
|
||||
String returnType = response.dataType;
|
||||
if (response.isArray || response.isMap) {
|
||||
// PHP does not understand array type hinting so we strip it
|
||||
// The phpdoc will still contain the array type hinting
|
||||
returnType = "array";
|
||||
}
|
||||
|
||||
phpReturnTypeOptions.add(returnType);
|
||||
docReturnTypeOptions.add(response.dataType);
|
||||
}
|
||||
}
|
||||
|
||||
if (phpReturnTypeOptions.isEmpty()) {
|
||||
operation.vendorExtensions.putIfAbsent("x-php-return-type", "void");
|
||||
operation.vendorExtensions.putIfAbsent("x-php-doc-return-type", "void");
|
||||
} else {
|
||||
operation.vendorExtensions.putIfAbsent("x-php-return-type", String.join("|", phpReturnTypeOptions));
|
||||
operation.vendorExtensions.putIfAbsent("x-php-doc-return-type", String.join("|", docReturnTypeOptions));
|
||||
}
|
||||
|
||||
for (CodegenParameter param : operation.allParams) {
|
||||
if (param.isArray || param.isMap) {
|
||||
param.vendorExtensions.putIfAbsent("x-php-param-type", "array");
|
||||
|
@ -164,7 +164,7 @@ use {{invokerPackage}}\ObjectSerializer;
|
||||
*
|
||||
* @throws ApiException on non-2xx response or if the response body is not in the expected format
|
||||
* @throws InvalidArgumentException
|
||||
* @return {{#returnType}}{{#responses}}{{#dataType}}{{^-first}}|{{/-first}}{{/dataType}}{{{dataType}}}{{/responses}}{{/returnType}}{{^returnType}}void{{/returnType}}
|
||||
* @return {{{vendorExtensions.x-php-doc-return-type}}}
|
||||
{{#isDeprecated}}
|
||||
* @deprecated
|
||||
{{/isDeprecated}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user