@@ -79,6 +79,8 @@ generate_java_sdk() {
7979 service=" ${service_json##*/ } "
8080 service=" ${service% .json} "
8181
82+ service_pascal_case=$( to_pascal_case " ${service} " )
83+
8284 # Remove invalid characters to ensure a valid Java pkg name
8385 service=" ${service// -/ } " # remove dashes
8486 service=" ${service// / } " # remove spaces
@@ -117,10 +119,17 @@ generate_java_sdk() {
117119 --git-user-id ${GIT_USER_ID} \
118120 --git-repo-id ${GIT_REPO_ID} \
119121 --global-property apis,models,modelTests=false,modelDocs=false,apiDocs=false,apiTests=false,supportingFiles \
120- --additional-properties=artifactId=" stackit-sdk-${service} " ,artifactDescription=" ${SERVICE_DESCRIPTION} " ,invokerPackage=" cloud.stackit.sdk.${service} " ,modelPackage=" cloud.stackit.sdk.${service} .model" ,apiPackage=" cloud.stackit.sdk.${service} .api" > /dev/null \
121- --http-user-agent stackit-sdk-java/" ${service} " \
122+ --additional-properties=artifactId=" stackit-sdk-${service} " ,artifactDescription=" ${SERVICE_DESCRIPTION} " ,invokerPackage=" cloud.stackit.sdk.${service} " ,modelPackage=" cloud.stackit.sdk.${service} .model" ,apiPackage=" cloud.stackit.sdk.${service} .api" ,serviceName= " ${service_pascal_case} " > /dev/null \
123+ --http-user-agent stackit-sdk-java/" ${service} " \
122124 --config openapi-generator-config-java.yml
123125
126+ # Rename DefaultApiServiceApi.java to {serviceName}Api.java
127+ # This approach is a workaround because the file name cannot be set dynamically via --additional-properties or the config file in OpenAPI Generator.
128+ api_file=" ${SERVICES_FOLDER} /${service} /src/main/java/cloud/stackit/sdk/${service} /api/DefaultApiServiceApi.java"
129+ if [ -f " $api_file " ]; then
130+ mv " $api_file " " ${SERVICES_FOLDER} /${service} /src/main/java/cloud/stackit/sdk/${service} /api/${service_pascal_case} Api.java"
131+ fi
132+
124133 # Remove unnecessary files
125134 rm " ${SERVICES_FOLDER} /${service} /.openapi-generator-ignore"
126135 rm -r " ${SERVICES_FOLDER} /${service} /.openapi-generator/"
@@ -154,3 +163,15 @@ generate_java_sdk() {
154163 cd " ${SDK_REPO_LOCAL_PATH} "
155164 make fmt
156165}
166+
167+ to_pascal_case () {
168+ # Joins all arguments, splits on space or dash, capitalizes each part, and concatenates.
169+ echo " $1 " | awk -F' [- ]' ' {
170+ for (i=1; i<=NF; i++) {
171+ $i = toupper(substr($i,1,1)) tolower(substr($i,2))
172+ }
173+ printf "%s", $1
174+ for (i=2; i<=NF; i++) printf "%s", $i
175+ print ""
176+ }'
177+ }
0 commit comments