Skip to content

Commit 1436ee1

Browse files
HichemChiouchiouwing328
authored andcommitted
correction of alias to generate php-symfony (#2547)
* [BUG][php-symfony] Fix alias generation * fix * add bundle alias option and alias logic when it is not defined * run bin/utils/ensure-up-to-date to update php-symfony.md
1 parent 67b3766 commit 1436ee1

File tree

10 files changed

+88
-71
lines changed

10 files changed

+88
-71
lines changed

docs/generators/php-symfony.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ sidebar_label: php-symfony
2020
|artifactVersion|The version to use in the composer package version field. e.g. 1.2.3| |null|
2121
|composerVendorName|The vendor name used in the composer package name. The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. yaypets| |null|
2222
|bundleName|The name of the Symfony bundle. The template uses {{bundleName}}| |null|
23+
|bundleAlias|The alias of the Symfony bundle. The template uses {{aliasName}}| |null|
2324
|composerProjectName|The project name used in the composer package name. The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. petstore-client| |null|
2425
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
2526
|phpLegacySupport|Should the generated code be compatible with PHP 5.x?| |true|

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
3535
private static final Logger LOGGER = LoggerFactory.getLogger(PhpSymfonyServerCodegen.class);
3636

3737
public static final String BUNDLE_NAME = "bundleName";
38+
public static final String BUNDLE_ALIAS = "bundleAlias";
3839
public static final String COMPOSER_VENDOR_NAME = "composerVendorName";
3940
public static final String COMPOSER_PROJECT_NAME = "composerProjectName";
4041
public static final String PHP_LEGACY_SUPPORT = "phpLegacySupport";
@@ -87,6 +88,7 @@ public PhpSymfonyServerCodegen() {
8788
srcBasePath = ".";
8889
setInvokerPackage("OpenAPI\\Server");
8990
setBundleName("OpenAPIServer");
91+
setBundleAlias("open_api_server");
9092
modelDirName = "Model";
9193
docsBasePath = "Resources" + "/" + "docs";
9294
apiDocPath = docsBasePath + "/" + apiDirName;
@@ -175,6 +177,7 @@ public PhpSymfonyServerCodegen() {
175177
cliOptions.add(new CliOption(COMPOSER_VENDOR_NAME, "The vendor name used in the composer package name." +
176178
" The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. yaypets"));
177179
cliOptions.add(new CliOption(BUNDLE_NAME, "The name of the Symfony bundle. The template uses {{bundleName}}"));
180+
cliOptions.add(new CliOption(BUNDLE_ALIAS, "The alias of the Symfony bundle. The template uses {{aliasName}}"));
178181
cliOptions.add(new CliOption(COMPOSER_PROJECT_NAME, "The project name used in the composer package name." +
179182
" The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. petstore-client"));
180183
cliOptions.add(new CliOption(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.HIDE_GENERATION_TIMESTAMP_DESC)
@@ -190,7 +193,14 @@ public void setBundleName(String bundleName) {
190193
this.bundleName = bundleName;
191194
this.bundleClassName = bundleName + "Bundle";
192195
this.bundleExtensionName = bundleName + "Extension";
193-
this.bundleAlias = snakeCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase(Locale.ROOT);
196+
}
197+
198+
public void setBundleAlias(String alias) {
199+
if (alias != null && !alias.isEmpty()) {
200+
this.bundleAlias = alias.toLowerCase(Locale.ROOT);
201+
} else {
202+
this.bundleAlias = snakeCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase(Locale.ROOT);
203+
}
194204
}
195205

196206
public void setPhpLegacySupport(Boolean support) {
@@ -244,6 +254,12 @@ public void processOpts() {
244254
additionalProperties.put(BUNDLE_NAME, bundleName);
245255
}
246256

257+
if (additionalProperties.containsKey(BUNDLE_ALIAS)) {
258+
this.setBundleAlias((String) additionalProperties.get(BUNDLE_ALIAS));
259+
} else {
260+
additionalProperties.put(BUNDLE_ALIAS, bundleAlias);
261+
}
262+
247263
if (additionalProperties.containsKey(COMPOSER_PROJECT_NAME)) {
248264
this.setComposerProjectName((String) additionalProperties.get(COMPOSER_PROJECT_NAME));
249265
} else {

samples/server/petstore/php-symfony/SymfonyBundle-php/DependencyInjection/Compiler/OpenAPIServerApiPass.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ class OpenAPIServerApiPass implements CompilerPassInterface
5151
*/
5252
public function process(ContainerBuilder $container) {
5353
// always first check if the primary service is defined
54-
if (!$container->has('open_apiserver.api.api_server')) {
54+
if (!$container->has('open_api_server.api.api_server')) {
5555
return;
5656
}
5757

58-
$definition = $container->findDefinition('open_apiserver.api.api_server');
58+
$definition = $container->findDefinition('open_api_server.api.api_server');
5959

60-
// find all service IDs with the open_apiserver.api tag
61-
$taggedServices = $container->findTaggedServiceIds('open_apiserver.api');
60+
// find all service IDs with the open_api_server.api tag
61+
$taggedServices = $container->findTaggedServiceIds('open_api_server.api');
6262

6363
foreach ($taggedServices as $id => $tags) {
6464
foreach ($tags as $tag) {

samples/server/petstore/php-symfony/SymfonyBundle-php/DependencyInjection/OpenAPIServerExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,6 @@ public function load(array $configs, ContainerBuilder $container)
5252

5353
public function getAlias()
5454
{
55-
return 'open_apiserver';
55+
return 'open_api_server';
5656
}
5757
}

samples/server/petstore/php-symfony/SymfonyBundle-php/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Step 3: Register the routes:
6565

6666
```yaml
6767
# app/config/routing.yml
68-
open_apiserver:
68+
open_api_server:
6969
resource: "@OpenAPIServerBundle/Resources/config/routing.yml"
7070
```
7171
@@ -111,7 +111,7 @@ services:
111111
acme.my_bundle.api.pet:
112112
class: Acme\MyBundle\Api\PetApi
113113
tags:
114-
- { name: "open_apiserver.api", api: "pet" }
114+
- { name: "open_api_server.api", api: "pet" }
115115
# ...
116116
```
117117

samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/config/routing.yml

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,143 +3,143 @@
33
# Do not edit the class manually.
44

55
# pet
6-
open_apiserver_pet_addpet:
6+
open_api_server_pet_addpet:
77
path: /pet
88
methods: [POST]
99
defaults:
10-
_controller: open_apiserver.controller.pet:addPetAction
10+
_controller: open_api_server.controller.pet:addPetAction
1111

12-
open_apiserver_pet_deletepet:
12+
open_api_server_pet_deletepet:
1313
path: /pet/{petId}
1414
methods: [DELETE]
1515
defaults:
16-
_controller: open_apiserver.controller.pet:deletePetAction
16+
_controller: open_api_server.controller.pet:deletePetAction
1717
requirements:
1818
petId: '\d+'
1919

20-
open_apiserver_pet_findpetsbystatus:
20+
open_api_server_pet_findpetsbystatus:
2121
path: /pet/findByStatus
2222
methods: [GET]
2323
defaults:
24-
_controller: open_apiserver.controller.pet:findPetsByStatusAction
24+
_controller: open_api_server.controller.pet:findPetsByStatusAction
2525

26-
open_apiserver_pet_findpetsbytags:
26+
open_api_server_pet_findpetsbytags:
2727
path: /pet/findByTags
2828
methods: [GET]
2929
defaults:
30-
_controller: open_apiserver.controller.pet:findPetsByTagsAction
30+
_controller: open_api_server.controller.pet:findPetsByTagsAction
3131

32-
open_apiserver_pet_getpetbyid:
32+
open_api_server_pet_getpetbyid:
3333
path: /pet/{petId}
3434
methods: [GET]
3535
defaults:
36-
_controller: open_apiserver.controller.pet:getPetByIdAction
36+
_controller: open_api_server.controller.pet:getPetByIdAction
3737
requirements:
3838
petId: '\d+'
3939

40-
open_apiserver_pet_updatepet:
40+
open_api_server_pet_updatepet:
4141
path: /pet
4242
methods: [PUT]
4343
defaults:
44-
_controller: open_apiserver.controller.pet:updatePetAction
44+
_controller: open_api_server.controller.pet:updatePetAction
4545

46-
open_apiserver_pet_updatepetwithform:
46+
open_api_server_pet_updatepetwithform:
4747
path: /pet/{petId}
4848
methods: [POST]
4949
defaults:
50-
_controller: open_apiserver.controller.pet:updatePetWithFormAction
50+
_controller: open_api_server.controller.pet:updatePetWithFormAction
5151
requirements:
5252
petId: '\d+'
5353

54-
open_apiserver_pet_uploadfile:
54+
open_api_server_pet_uploadfile:
5555
path: /pet/{petId}/uploadImage
5656
methods: [POST]
5757
defaults:
58-
_controller: open_apiserver.controller.pet:uploadFileAction
58+
_controller: open_api_server.controller.pet:uploadFileAction
5959
requirements:
6060
petId: '\d+'
6161

6262
# store
63-
open_apiserver_store_deleteorder:
63+
open_api_server_store_deleteorder:
6464
path: /store/order/{orderId}
6565
methods: [DELETE]
6666
defaults:
67-
_controller: open_apiserver.controller.store:deleteOrderAction
67+
_controller: open_api_server.controller.store:deleteOrderAction
6868
requirements:
6969
orderId: '[a-z0-9]+'
7070

71-
open_apiserver_store_getinventory:
71+
open_api_server_store_getinventory:
7272
path: /store/inventory
7373
methods: [GET]
7474
defaults:
75-
_controller: open_apiserver.controller.store:getInventoryAction
75+
_controller: open_api_server.controller.store:getInventoryAction
7676

77-
open_apiserver_store_getorderbyid:
77+
open_api_server_store_getorderbyid:
7878
path: /store/order/{orderId}
7979
methods: [GET]
8080
defaults:
81-
_controller: open_apiserver.controller.store:getOrderByIdAction
81+
_controller: open_api_server.controller.store:getOrderByIdAction
8282
requirements:
8383
orderId: '\d+'
8484

85-
open_apiserver_store_placeorder:
85+
open_api_server_store_placeorder:
8686
path: /store/order
8787
methods: [POST]
8888
defaults:
89-
_controller: open_apiserver.controller.store:placeOrderAction
89+
_controller: open_api_server.controller.store:placeOrderAction
9090

9191
# user
92-
open_apiserver_user_createuser:
92+
open_api_server_user_createuser:
9393
path: /user
9494
methods: [POST]
9595
defaults:
96-
_controller: open_apiserver.controller.user:createUserAction
96+
_controller: open_api_server.controller.user:createUserAction
9797

98-
open_apiserver_user_createuserswitharrayinput:
98+
open_api_server_user_createuserswitharrayinput:
9999
path: /user/createWithArray
100100
methods: [POST]
101101
defaults:
102-
_controller: open_apiserver.controller.user:createUsersWithArrayInputAction
102+
_controller: open_api_server.controller.user:createUsersWithArrayInputAction
103103

104-
open_apiserver_user_createuserswithlistinput:
104+
open_api_server_user_createuserswithlistinput:
105105
path: /user/createWithList
106106
methods: [POST]
107107
defaults:
108-
_controller: open_apiserver.controller.user:createUsersWithListInputAction
108+
_controller: open_api_server.controller.user:createUsersWithListInputAction
109109

110-
open_apiserver_user_deleteuser:
110+
open_api_server_user_deleteuser:
111111
path: /user/{username}
112112
methods: [DELETE]
113113
defaults:
114-
_controller: open_apiserver.controller.user:deleteUserAction
114+
_controller: open_api_server.controller.user:deleteUserAction
115115
requirements:
116116
username: '[a-z0-9]+'
117117

118-
open_apiserver_user_getuserbyname:
118+
open_api_server_user_getuserbyname:
119119
path: /user/{username}
120120
methods: [GET]
121121
defaults:
122-
_controller: open_apiserver.controller.user:getUserByNameAction
122+
_controller: open_api_server.controller.user:getUserByNameAction
123123
requirements:
124124
username: '[a-z0-9]+'
125125

126-
open_apiserver_user_loginuser:
126+
open_api_server_user_loginuser:
127127
path: /user/login
128128
methods: [GET]
129129
defaults:
130-
_controller: open_apiserver.controller.user:loginUserAction
130+
_controller: open_api_server.controller.user:loginUserAction
131131

132-
open_apiserver_user_logoutuser:
132+
open_api_server_user_logoutuser:
133133
path: /user/logout
134134
methods: [GET]
135135
defaults:
136-
_controller: open_apiserver.controller.user:logoutUserAction
136+
_controller: open_api_server.controller.user:logoutUserAction
137137

138-
open_apiserver_user_updateuser:
138+
open_api_server_user_updateuser:
139139
path: /user/{username}
140140
methods: [PUT]
141141
defaults:
142-
_controller: open_apiserver.controller.user:updateUserAction
142+
_controller: open_api_server.controller.user:updateUserAction
143143
requirements:
144144
username: '[a-z0-9]+'
145145

samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/config/services.yml

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,48 +3,48 @@
33
# Do not edit the class manually.
44

55
parameters:
6-
open_apiserver.serializer: 'OpenAPI\Server\Service\JmsSerializer'
7-
open_apiserver.validator: 'OpenAPI\Server\Service\SymfonyValidator'
6+
open_api_server.serializer: 'OpenAPI\Server\Service\JmsSerializer'
7+
open_api_server.validator: 'OpenAPI\Server\Service\SymfonyValidator'
88

99
services:
10-
open_apiserver.api.api_server:
10+
open_api_server.api.api_server:
1111
class: OpenAPI\Server\Api\ApiServer
1212

13-
open_apiserver.model.model_serializer:
13+
open_api_server.model.model_serializer:
1414
class: OpenAPI\Server\Model\ModelSerializer
1515

16-
open_apiserver.service.serializer:
17-
class: '%open_apiserver.serializer%'
16+
open_api_server.service.serializer:
17+
class: '%open_api_server.serializer%'
1818

19-
open_apiserver.service.validator:
20-
class: '%open_apiserver.validator%'
19+
open_api_server.service.validator:
20+
class: '%open_api_server.validator%'
2121
arguments:
2222
- '@validator'
2323

24-
open_apiserver.controller.pet:
24+
open_api_server.controller.pet:
2525
class: OpenAPI\Server\Controller\PetController
2626
calls:
27-
- [setSerializer, ['@open_apiserver.service.serializer']]
28-
- [setValidator, ['@open_apiserver.service.validator']]
29-
- [setApiServer, ['@open_apiserver.api.api_server']]
27+
- [setSerializer, ['@open_api_server.service.serializer']]
28+
- [setValidator, ['@open_api_server.service.validator']]
29+
- [setApiServer, ['@open_api_server.api.api_server']]
3030
tags: ['controller.service_arguments']
3131
autowire: true
3232

33-
open_apiserver.controller.store:
33+
open_api_server.controller.store:
3434
class: OpenAPI\Server\Controller\StoreController
3535
calls:
36-
- [setSerializer, ['@open_apiserver.service.serializer']]
37-
- [setValidator, ['@open_apiserver.service.validator']]
38-
- [setApiServer, ['@open_apiserver.api.api_server']]
36+
- [setSerializer, ['@open_api_server.service.serializer']]
37+
- [setValidator, ['@open_api_server.service.validator']]
38+
- [setApiServer, ['@open_api_server.api.api_server']]
3939
tags: ['controller.service_arguments']
4040
autowire: true
4141

42-
open_apiserver.controller.user:
42+
open_api_server.controller.user:
4343
class: OpenAPI\Server\Controller\UserController
4444
calls:
45-
- [setSerializer, ['@open_apiserver.service.serializer']]
46-
- [setValidator, ['@open_apiserver.service.validator']]
47-
- [setApiServer, ['@open_apiserver.api.api_server']]
45+
- [setSerializer, ['@open_api_server.service.serializer']]
46+
- [setValidator, ['@open_api_server.service.validator']]
47+
- [setApiServer, ['@open_api_server.api.api_server']]
4848
tags: ['controller.service_arguments']
4949
autowire: true
5050

samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/docs/Api/PetApiInterface.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ services:
2222
acme.my_bundle.api.pet:
2323
class: Acme\MyBundle\Api\PetApi
2424
tags:
25-
- { name: "open_apiserver.api", api: "pet" }
25+
- { name: "open_api_server.api", api: "pet" }
2626
# ...
2727
```
2828

samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/docs/Api/StoreApiInterface.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ services:
1818
acme.my_bundle.api.store:
1919
class: Acme\MyBundle\Api\StoreApi
2020
tags:
21-
- { name: "open_apiserver.api", api: "store" }
21+
- { name: "open_api_server.api", api: "store" }
2222
# ...
2323
```
2424

samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/docs/Api/UserApiInterface.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ services:
2222
acme.my_bundle.api.user:
2323
class: Acme\MyBundle\Api\UserApi
2424
tags:
25-
- { name: "open_apiserver.api", api: "user" }
25+
- { name: "open_api_server.api", api: "user" }
2626
# ...
2727
```
2828

0 commit comments

Comments
 (0)