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
This commit is contained in:
HichemChiouchiou 2019-04-05 16:51:31 +02:00 committed by William Cheng
parent 67b3766332
commit 1436ee1da6
10 changed files with 88 additions and 71 deletions

View File

@ -20,6 +20,7 @@ sidebar_label: php-symfony
|artifactVersion|The version to use in the composer package version field. e.g. 1.2.3| |null|
|composerVendorName|The vendor name used in the composer package name. The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. yaypets| |null|
|bundleName|The name of the Symfony bundle. The template uses {{bundleName}}| |null|
|bundleAlias|The alias of the Symfony bundle. The template uses {{aliasName}}| |null|
|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|
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|phpLegacySupport|Should the generated code be compatible with PHP 5.x?| |true|

View File

@ -35,6 +35,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
private static final Logger LOGGER = LoggerFactory.getLogger(PhpSymfonyServerCodegen.class);
public static final String BUNDLE_NAME = "bundleName";
public static final String BUNDLE_ALIAS = "bundleAlias";
public static final String COMPOSER_VENDOR_NAME = "composerVendorName";
public static final String COMPOSER_PROJECT_NAME = "composerProjectName";
public static final String PHP_LEGACY_SUPPORT = "phpLegacySupport";
@ -87,6 +88,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
srcBasePath = ".";
setInvokerPackage("OpenAPI\\Server");
setBundleName("OpenAPIServer");
setBundleAlias("open_api_server");
modelDirName = "Model";
docsBasePath = "Resources" + "/" + "docs";
apiDocPath = docsBasePath + "/" + apiDirName;
@ -175,6 +177,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
cliOptions.add(new CliOption(COMPOSER_VENDOR_NAME, "The vendor name used in the composer package name." +
" The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. yaypets"));
cliOptions.add(new CliOption(BUNDLE_NAME, "The name of the Symfony bundle. The template uses {{bundleName}}"));
cliOptions.add(new CliOption(BUNDLE_ALIAS, "The alias of the Symfony bundle. The template uses {{aliasName}}"));
cliOptions.add(new CliOption(COMPOSER_PROJECT_NAME, "The project name used in the composer package name." +
" The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. petstore-client"));
cliOptions.add(new CliOption(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.HIDE_GENERATION_TIMESTAMP_DESC)
@ -190,7 +193,14 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
this.bundleName = bundleName;
this.bundleClassName = bundleName + "Bundle";
this.bundleExtensionName = bundleName + "Extension";
this.bundleAlias = snakeCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase(Locale.ROOT);
}
public void setBundleAlias(String alias) {
if (alias != null && !alias.isEmpty()) {
this.bundleAlias = alias.toLowerCase(Locale.ROOT);
} else {
this.bundleAlias = snakeCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase(Locale.ROOT);
}
}
public void setPhpLegacySupport(Boolean support) {
@ -244,6 +254,12 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
additionalProperties.put(BUNDLE_NAME, bundleName);
}
if (additionalProperties.containsKey(BUNDLE_ALIAS)) {
this.setBundleAlias((String) additionalProperties.get(BUNDLE_ALIAS));
} else {
additionalProperties.put(BUNDLE_ALIAS, bundleAlias);
}
if (additionalProperties.containsKey(COMPOSER_PROJECT_NAME)) {
this.setComposerProjectName((String) additionalProperties.get(COMPOSER_PROJECT_NAME));
} else {

View File

@ -51,14 +51,14 @@ class OpenAPIServerApiPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container) {
// always first check if the primary service is defined
if (!$container->has('open_apiserver.api.api_server')) {
if (!$container->has('open_api_server.api.api_server')) {
return;
}
$definition = $container->findDefinition('open_apiserver.api.api_server');
$definition = $container->findDefinition('open_api_server.api.api_server');
// find all service IDs with the open_apiserver.api tag
$taggedServices = $container->findTaggedServiceIds('open_apiserver.api');
// find all service IDs with the open_api_server.api tag
$taggedServices = $container->findTaggedServiceIds('open_api_server.api');
foreach ($taggedServices as $id => $tags) {
foreach ($tags as $tag) {

View File

@ -52,6 +52,6 @@ class OpenAPIServerExtension extends Extension
public function getAlias()
{
return 'open_apiserver';
return 'open_api_server';
}
}

View File

@ -65,7 +65,7 @@ Step 3: Register the routes:
```yaml
# app/config/routing.yml
open_apiserver:
open_api_server:
resource: "@OpenAPIServerBundle/Resources/config/routing.yml"
```
@ -111,7 +111,7 @@ services:
acme.my_bundle.api.pet:
class: Acme\MyBundle\Api\PetApi
tags:
- { name: "open_apiserver.api", api: "pet" }
- { name: "open_api_server.api", api: "pet" }
# ...
```

View File

@ -3,143 +3,143 @@
# Do not edit the class manually.
# pet
open_apiserver_pet_addpet:
open_api_server_pet_addpet:
path: /pet
methods: [POST]
defaults:
_controller: open_apiserver.controller.pet:addPetAction
_controller: open_api_server.controller.pet:addPetAction
open_apiserver_pet_deletepet:
open_api_server_pet_deletepet:
path: /pet/{petId}
methods: [DELETE]
defaults:
_controller: open_apiserver.controller.pet:deletePetAction
_controller: open_api_server.controller.pet:deletePetAction
requirements:
petId: '\d+'
open_apiserver_pet_findpetsbystatus:
open_api_server_pet_findpetsbystatus:
path: /pet/findByStatus
methods: [GET]
defaults:
_controller: open_apiserver.controller.pet:findPetsByStatusAction
_controller: open_api_server.controller.pet:findPetsByStatusAction
open_apiserver_pet_findpetsbytags:
open_api_server_pet_findpetsbytags:
path: /pet/findByTags
methods: [GET]
defaults:
_controller: open_apiserver.controller.pet:findPetsByTagsAction
_controller: open_api_server.controller.pet:findPetsByTagsAction
open_apiserver_pet_getpetbyid:
open_api_server_pet_getpetbyid:
path: /pet/{petId}
methods: [GET]
defaults:
_controller: open_apiserver.controller.pet:getPetByIdAction
_controller: open_api_server.controller.pet:getPetByIdAction
requirements:
petId: '\d+'
open_apiserver_pet_updatepet:
open_api_server_pet_updatepet:
path: /pet
methods: [PUT]
defaults:
_controller: open_apiserver.controller.pet:updatePetAction
_controller: open_api_server.controller.pet:updatePetAction
open_apiserver_pet_updatepetwithform:
open_api_server_pet_updatepetwithform:
path: /pet/{petId}
methods: [POST]
defaults:
_controller: open_apiserver.controller.pet:updatePetWithFormAction
_controller: open_api_server.controller.pet:updatePetWithFormAction
requirements:
petId: '\d+'
open_apiserver_pet_uploadfile:
open_api_server_pet_uploadfile:
path: /pet/{petId}/uploadImage
methods: [POST]
defaults:
_controller: open_apiserver.controller.pet:uploadFileAction
_controller: open_api_server.controller.pet:uploadFileAction
requirements:
petId: '\d+'
# store
open_apiserver_store_deleteorder:
open_api_server_store_deleteorder:
path: /store/order/{orderId}
methods: [DELETE]
defaults:
_controller: open_apiserver.controller.store:deleteOrderAction
_controller: open_api_server.controller.store:deleteOrderAction
requirements:
orderId: '[a-z0-9]+'
open_apiserver_store_getinventory:
open_api_server_store_getinventory:
path: /store/inventory
methods: [GET]
defaults:
_controller: open_apiserver.controller.store:getInventoryAction
_controller: open_api_server.controller.store:getInventoryAction
open_apiserver_store_getorderbyid:
open_api_server_store_getorderbyid:
path: /store/order/{orderId}
methods: [GET]
defaults:
_controller: open_apiserver.controller.store:getOrderByIdAction
_controller: open_api_server.controller.store:getOrderByIdAction
requirements:
orderId: '\d+'
open_apiserver_store_placeorder:
open_api_server_store_placeorder:
path: /store/order
methods: [POST]
defaults:
_controller: open_apiserver.controller.store:placeOrderAction
_controller: open_api_server.controller.store:placeOrderAction
# user
open_apiserver_user_createuser:
open_api_server_user_createuser:
path: /user
methods: [POST]
defaults:
_controller: open_apiserver.controller.user:createUserAction
_controller: open_api_server.controller.user:createUserAction
open_apiserver_user_createuserswitharrayinput:
open_api_server_user_createuserswitharrayinput:
path: /user/createWithArray
methods: [POST]
defaults:
_controller: open_apiserver.controller.user:createUsersWithArrayInputAction
_controller: open_api_server.controller.user:createUsersWithArrayInputAction
open_apiserver_user_createuserswithlistinput:
open_api_server_user_createuserswithlistinput:
path: /user/createWithList
methods: [POST]
defaults:
_controller: open_apiserver.controller.user:createUsersWithListInputAction
_controller: open_api_server.controller.user:createUsersWithListInputAction
open_apiserver_user_deleteuser:
open_api_server_user_deleteuser:
path: /user/{username}
methods: [DELETE]
defaults:
_controller: open_apiserver.controller.user:deleteUserAction
_controller: open_api_server.controller.user:deleteUserAction
requirements:
username: '[a-z0-9]+'
open_apiserver_user_getuserbyname:
open_api_server_user_getuserbyname:
path: /user/{username}
methods: [GET]
defaults:
_controller: open_apiserver.controller.user:getUserByNameAction
_controller: open_api_server.controller.user:getUserByNameAction
requirements:
username: '[a-z0-9]+'
open_apiserver_user_loginuser:
open_api_server_user_loginuser:
path: /user/login
methods: [GET]
defaults:
_controller: open_apiserver.controller.user:loginUserAction
_controller: open_api_server.controller.user:loginUserAction
open_apiserver_user_logoutuser:
open_api_server_user_logoutuser:
path: /user/logout
methods: [GET]
defaults:
_controller: open_apiserver.controller.user:logoutUserAction
_controller: open_api_server.controller.user:logoutUserAction
open_apiserver_user_updateuser:
open_api_server_user_updateuser:
path: /user/{username}
methods: [PUT]
defaults:
_controller: open_apiserver.controller.user:updateUserAction
_controller: open_api_server.controller.user:updateUserAction
requirements:
username: '[a-z0-9]+'

View File

@ -3,48 +3,48 @@
# Do not edit the class manually.
parameters:
open_apiserver.serializer: 'OpenAPI\Server\Service\JmsSerializer'
open_apiserver.validator: 'OpenAPI\Server\Service\SymfonyValidator'
open_api_server.serializer: 'OpenAPI\Server\Service\JmsSerializer'
open_api_server.validator: 'OpenAPI\Server\Service\SymfonyValidator'
services:
open_apiserver.api.api_server:
open_api_server.api.api_server:
class: OpenAPI\Server\Api\ApiServer
open_apiserver.model.model_serializer:
open_api_server.model.model_serializer:
class: OpenAPI\Server\Model\ModelSerializer
open_apiserver.service.serializer:
class: '%open_apiserver.serializer%'
open_api_server.service.serializer:
class: '%open_api_server.serializer%'
open_apiserver.service.validator:
class: '%open_apiserver.validator%'
open_api_server.service.validator:
class: '%open_api_server.validator%'
arguments:
- '@validator'
open_apiserver.controller.pet:
open_api_server.controller.pet:
class: OpenAPI\Server\Controller\PetController
calls:
- [setSerializer, ['@open_apiserver.service.serializer']]
- [setValidator, ['@open_apiserver.service.validator']]
- [setApiServer, ['@open_apiserver.api.api_server']]
- [setSerializer, ['@open_api_server.service.serializer']]
- [setValidator, ['@open_api_server.service.validator']]
- [setApiServer, ['@open_api_server.api.api_server']]
tags: ['controller.service_arguments']
autowire: true
open_apiserver.controller.store:
open_api_server.controller.store:
class: OpenAPI\Server\Controller\StoreController
calls:
- [setSerializer, ['@open_apiserver.service.serializer']]
- [setValidator, ['@open_apiserver.service.validator']]
- [setApiServer, ['@open_apiserver.api.api_server']]
- [setSerializer, ['@open_api_server.service.serializer']]
- [setValidator, ['@open_api_server.service.validator']]
- [setApiServer, ['@open_api_server.api.api_server']]
tags: ['controller.service_arguments']
autowire: true
open_apiserver.controller.user:
open_api_server.controller.user:
class: OpenAPI\Server\Controller\UserController
calls:
- [setSerializer, ['@open_apiserver.service.serializer']]
- [setValidator, ['@open_apiserver.service.validator']]
- [setApiServer, ['@open_apiserver.api.api_server']]
- [setSerializer, ['@open_api_server.service.serializer']]
- [setValidator, ['@open_api_server.service.validator']]
- [setApiServer, ['@open_api_server.api.api_server']]
tags: ['controller.service_arguments']
autowire: true

View File

@ -22,7 +22,7 @@ services:
acme.my_bundle.api.pet:
class: Acme\MyBundle\Api\PetApi
tags:
- { name: "open_apiserver.api", api: "pet" }
- { name: "open_api_server.api", api: "pet" }
# ...
```

View File

@ -18,7 +18,7 @@ services:
acme.my_bundle.api.store:
class: Acme\MyBundle\Api\StoreApi
tags:
- { name: "open_apiserver.api", api: "store" }
- { name: "open_api_server.api", api: "store" }
# ...
```

View File

@ -22,7 +22,7 @@ services:
acme.my_bundle.api.user:
class: Acme\MyBundle\Api\UserApi
tags:
- { name: "open_apiserver.api", api: "user" }
- { name: "open_api_server.api", api: "user" }
# ...
```