Skip to content

Commit b202f92

Browse files
feat(sdk,server): add Java SDK and Spring Boot server implementation (#7)
- Generate complete Java client SDK - Include Spring Boot 2 server implementation with full model support - Support Maven and Gradle build systems with proper dependencies
1 parent 9994492 commit b202f92

File tree

278 files changed

+62974
-138
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

278 files changed

+62974
-138
lines changed

clean.sh

100644100755
File mode changed.

generate.sh

100644100755
Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
set -e
33

44
SPEC_FILE="apollo-openapi.yaml"
5-
JAVA_DIR="java"
5+
JAVA_CLIENT_DIR="java-client"
6+
SPRING_BOOT2_DIR="spring-boot2"
67
PYTHON_DIR="python"
78
RUST_DIR="rust"
89
TS_DIR="typescript"
910

1011
echo "🧹 Cleaning old generated SDKs..."
11-
rm -rf "$JAVA_DIR"
12+
rm -rf "$JAVA_CLIENT_DIR"
13+
rm -rf "$SPRING_BOOT2_DIR"
1214
rm -rf "$PYTHON_DIR"
1315
rm -rf "$RUST_DIR"
1416
rm -rf "$TS_DIR"
@@ -28,6 +30,36 @@ openapi-generator generate \
2830
-o "$TS_DIR" \
2931
--additional-properties=npmName=apollo-openapi,npmVersion=0.0.1,typescriptThreePlus=true
3032

33+
echo "🚀 Generating Java Client SDK..."
34+
openapi-generator generate \
35+
-i "$SPEC_FILE" \
36+
-g java \
37+
-o "$JAVA_CLIENT_DIR" \
38+
--additional-properties=groupId=com.apollo,artifactId=apollo-openapi-client,artifactVersion=0.0.1,packageName=com.apollo.openapi.client
39+
40+
echo "🚀 Generating Spring Boot 2 Server..."
41+
openapi-generator generate \
42+
-i "$SPEC_FILE" \
43+
-g spring \
44+
-o "$SPRING_BOOT2_DIR" \
45+
--additional-properties=groupId=com.apollo,artifactId=apollo-openapi-server,artifactVersion=0.0.1,packageName=com.apollo.openapi.server,basePackage=com.apollo.openapi.server,configPackage=com.apollo.openapi.server.config,modelPackage=com.apollo.openapi.server.model,apiPackage=com.apollo.openapi.server.api,library=spring-boot,java8=true,interfaceOnly=false,delegatePattern=true,useTags=true
46+
47+
echo "📦 Adding Maven Wrapper to Spring Boot 2 project..."
48+
cd "$SPRING_BOOT2_DIR"
49+
mvn -N io.takari:maven:wrapper -Dmaven=3.8.6
50+
cd ..
51+
52+
echo "💡 Spring Boot 2 project ready! To start the server, run:"
53+
echo " cd $SPRING_BOOT2_DIR && ./mvnw spring-boot:run"
54+
55+
if [ "$1" = "--start-spring-boot" ]; then
56+
echo "🚀 Starting Spring Boot server..."
57+
cd "$SPRING_BOOT2_DIR"
58+
./mvnw spring-boot:run &
59+
echo "✅ Spring Boot server started in background. Access it at http://localhost:8080"
60+
cd ..
61+
fi
62+
3163
echo "🚀 Generating Rust SDK..."
3264
openapi-generator generate \
3365
-i "$SPEC_FILE" \
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
2+
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3+
#
4+
# This file is auto-generated by OpenAPI Generator (https://openapi-generator.tech)
5+
6+
name: Java CI with Maven
7+
8+
on:
9+
push:
10+
branches: [ main, master ]
11+
pull_request:
12+
branches: [ main, master ]
13+
14+
jobs:
15+
build:
16+
name: Build Apollo OpenAPI
17+
runs-on: ubuntu-latest
18+
strategy:
19+
matrix:
20+
java: [ 17, 21 ]
21+
steps:
22+
- uses: actions/checkout@v4
23+
- name: Set up JDK
24+
uses: actions/setup-java@v4
25+
with:
26+
java-version: ${{ matrix.java }}
27+
distribution: 'temurin'
28+
cache: maven
29+
- name: Build with Maven
30+
run: mvn -B package --no-transfer-progress --file pom.xml

java-client/.gitignore

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
*.class
2+
3+
# Mobile Tools for Java (J2ME)
4+
.mtj.tmp/
5+
6+
# Package Files #
7+
*.jar
8+
*.war
9+
*.ear
10+
11+
# exclude jar for gradle wrapper
12+
!gradle/wrapper/*.jar
13+
14+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
15+
hs_err_pid*
16+
17+
# build files
18+
**/target
19+
target
20+
.gradle
21+
build
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# OpenAPI Generator Ignore
2+
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
3+
4+
# Use this file to prevent files from being overwritten by the generator.
5+
# The patterns follow closely to .gitignore or .dockerignore.
6+
7+
# As an example, the C# client generator defines ApiClient.cs.
8+
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
9+
#ApiClient.cs
10+
11+
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
12+
#foo/*/qux
13+
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
14+
15+
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
16+
#foo/**/qux
17+
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
18+
19+
# You can also negate patterns with an exclamation (!).
20+
# For example, you can ignore all files in a docs folder with the file extension .md:
21+
#docs/*.md
22+
# Then explicitly reverse the ignore rule for a single file:
23+
#!docs/README.md
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
.github/workflows/maven.yml
2+
.gitignore
3+
.openapi-generator-ignore
4+
.travis.yml
5+
README.md
6+
api/openapi.yaml
7+
build.gradle
8+
build.sbt
9+
docs/AppManagementApi.md
10+
docs/Change.md
11+
docs/ClusterDTO.md
12+
docs/ClusterManagementApi.md
13+
docs/EntityPairKVEntity.md
14+
docs/EnvClusterInfo.md
15+
docs/InstanceManagementApi.md
16+
docs/ItemChangeSets.md
17+
docs/ItemDTO.md
18+
docs/ItemManagementApi.md
19+
docs/KVEntity.md
20+
docs/ListItemDiffs.md
21+
docs/ListReleaseBO.md
22+
docs/MapString.md
23+
docs/NamespaceBranchManagementApi.md
24+
docs/NamespaceGrayDelReleaseDTO.md
25+
docs/NamespaceIdentifier.md
26+
docs/NamespaceManagementApi.md
27+
docs/NamespaceReleaseDTO.md
28+
docs/NamespaceSyncModel.md
29+
docs/NamespaceTextModel.md
30+
docs/OpenAppDTO.md
31+
docs/OpenAppNamespaceDTO.md
32+
docs/OpenClusterDTO.md
33+
docs/OpenCreateAppDTO.md
34+
docs/OpenEnvClusterDTO.md
35+
docs/OpenGrayReleaseRuleDTO.md
36+
docs/OpenGrayReleaseRuleItemDTO.md
37+
docs/OpenInstanceConfigDTO.md
38+
docs/OpenInstanceDTO.md
39+
docs/OpenItemDTO.md
40+
docs/OpenNamespaceDTO.md
41+
docs/OpenNamespaceLockDTO.md
42+
docs/OpenOrganizationDto.md
43+
docs/OpenPageDTOOpenInstanceDTO.md
44+
docs/OpenPageDTOOpenItemDTO.md
45+
docs/OpenReleaseDTO.md
46+
docs/OpenapiV1AppsGet401Response.md
47+
docs/OpenapiV1AppsPost400Response.md
48+
docs/OpenapiV1AppsPostRequest.md
49+
docs/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost200Response.md
50+
docs/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost400Response.md
51+
docs/OpenapiV1EnvsEnvReleasesCompareGet200Response.md
52+
docs/OrganizationManagementApi.md
53+
docs/ReleaseDTO.md
54+
docs/ReleaseManagementApi.md
55+
git_push.sh
56+
gradle.properties
57+
gradle/wrapper/gradle-wrapper.jar
58+
gradle/wrapper/gradle-wrapper.properties
59+
gradlew
60+
gradlew.bat
61+
pom.xml
62+
settings.gradle
63+
src/main/AndroidManifest.xml
64+
src/main/java/org/openapitools/client/ApiCallback.java
65+
src/main/java/org/openapitools/client/ApiClient.java
66+
src/main/java/org/openapitools/client/ApiException.java
67+
src/main/java/org/openapitools/client/ApiResponse.java
68+
src/main/java/org/openapitools/client/Configuration.java
69+
src/main/java/org/openapitools/client/GzipRequestInterceptor.java
70+
src/main/java/org/openapitools/client/JSON.java
71+
src/main/java/org/openapitools/client/Pair.java
72+
src/main/java/org/openapitools/client/ProgressRequestBody.java
73+
src/main/java/org/openapitools/client/ProgressResponseBody.java
74+
src/main/java/org/openapitools/client/ServerConfiguration.java
75+
src/main/java/org/openapitools/client/ServerVariable.java
76+
src/main/java/org/openapitools/client/StringUtil.java
77+
src/main/java/org/openapitools/client/api/AppManagementApi.java
78+
src/main/java/org/openapitools/client/api/ClusterManagementApi.java
79+
src/main/java/org/openapitools/client/api/InstanceManagementApi.java
80+
src/main/java/org/openapitools/client/api/ItemManagementApi.java
81+
src/main/java/org/openapitools/client/api/NamespaceBranchManagementApi.java
82+
src/main/java/org/openapitools/client/api/NamespaceManagementApi.java
83+
src/main/java/org/openapitools/client/api/OrganizationManagementApi.java
84+
src/main/java/org/openapitools/client/api/ReleaseManagementApi.java
85+
src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
86+
src/main/java/org/openapitools/client/auth/Authentication.java
87+
src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
88+
src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
89+
src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
90+
src/main/java/org/openapitools/client/model/Change.java
91+
src/main/java/org/openapitools/client/model/ClusterDTO.java
92+
src/main/java/org/openapitools/client/model/EntityPairKVEntity.java
93+
src/main/java/org/openapitools/client/model/EnvClusterInfo.java
94+
src/main/java/org/openapitools/client/model/ItemChangeSets.java
95+
src/main/java/org/openapitools/client/model/ItemDTO.java
96+
src/main/java/org/openapitools/client/model/KVEntity.java
97+
src/main/java/org/openapitools/client/model/ListItemDiffs.java
98+
src/main/java/org/openapitools/client/model/ListReleaseBO.java
99+
src/main/java/org/openapitools/client/model/MapString.java
100+
src/main/java/org/openapitools/client/model/NamespaceGrayDelReleaseDTO.java
101+
src/main/java/org/openapitools/client/model/NamespaceIdentifier.java
102+
src/main/java/org/openapitools/client/model/NamespaceReleaseDTO.java
103+
src/main/java/org/openapitools/client/model/NamespaceSyncModel.java
104+
src/main/java/org/openapitools/client/model/NamespaceTextModel.java
105+
src/main/java/org/openapitools/client/model/OpenAppDTO.java
106+
src/main/java/org/openapitools/client/model/OpenAppNamespaceDTO.java
107+
src/main/java/org/openapitools/client/model/OpenClusterDTO.java
108+
src/main/java/org/openapitools/client/model/OpenCreateAppDTO.java
109+
src/main/java/org/openapitools/client/model/OpenEnvClusterDTO.java
110+
src/main/java/org/openapitools/client/model/OpenGrayReleaseRuleDTO.java
111+
src/main/java/org/openapitools/client/model/OpenGrayReleaseRuleItemDTO.java
112+
src/main/java/org/openapitools/client/model/OpenInstanceConfigDTO.java
113+
src/main/java/org/openapitools/client/model/OpenInstanceDTO.java
114+
src/main/java/org/openapitools/client/model/OpenItemDTO.java
115+
src/main/java/org/openapitools/client/model/OpenNamespaceDTO.java
116+
src/main/java/org/openapitools/client/model/OpenNamespaceLockDTO.java
117+
src/main/java/org/openapitools/client/model/OpenOrganizationDto.java
118+
src/main/java/org/openapitools/client/model/OpenPageDTOOpenInstanceDTO.java
119+
src/main/java/org/openapitools/client/model/OpenPageDTOOpenItemDTO.java
120+
src/main/java/org/openapitools/client/model/OpenReleaseDTO.java
121+
src/main/java/org/openapitools/client/model/OpenapiV1AppsGet401Response.java
122+
src/main/java/org/openapitools/client/model/OpenapiV1AppsPost400Response.java
123+
src/main/java/org/openapitools/client/model/OpenapiV1AppsPostRequest.java
124+
src/main/java/org/openapitools/client/model/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost200Response.java
125+
src/main/java/org/openapitools/client/model/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost400Response.java
126+
src/main/java/org/openapitools/client/model/OpenapiV1EnvsEnvReleasesCompareGet200Response.java
127+
src/main/java/org/openapitools/client/model/ReleaseDTO.java
128+
src/test/java/org/openapitools/client/api/AppManagementApiTest.java
129+
src/test/java/org/openapitools/client/api/ClusterManagementApiTest.java
130+
src/test/java/org/openapitools/client/api/InstanceManagementApiTest.java
131+
src/test/java/org/openapitools/client/api/ItemManagementApiTest.java
132+
src/test/java/org/openapitools/client/api/NamespaceBranchManagementApiTest.java
133+
src/test/java/org/openapitools/client/api/NamespaceManagementApiTest.java
134+
src/test/java/org/openapitools/client/api/OrganizationManagementApiTest.java
135+
src/test/java/org/openapitools/client/api/ReleaseManagementApiTest.java
136+
src/test/java/org/openapitools/client/model/ChangeTest.java
137+
src/test/java/org/openapitools/client/model/ClusterDTOTest.java
138+
src/test/java/org/openapitools/client/model/EntityPairKVEntityTest.java
139+
src/test/java/org/openapitools/client/model/EnvClusterInfoTest.java
140+
src/test/java/org/openapitools/client/model/ItemChangeSetsTest.java
141+
src/test/java/org/openapitools/client/model/ItemDTOTest.java
142+
src/test/java/org/openapitools/client/model/KVEntityTest.java
143+
src/test/java/org/openapitools/client/model/ListItemDiffsTest.java
144+
src/test/java/org/openapitools/client/model/ListReleaseBOTest.java
145+
src/test/java/org/openapitools/client/model/MapStringTest.java
146+
src/test/java/org/openapitools/client/model/NamespaceGrayDelReleaseDTOTest.java
147+
src/test/java/org/openapitools/client/model/NamespaceIdentifierTest.java
148+
src/test/java/org/openapitools/client/model/NamespaceReleaseDTOTest.java
149+
src/test/java/org/openapitools/client/model/NamespaceSyncModelTest.java
150+
src/test/java/org/openapitools/client/model/NamespaceTextModelTest.java
151+
src/test/java/org/openapitools/client/model/OpenAppDTOTest.java
152+
src/test/java/org/openapitools/client/model/OpenAppNamespaceDTOTest.java
153+
src/test/java/org/openapitools/client/model/OpenClusterDTOTest.java
154+
src/test/java/org/openapitools/client/model/OpenCreateAppDTOTest.java
155+
src/test/java/org/openapitools/client/model/OpenEnvClusterDTOTest.java
156+
src/test/java/org/openapitools/client/model/OpenGrayReleaseRuleDTOTest.java
157+
src/test/java/org/openapitools/client/model/OpenGrayReleaseRuleItemDTOTest.java
158+
src/test/java/org/openapitools/client/model/OpenInstanceConfigDTOTest.java
159+
src/test/java/org/openapitools/client/model/OpenInstanceDTOTest.java
160+
src/test/java/org/openapitools/client/model/OpenItemDTOTest.java
161+
src/test/java/org/openapitools/client/model/OpenNamespaceDTOTest.java
162+
src/test/java/org/openapitools/client/model/OpenNamespaceLockDTOTest.java
163+
src/test/java/org/openapitools/client/model/OpenOrganizationDtoTest.java
164+
src/test/java/org/openapitools/client/model/OpenPageDTOOpenInstanceDTOTest.java
165+
src/test/java/org/openapitools/client/model/OpenPageDTOOpenItemDTOTest.java
166+
src/test/java/org/openapitools/client/model/OpenReleaseDTOTest.java
167+
src/test/java/org/openapitools/client/model/OpenapiV1AppsGet401ResponseTest.java
168+
src/test/java/org/openapitools/client/model/OpenapiV1AppsPost400ResponseTest.java
169+
src/test/java/org/openapitools/client/model/OpenapiV1AppsPostRequestTest.java
170+
src/test/java/org/openapitools/client/model/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost200ResponseTest.java
171+
src/test/java/org/openapitools/client/model/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost400ResponseTest.java
172+
src/test/java/org/openapitools/client/model/OpenapiV1EnvsEnvReleasesCompareGet200ResponseTest.java
173+
src/test/java/org/openapitools/client/model/ReleaseDTOTest.java
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
7.15.0

java-client/.travis.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#
2+
# Generated by OpenAPI Generator: https://openapi-generator.tech
3+
#
4+
# Ref: https://docs.travis-ci.com/user/languages/java/
5+
#
6+
language: java
7+
jdk:
8+
- openjdk12
9+
- openjdk11
10+
- openjdk10
11+
- openjdk9
12+
- openjdk8
13+
before_install:
14+
# ensure gradlew has proper permission
15+
- chmod a+x ./gradlew
16+
script:
17+
# test using maven
18+
#- mvn test
19+
# test using gradle
20+
- gradle test
21+
# test using sbt
22+
# - sbt test

0 commit comments

Comments
 (0)