Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions openapi-generator-config-java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,8 @@ additionalProperties:
scmConnection: scm:[email protected]:stackitcloud/stackit-sdk-java.git
scmDeveloperConnection: scm:[email protected]:stackitcloud/stackit-sdk-java.git
scmUrl: https://github.com/stackitcloud/stackit-sdk-java

files:
custom/serviceApi.mustache:
templateType: API
destinationFilename: ServiceApi.java
25 changes: 23 additions & 2 deletions scripts/generate-sdk/languages/java.sh
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ generate_java_sdk() {
service="${service_json##*/}"
service="${service%.json}"

service_pascal_case=$(to_pascal_case "${service}")

# Remove invalid characters to ensure a valid Java pkg name
service="${service//-/}" # remove dashes
service="${service// /}" # remove spaces
Expand Down Expand Up @@ -117,10 +119,17 @@ generate_java_sdk() {
--git-user-id ${GIT_USER_ID} \
--git-repo-id ${GIT_REPO_ID} \
--global-property apis,models,modelTests=false,modelDocs=false,apiDocs=false,apiTests=false,supportingFiles \
--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 \
--http-user-agent stackit-sdk-java/"${service}" \
--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 \
--http-user-agent stackit-sdk-java/"${service}" \
--config openapi-generator-config-java.yml

# Rename DefaultApiServiceApi.java to {serviceName}Api.java
# This approach is a workaround because the file name cannot be set dynamically via --additional-properties or the config file in OpenAPI Generator.
api_file="${SERVICES_FOLDER}/${service}/src/main/java/cloud/stackit/sdk/${service}/api/DefaultApiServiceApi.java"
if [ -f "$api_file" ]; then
mv "$api_file" "${SERVICES_FOLDER}/${service}/src/main/java/cloud/stackit/sdk/${service}/api/${service_pascal_case}Api.java"
fi

# Remove unnecessary files
rm "${SERVICES_FOLDER}/${service}/.openapi-generator-ignore"
rm -r "${SERVICES_FOLDER}/${service}/.openapi-generator/"
Expand Down Expand Up @@ -154,3 +163,15 @@ generate_java_sdk() {
cd "${SDK_REPO_LOCAL_PATH}"
make fmt
}

to_pascal_case() {
# Joins all arguments, splits on space or dash, capitalizes each part, and concatenates.
echo "$1" | awk -F'[- ]' '{
for (i=1; i<=NF; i++) {
$i = toupper(substr($i,1,1)) tolower(substr($i,2))
}
printf "%s", $1
for (i=2; i<=NF; i++) printf "%s", $i
print ""
}'
}
2 changes: 1 addition & 1 deletion templates/java/api.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ import cloud.stackit.sdk.core.config.CoreConfiguration;
import cloud.stackit.sdk.core.exception.ApiException;

{{#operations}}
public class {{classname}} {
class {{classname}} {
private ApiClient localVarApiClient;
private int localHostIndex;
private String localCustomBaseUrl;
Expand Down
15 changes: 15 additions & 0 deletions templates/java/custom/serviceApi.mustache
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package {{invokerPackage}}.api;

import cloud.stackit.sdk.core.config.CoreConfiguration;
import java.io.IOException;

public class {{serviceName}}Api extends DefaultApi {
public {{serviceName}}Api() throws IOException {
super();
}

public {{serviceName}}Api(CoreConfiguration configuration)
throws IOException {
super(configuration);
}
}
Loading