Skip to content

Commit 5287cc6

Browse files
committed
Allo to generate client as abstract.
1 parent 9929e31 commit 5287cc6

File tree

4 files changed

+28
-79
lines changed

4 files changed

+28
-79
lines changed

resources/dev/elastic-openapi-codegen-php/src/main/java/org/elasticsearch/codegen/ElasticClientPhpGenerator.java

Lines changed: 24 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,26 @@
77
import io.swagger.v3.oas.models.parameters.RequestBody;
88

99
import java.util.*;
10-
import java.util.function.Predicate;
11-
import java.util.stream.Collectors;
1210

1311
import org.apache.commons.lang3.StringUtils;
14-
import org.openapitools.codegen.CliOption;
15-
import org.openapitools.codegen.CodegenConfig;
16-
import org.openapitools.codegen.CodegenOperation;
17-
import org.openapitools.codegen.CodegenParameter;
18-
import org.openapitools.codegen.CodegenType;
19-
import org.openapitools.codegen.SupportingFile;
12+
import org.openapitools.codegen.*;
2013
import org.openapitools.codegen.languages.PhpClientCodegen;
2114
import org.openapitools.codegen.utils.ModelUtils;
2215

2316
public class ElasticClientPhpGenerator extends PhpClientCodegen implements CodegenConfig {
2417

25-
public static final String GENERATOR_NAME = "elastic-php-client";
26-
public static final String HELP_URL = "helpUrl";
27-
public static final String COPYRIGHT = "copyright";
18+
public static final String GENERATOR_NAME = "elastic-php-client";
19+
public static final String HELP_URL = "helpUrl";
20+
public static final String COPYRIGHT = "copyright";
21+
public static final String CLIENT_CLASS = "clientClass";
22+
public static final String CLIENT_CLASS_QUALIFIER = "clientClassQualifier";
2823

2924
public ElasticClientPhpGenerator() {
3025
super();
3126

3227
cliOptions.add(new CliOption(HELP_URL, "Help URL"));
3328
cliOptions.add(new CliOption(COPYRIGHT, "Copyright"));
29+
cliOptions.add(new CliOption(CLIENT_CLASS, "Client file"));
3430

3531
this.setTemplateDir(ElasticClientPhpGenerator.GENERATOR_NAME);
3632
this.setSrcBasePath("");
@@ -44,9 +40,17 @@ public ElasticClientPhpGenerator() {
4440
@Override
4541
public void processOpts() {
4642
super.processOpts();
43+
44+
String clientClass = (String) additionalProperties.getOrDefault(CLIENT_CLASS, "Client");
45+
additionalProperties.put(CLIENT_CLASS, clientClass);
46+
47+
if (clientClass.startsWith("Abstract")) {
48+
additionalProperties.put(CLIENT_CLASS_QUALIFIER, "abstract");
49+
}
50+
4751
this.resetTemplateFiles();
4852

49-
supportingFiles.add(new SupportingFile("Client.mustache", "", "Client.php"));
53+
supportingFiles.add(new SupportingFile("Client.mustache", "", clientClass.concat(".php")));
5054
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
5155
}
5256

@@ -67,19 +71,20 @@ public String toApiName(String name) {
6771

6872
@Override
6973
@SuppressWarnings("static-method")
70-
public void addOperationToGroup(String tag, String resourcePath,
71-
Operation operation, CodegenOperation baseCo,
72-
Map<String, List<CodegenOperation>> operations) {
73-
74-
getCodegenOperationAliases(operation, baseCo).forEach(co -> {
74+
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations) {
7575
String uniqueName = co.operationId;
76-
7776
co.operationIdLowerCase = uniqueName.toLowerCase(Locale.ROOT);
7877
co.operationIdCamelCase = org.openapitools.codegen.utils.StringUtils.camelize(uniqueName);
7978
co.operationIdSnakeCase = org.openapitools.codegen.utils.StringUtils.underscore(uniqueName);
8079

80+
if (co.vendorExtensions == null) {
81+
co.vendorExtensions = new HashMap<>();
82+
}
83+
84+
co.vendorExtensions.put("x-operation-scope", co.vendorExtensions.getOrDefault("x-operation-scope", "public"));
85+
co.vendorExtensions.put("x-add-to-documentation", co.vendorExtensions.getOrDefault("x-operation-scope", "public").equals("public"));
86+
8187
operations.put(uniqueName, Arrays.asList(co));
82-
});
8388
}
8489

8590
@Override
@@ -150,44 +155,4 @@ private void resetTemplateFiles() {
150155

151156
apiTemplateFiles.put("api.mustache", ".php");
152157
}
153-
154-
private List<CodegenOperation> getCodegenOperationAliases(Operation operation, CodegenOperation co) {
155-
List<CodegenOperation> operationsAliases = new ArrayList<>();
156-
157-
operationsAliases.add(co);
158-
159-
if (operation.getExtensions() != null && operation.getExtensions().containsKey("x-operation-aliases")) {
160-
Map<String, Map<String, Object>> aliases = (Map<String, Map<String, Object>>) operation.getExtensions().get("x-operation-aliases");
161-
for (Map.Entry<String, Map<String, Object>> alias: aliases.entrySet()) {
162-
CodegenOperation aliasCo = new CodegenOperation();
163-
List<String> validParamNames = (List) alias.getValue().get("params");
164-
Predicate<CodegenParameter> paramFilter = codegenParameter -> validParamNames.contains(codegenParameter.paramName);
165-
Arrays.asList(CodegenOperation.class.getFields()).stream().forEach(f -> {
166-
try {
167-
Object fieldValue = f.get(co);
168-
if (f.getName().endsWith("Params") && fieldValue instanceof List) {
169-
List<CodegenParameter> params = (List<CodegenParameter>) ((List) fieldValue).stream().filter(paramFilter).map(
170-
p -> ReflectionClone.clone(p, new CodegenParameter())
171-
).collect(Collectors.toList());
172-
173-
if (params.isEmpty() == false) {
174-
params.get(params.size() -1).hasMore = false;
175-
}
176-
fieldValue = params;
177-
}
178-
f.set(aliasCo, fieldValue);
179-
} catch (IllegalAccessException e) {
180-
;
181-
}
182-
aliasCo.operationId = alias.getKey();
183-
if (alias.getValue().containsKey("summary")) {
184-
aliasCo.summary = (String) alias.getValue().get("summary");
185-
}
186-
});
187-
operationsAliases.add(aliasCo);
188-
}
189-
}
190-
191-
return operationsAliases;
192-
}
193158
}

resources/dev/elastic-openapi-codegen-php/src/main/java/org/elasticsearch/codegen/ReflectionClone.java

Lines changed: 0 additions & 16 deletions
This file was deleted.

resources/dev/elastic-openapi-codegen-php/src/main/resources/elastic-php-client/Client.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace {{invokerPackage}};
88
*
99
* @package {{invokerPackage}}
1010
*/
11-
class Client extends \Elastic\OpenApi\Codegen\AbstractClient
11+
{{#clientClassQualifier}}{{{.}}} {{/clientClassQualifier}}class {{clientClass}} extends \Elastic\OpenApi\Codegen\AbstractClient
1212
{
1313
// phpcs:disable
1414
{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}
@@ -31,7 +31,7 @@ class Client extends \Elastic\OpenApi\Codegen\AbstractClient
3131
*
3232
* @return array
3333
*/
34-
public function {{operationId}}({{#allParams}}${{paramName}}{{^required}} = {{#defaultValue}}{{{.}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}}{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}})
34+
{{vendorExtensions.x-operation-scope}} function {{operationId}}({{#allParams}}${{paramName}}{{^required}} = {{#defaultValue}}{{{.}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}}{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}})
3535
{
3636
{{#allParams.0}}
3737
$params = [

resources/dev/elastic-openapi-codegen-php/src/main/resources/elastic-php-client/README.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
Method | Description | Documentation
88
------------|-------------|--------------
9-
{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}**`{{operationId}}`**| {{#summary}}{{.}}{{/summary}}{{#allParams.0}}<br/> <br/> **Parameters :** <br />{{#allParams}} - `${{paramName}}`{{#required}} (required) {{/required}}{{#hasMore}}<br /> {{/hasMore}}{{/allParams}}{{/allParams.0}}<br/>{{#externalDocs}}|[Endpoint Documentation]({{url}}){{/externalDocs}}
10-
{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}}
9+
{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#vendorExtensions.x-add-to-documentation}}**`{{operationId}}`**| {{#summary}}{{.}}{{/summary}}{{#allParams.0}}<br/> <br/> **Parameters :** <br />{{#allParams}} - `${{paramName}}`{{#required}} (required) {{/required}}{{#hasMore}}<br /> {{/hasMore}}{{/allParams}}{{/allParams.0}}<br/>{{#externalDocs}}|[Endpoint Documentation]({{url}}){{/externalDocs}}
10+
{{/vendorExtensions.x-add-to-documentation}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}}
1111
{{>readme_dev}}
1212
{{>readme_faq}}
1313
{{>readme_contrib}}

0 commit comments

Comments
 (0)