Skip to content

Commit 5869628

Browse files
authored
feat(java-sdk): rename DefaultApi to a service specific name (#186)
1 parent aad9645 commit 5869628

File tree

4 files changed

+45
-3
lines changed

4 files changed

+45
-3
lines changed

openapi-generator-config-java.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,8 @@ additionalProperties:
1313
scmConnection: scm:git@github.com:stackitcloud/stackit-sdk-java.git
1414
scmDeveloperConnection: scm:git@github.com:stackitcloud/stackit-sdk-java.git
1515
scmUrl: https://github.com/stackitcloud/stackit-sdk-java
16+
17+
files:
18+
custom/serviceApi.mustache:
19+
templateType: API
20+
destinationFilename: ServiceApi.java

scripts/generate-sdk/languages/java.sh

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}

templates/java/api.mustache

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ import cloud.stackit.sdk.core.config.CoreConfiguration;
5656
import cloud.stackit.sdk.core.exception.ApiException;
5757

5858
{{#operations}}
59-
public class {{classname}} {
59+
// Package-private access to enforce service-specific API usage (DefaultApi => <ServiceName>Api)
60+
class {{classname}} {
6061
private ApiClient localVarApiClient;
6162
private int localHostIndex;
6263
private String localCustomBaseUrl;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package {{invokerPackage}}.api;
2+
3+
import cloud.stackit.sdk.core.config.CoreConfiguration;
4+
import java.io.IOException;
5+
6+
public class {{serviceName}}Api extends DefaultApi {
7+
public {{serviceName}}Api() throws IOException {
8+
super();
9+
}
10+
11+
public {{serviceName}}Api(CoreConfiguration configuration)
12+
throws IOException {
13+
super(configuration);
14+
}
15+
}

0 commit comments

Comments
 (0)