diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java index 5f55e9d47f0448be795e860b008661c9720ba024..9fafff0fcfc6abc5b5b8e91a9bfa40dcaab36a52 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java @@ -91,7 +91,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf apiTemplateFiles.put("api.mustache", ".proto"); embeddedTemplateDir = templateDir = "protobuf-schema"; hideGenerationTimestamp = Boolean.TRUE; - modelPackage = "messages"; + modelPackage = "models"; apiPackage = "services"; defaultIncludes = new HashSet<>( @@ -167,12 +167,20 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf apiDocTemplateFiles.clear(); // TODO: add api doc template modelDocTemplateFiles.clear(); // TODO: add model doc template - modelPackage = "models"; - apiPackage = "services"; - if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); } + else { + additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName); + } + + if (!additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { + additionalProperties.put(CodegenConstants.API_PACKAGE, apiPackage); + } + + if (!additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { + additionalProperties.put(CodegenConstants.MODEL_PACKAGE, modelPackage); + } if (additionalProperties.containsKey(this.NUMBERED_FIELD_NUMBER_LIST)) { this.numberedFieldNumberList = convertPropertyToBooleanAndWriteBack(NUMBERED_FIELD_NUMBER_LIST); diff --git a/modules/openapi-generator/src/main/resources/protobuf-schema/api.mustache b/modules/openapi-generator/src/main/resources/protobuf-schema/api.mustache index ccf06f93c6dfa49841ee37dcacc9d06ffbd8393c..dc4ec5e1c3928f1e05a0499d54b66553e2f53b77 100644 --- a/modules/openapi-generator/src/main/resources/protobuf-schema/api.mustache +++ b/modules/openapi-generator/src/main/resources/protobuf-schema/api.mustache @@ -1,7 +1,7 @@ {{>partial_header}} syntax = "proto3"; -package {{{packageName}}}; +package {{#lambda.lowercase}}{{{packageName}}}.{{{apiPackage}}}.{{{classname}}};{{/lambda.lowercase}} import "google/protobuf/empty.proto"; {{#imports}} diff --git a/modules/openapi-generator/src/main/resources/protobuf-schema/model.mustache b/modules/openapi-generator/src/main/resources/protobuf-schema/model.mustache index 2a609db9a8d1616cdbee14c9f55f60a556c82bc2..2aca6336c955ea26a0883bf4938e377c3ba58e02 100644 --- a/modules/openapi-generator/src/main/resources/protobuf-schema/model.mustache +++ b/modules/openapi-generator/src/main/resources/protobuf-schema/model.mustache @@ -1,7 +1,7 @@ {{>partial_header}} syntax = "proto3"; -package {{{packageName}}}; +package {{#lambda.lowercase}}{{{packageName}}};{{/lambda.lowercase}} {{#imports}} {{#import}} diff --git a/modules/openapi-generator/src/test/resources/3_0/protobuf-schema/pet.proto b/modules/openapi-generator/src/test/resources/3_0/protobuf-schema/pet.proto index 7ba4adc282a17d5b6ca9cc6165d6be5b16d7ecb9..be5371035c98b631d590c03502d0272c25aad72f 100644 --- a/modules/openapi-generator/src/test/resources/3_0/protobuf-schema/pet.proto +++ b/modules/openapi-generator/src/test/resources/3_0/protobuf-schema/pet.proto @@ -10,7 +10,7 @@ syntax = "proto3"; -package ; +package openapitools; import public "models/lizard_all_of.proto"; import public "models/snake_all_of.proto"; diff --git a/samples/config/petstore/protobuf-schema/services/pet_service.proto b/samples/config/petstore/protobuf-schema/services/pet_service.proto index 6ac05f1deeb6fe8749e5d795d50004690588d51d..ba8b4c18e31cd39a06eb88c12bc72a71865a0874 100644 --- a/samples/config/petstore/protobuf-schema/services/pet_service.proto +++ b/samples/config/petstore/protobuf-schema/services/pet_service.proto @@ -10,7 +10,7 @@ syntax = "proto3"; -package petstore; +package petstore.services.petservice; import "google/protobuf/empty.proto"; import public "models/api_response.proto"; diff --git a/samples/config/petstore/protobuf-schema/services/store_service.proto b/samples/config/petstore/protobuf-schema/services/store_service.proto index e30382ad502ab8cbda9a8522580106f5c97c97b6..05ebe84e1f4a6bc9f7fb3e281e7653007a1adad1 100644 --- a/samples/config/petstore/protobuf-schema/services/store_service.proto +++ b/samples/config/petstore/protobuf-schema/services/store_service.proto @@ -10,7 +10,7 @@ syntax = "proto3"; -package petstore; +package petstore.services.storeservice; import "google/protobuf/empty.proto"; import public "models/order.proto"; diff --git a/samples/config/petstore/protobuf-schema/services/user_service.proto b/samples/config/petstore/protobuf-schema/services/user_service.proto index 8130b04aadd2fb5014ab3e28e6c3a3de4d051422..119219d6fc8f05ce26ed91ccb73fbeb3f5e11e78 100644 --- a/samples/config/petstore/protobuf-schema/services/user_service.proto +++ b/samples/config/petstore/protobuf-schema/services/user_service.proto @@ -10,7 +10,7 @@ syntax = "proto3"; -package petstore; +package petstore.services.userservice; import "google/protobuf/empty.proto"; import public "models/user.proto";