Skip to content

Commit 70997a1

Browse files
authored
feat(java-sdk): add maven central documentation to service READMEs (#194)
relates to STACKITSDK-207
1 parent 7b9446c commit 70997a1

File tree

4 files changed

+59
-81
lines changed

4 files changed

+59
-81
lines changed

openapi-generator-config-java.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ additionalProperties:
66
developerEmail: [email protected]
77
developerOrganization: STACKIT
88
developerOrganizationUrl: https://www.stackit.de
9-
groupId: cloud.stackit
9+
groupId: cloud.stackit.sdk
1010
hideGenerationTimestamp: true
1111
licenseName: Apache License 2.0
1212
licenseUrl: http://www.apache.org/licenses/

scripts/generate-sdk/.openapi-generator-ignore-java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ build.sbt
1515
# there's no content in it
1616
gradle.properties
1717

18+
# content isn't needed
19+
settings.gradle
20+
1821
# gradle wrapper (we don't need it because we use the generated projects as gradle subprojects)
1922
gradlew.bat
2023
gradlew
@@ -27,4 +30,4 @@ gradle/**
2730
**/auth/**
2831

2932
# Service Configuration is not required. It only stores a defaultApiClient
30-
**/Configuration.java
33+
**/Configuration.java

scripts/generate-sdk/languages/java.sh

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,31 +51,31 @@ generate_java_sdk() {
5151
fi
5252

5353
# Clone SDK repo
54-
if [ -d ${SDK_REPO_LOCAL_PATH} ]; then
54+
if [ -d "${SDK_REPO_LOCAL_PATH}" ]; then
5555
echo "Old SDK repo clone was found, it will be removed."
56-
rm -rf ${SDK_REPO_LOCAL_PATH}
56+
rm -rf "${SDK_REPO_LOCAL_PATH}"
5757
fi
58-
git clone --quiet -b ${SDK_BRANCH} ${SDK_REPO_URL} ${SDK_REPO_LOCAL_PATH}
58+
git clone --quiet -b "${SDK_BRANCH}" "${SDK_REPO_URL}" "${SDK_REPO_LOCAL_PATH}"
5959

6060
# Backup of the current state of the SDK services dir (services/)
6161
sdk_services_backup_dir=$(mktemp -d)
62-
if [[ ! ${sdk_services_backup_dir} || -d {sdk_services_backup_dir} ]]; then
62+
if [[ ! "${sdk_services_backup_dir}" || -d {sdk_services_backup_dir} ]]; then
6363
echo "! Unable to create temporary directory"
6464
exit 1
6565
fi
6666
cleanup() {
67-
rm -rf ${sdk_services_backup_dir}
67+
rm -rf "${sdk_services_backup_dir}"
6868
}
69-
cp -a "${SERVICES_FOLDER}/." ${sdk_services_backup_dir}
69+
cp -a "${SERVICES_FOLDER}/." "${sdk_services_backup_dir}"
7070

7171
# Cleanup after we are done
7272
trap cleanup EXIT
7373

7474
# Remove old contents of services dir (services/)
75-
rm -rf ${SERVICES_FOLDER}
75+
rm -rf "${SERVICES_FOLDER}"
7676

7777
# Generate SDK for each service
78-
for service_json in ${ROOT_DIR}/oas/*.json; do
78+
for service_json in "${ROOT_DIR}"/oas/*.json; do
7979
service="${service_json##*/}"
8080
service="${service%.json}"
8181

@@ -97,29 +97,29 @@ generate_java_sdk() {
9797
continue
9898
fi
9999

100-
if grep -E "^$service$" ${ROOT_DIR}/blacklist.txt; then
100+
if grep -E "^$service$" "${ROOT_DIR}/blacklist.txt"; then
101101
echo "Skipping blacklisted service ${service}"
102102
continue
103103
fi
104104

105105
echo ">> Generating \"${service}\" service..."
106-
cd ${ROOT_DIR}
106+
cd "${ROOT_DIR}"
107107

108108
mkdir -p "${SERVICES_FOLDER}/${service}/"
109109
cp "${ROOT_DIR}/scripts/generate-sdk/.openapi-generator-ignore-java" "${SERVICES_FOLDER}/${service}/.openapi-generator-ignore"
110110

111-
SERVICE_DESCRIPTION=$(cat ${service_json} | jq .info.title --raw-output)
111+
SERVICE_DESCRIPTION=$(cat "${service_json}" | jq .info.title --raw-output)
112112

113113
# Run the generator
114-
java -Dlog.level=${GENERATOR_LOG_LEVEL} -jar ${jar_path} generate \
114+
java -Dlog.level="${GENERATOR_LOG_LEVEL}" -jar "${GENERATOR_JAR_PATH}" generate \
115115
--generator-name java \
116116
--input-spec "${service_json}" \
117117
--output "${SERVICES_FOLDER}/${service}" \
118-
--git-host ${GIT_HOST} \
119-
--git-user-id ${GIT_USER_ID} \
120-
--git-repo-id ${GIT_REPO_ID} \
118+
--git-host "${GIT_HOST}" \
119+
--git-user-id "${GIT_USER_ID}" \
120+
--git-repo-id "${GIT_REPO_ID}" \
121121
--global-property apis,models,modelTests=false,modelDocs=false,apiDocs=false,apiTests=false,supportingFiles \
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},serviceId=${service}" >/dev/null \
122+
--additional-properties="artifactId=${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 \
123123
--http-user-agent stackit-sdk-java/"${service}" \
124124
--config openapi-generator-config-java.yml
125125

@@ -135,27 +135,27 @@ generate_java_sdk() {
135135
rm -r "${SERVICES_FOLDER}/${service}/.openapi-generator/"
136136

137137
# If the service has a CHANGELOG file, move it inside the service folder
138-
if [ -f ${sdk_services_backup_dir}/${service}/CHANGELOG.md ]; then
138+
if [ -f "${sdk_services_backup_dir}/${service}/CHANGELOG.md" ]; then
139139
echo "Found ${service} \"CHANGELOG\" file"
140-
cp -r ${sdk_services_backup_dir}/${service}/CHANGELOG.md ${SERVICES_FOLDER}/${service}/CHANGELOG.md
140+
cp -r "${sdk_services_backup_dir}/${service}/CHANGELOG.md" "${SERVICES_FOLDER}/${service}/CHANGELOG.md"
141141
fi
142142

143143
# If the service has a LICENSE file, move it inside the service folder
144-
if [ -f ${sdk_services_backup_dir}/${service}/LICENSE.md ]; then
144+
if [ -f "${sdk_services_backup_dir}/${service}/LICENSE.md" ]; then
145145
echo "Found ${service} \"LICENSE\" file"
146-
cp -r ${sdk_services_backup_dir}/${service}/LICENSE.md ${SERVICES_FOLDER}/${service}/LICENSE.md
146+
cp -r "${sdk_services_backup_dir}/${service}/LICENSE.md" "${SERVICES_FOLDER}/${service}/LICENSE.md"
147147
fi
148148

149149
# If the service has a NOTICE file, move it inside the service folder
150-
if [ -f ${sdk_services_backup_dir}/${service}/NOTICE.txt ]; then
150+
if [ -f "${sdk_services_backup_dir}/${service}/NOTICE.txt" ]; then
151151
echo "Found ${service} \"NOTICE\" file"
152-
cp -r ${sdk_services_backup_dir}/${service}/NOTICE.txt ${SERVICES_FOLDER}/${service}/NOTICE.txt
152+
cp -r "${sdk_services_backup_dir}/${service}/NOTICE.txt" "${SERVICES_FOLDER}/${service}/NOTICE.txt"
153153
fi
154154

155155
# If the service has a VERSION file, move it inside the service folder
156-
if [ -f ${sdk_services_backup_dir}/${service}/VERSION ]; then
156+
if [ -f "${sdk_services_backup_dir}/${service}/VERSION" ]; then
157157
echo "Found ${service} \"VERSION\" file"
158-
cp -r ${sdk_services_backup_dir}/${service}/VERSION ${SERVICES_FOLDER}/${service}/VERSION
158+
cp -r "${sdk_services_backup_dir}/${service}/VERSION" "${SERVICES_FOLDER}/${service}/VERSION"
159159
fi
160160

161161
done

templates/java/README.mustache

Lines changed: 30 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
# {{artifactId}}
2-
3-
{{appName}}
1+
# STACKIT Java SDK for {{appName}}
42

53
- API version: {{appVersion}}
64

@@ -12,28 +10,9 @@ For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}})
1210

1311
This package is part of the STACKIT Java SDK. For additional information, please visit the [GitHub repository](https://{{gitHost}}/{{{gitUserId}}}/{{{gitRepoId}}}) of the SDK.
1412

13+
## Installation from Maven Central (recommended)
1514

16-
## Requirements
17-
18-
Building the API client library requires:
19-
1. Java SDK (version 11 to 21 should be supported) installed on your system
20-
21-
## Installation
22-
23-
To install the API client library to your local Maven repository, simply execute:
24-
25-
```shell
26-
./gradlew publishToMavenLocal
27-
```
28-
29-
To deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
30-
31-
```shell
32-
# TODO: follow up story
33-
# ./gradlew publishToMavenCentral
34-
```
35-
36-
Refer to the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html) for more information.
15+
The release artifacts for this SDK submodule are available on [Maven Central](https://central.sonatype.com/artifact/{{groupId}}/{{artifactId}}).
3716

3817
### Maven users
3918

@@ -54,59 +33,55 @@ Add this dependency to your project's build file:
5433

5534
```groovy
5635
repositories {
57-
mavenCentral() // Needed if the '{{{artifactId}}}' jar has been published to maven central.
58-
mavenLocal() // Needed if the '{{{artifactId}}}' jar has been published to the local maven repo.
36+
mavenCentral()
5937
}
6038

6139
dependencies {
6240
implementation "{{{groupId}}}:{{{artifactId}}}:<SDK_VERSION>"
6341
}
6442
```
6543

66-
### Others
44+
## Installation from local build
6745

68-
At first generate the JAR by executing:
46+
Building the API client library requires:
47+
1. Java SDK (version 11 to 21 should be supported) installed on your system
48+
49+
To install the API client library to your local Maven repository, simply execute:
6950

7051
```shell
71-
mvn clean package
52+
./gradlew services:{{artifactId}}:publishToMavenLocal
7253
```
7354

74-
Then manually install the following JARs:
55+
### Maven users
7556

76-
- `target/{{{artifactId}}}-<SDK_VERSION>.jar`
77-
- `target/lib/*.jar`
57+
Add this dependency to your project's POM:
7858

79-
{{#jersey2}}
80-
## Usage
59+
```xml
60+
<dependency>
61+
<groupId>{{{groupId}}}</groupId>
62+
<artifactId>{{{artifactId}}}</artifactId>
63+
<version><SDK_VERSION></version>
64+
<scope>compile</scope>
65+
</dependency>
66+
```
8167

82-
To add a HTTP proxy for the API client, use `ClientConfig`:
83-
```java
84-
{{#apiInfo}}{{#apis}}{{#-first}}{{#operations}}{{#operation}}{{#-first}}
85-
import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
86-
import org.glassfish.jersey.client.ClientConfig;
87-
import org.glassfish.jersey.client.ClientProperties;
88-
import {{{invokerPackage}}}.*;
89-
import {{{package}}}.{{{classname}}};
68+
### Gradle users
9069

91-
...
70+
Add this dependency to your project's build file:
9271

93-
ApiClient defaultClient = Configuration.getDefaultApiClient();
94-
ClientConfig clientConfig = defaultClient.getClientConfig();
95-
clientConfig.connectorProvider(new ApacheConnectorProvider());
96-
clientConfig.property(ClientProperties.PROXY_URI, "http://proxy_url_here");
97-
clientConfig.property(ClientProperties.PROXY_USERNAME, "proxy_username");
98-
clientConfig.property(ClientProperties.PROXY_PASSWORD, "proxy_password");
99-
defaultClient.setClientConfig(clientConfig);
72+
```groovy
73+
repositories {
74+
mavenLocal()
75+
}
10076

101-
{{{classname}}} apiInstance = new {{{classname}}}(defaultClient);
102-
{{/-first}}{{/operation}}{{/operations}}{{/-first}}{{/apis}}{{/apiInfo}}
77+
dependencies {
78+
implementation "{{{groupId}}}:{{{artifactId}}}:<SDK_VERSION>"
79+
}
10380
```
10481

105-
{{/jersey2}}
10682
## Getting Started
10783

108-
See the [{{serviceId}} examples]({{scmUrl}}/tree/main/examples/{{serviceId}}/src/main/java/cloud/stackit/sdk/{{serviceId}}/examples).
109-
84+
See the [{{artifactId}} examples]({{scmUrl}}/tree/main/examples/{{artifactId}}/src/main/java/cloud/stackit/sdk/{{artifactId}}/examples).
11085

11186
## Recommendation
11287

0 commit comments

Comments
 (0)