diff --git a/.github/workflows/e2e-test.yaml b/.github/workflows/e2e-test.yaml
index 272f0a63..e023eb2e 100644
--- a/.github/workflows/e2e-test.yaml
+++ b/.github/workflows/e2e-test.yaml
@@ -32,7 +32,7 @@ jobs:
- name: "Run tests"
run: |
- MVN_ARGS="${{ env.MVN_MULTI_THREADED_ARGS }} surefire:test -pl :e2e-test-app -DskipTests=false"
+ MVN_ARGS="${{ env.MVN_MULTI_THREADED_ARGS }} surefire:test -pl :spring-app -DskipTests=false"
mvn $MVN_ARGS
env:
# See "End-to-end test application instructions" on the README.md to update the secret
@@ -40,7 +40,7 @@ jobs:
- name: "Start Application Locally"
run: |
- cd e2e-test-app
+ cd sample-code/spring-app
mvn spring-boot:run &
timeout=15
while ! nc -z localhost 8080; do
diff --git a/README.md b/README.md
index 4fcd7227..3e6c130f 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ We maintain [a list of currently available and tested AI Core APIs](docs/list-of
- Java 17 or higher
- Maven 3.9 or higher
- if Spring Boot is used, then minimum version 3
-- [Set the AI Core credentials as an environment variable for local testing](#set-ai-core-credentials-as-environment-variable)
+- [Set the AI Core credentials as an environment variable for local testing](#set-credentials-as-dedicated-environment-variable)
### Maven dependencies
@@ -67,7 +67,7 @@ Add the following dependencies to your `pom.xml` file:
```
-See [an example pom in our Spring Boot application](e2e-test-app/pom.xml)
+See [an example pom in our Spring Boot application](sample-code/spring-app/pom.xml)
### Create a Deployment
@@ -88,7 +88,7 @@ public AiDeploymentCreationResponse createDeployment() {
}
```
-See [an example in our Spring Boot application](e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java)
+See [an example in our Spring Boot application](sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java)
### Delete a Deployment
@@ -110,7 +110,7 @@ public AiDeploymentDeletionResponse deleteDeployment(AiDeploymentCreationRespons
}
```
-See [an example in our Spring Boot application](e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java)
+See [an example in our Spring Boot application](sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java)
## OpenAI chat completion
@@ -161,7 +161,7 @@ See [an example in our Spring Boot application](e2e-test-app/src/main/java/com/s
- Java 17 or higher
- Maven 3.9 or higher
- if Spring Boot is used, then minimum version 3
-- [Set the AI Core credentials as an environment variable for local testing](#set-ai-core-credentials-as-environment-variable)
+- [Set the AI Core credentials as an environment variable for local testing](#set-credentials-as-dedicated-environment-variable)
### Maven dependencies
@@ -177,7 +177,7 @@ Add the following dependencies to your `pom.xml` file:
```
-See [an example pom in our Spring Boot application](e2e-test-app/pom.xml)
+See [an example pom in our Spring Boot application](sample-code/spring-app/pom.xml)
### Simple chat completion
@@ -206,7 +206,7 @@ final OpenAiChatCompletionOutput result =
final String resultMessage = result.getContent();
```
-See [an example in our Spring Boot application](e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java)
+See [an example in our Spring Boot application](sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java)
### Chat completion with a model not defined in `OpenAiModel`
@@ -273,7 +273,7 @@ System.out.println("Tokens: " + tokens);
#### Spring Boot example
-Please find [an example in our Spring Boot application](e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java).
+Please find [an example in our Spring Boot application](sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java).
It shows the usage of Spring Boot's `ResponseBodyEmitter` to stream the chat completion delta messages to the frontend in real-time.
## Orchestration chat completion
@@ -309,7 +309,7 @@ It shows the usage of Spring Boot's `ResponseBodyEmitter` to stream the chat com
- Java 17 or higher
- Maven 3.9 or higher
- if Spring Boot is used, then minimum version 3
-- [Set the AI Core credentials as an environment variable for local testing](#set-ai-core-credentials-as-environment-variable)
+- [Set the AI Core credentials as an environment variable for local testing](#set-credentials-as-dedicated-environment-variable)
### Maven dependencies
@@ -325,7 +325,7 @@ Add the following dependencies to your `pom.xml` file:
```
-See [an example pom in our Spring Boot application](e2e-test-app/pom.xml)
+See [an example pom in our Spring Boot application](sample-code/spring-app/pom.xml)
### Chat completion template
@@ -355,7 +355,7 @@ final String messageResult =
result.getOrchestrationResult().getChoices().get(0).getMessage().getContent();
```
-See [an example in our Spring Boot application](e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java)
+See [an example in our Spring Boot application](sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java)
### Messages history
@@ -390,7 +390,7 @@ final String messageResult =
result.getOrchestrationResult().getChoices().get(0).getMessage().getContent();
```
-See [an example in our Spring Boot application](e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java)
+See [an example in our Spring Boot application](sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java)
### Chat completion filter
@@ -454,7 +454,7 @@ final String messageResult =
result.getOrchestrationResult().getChoices().get(0).getMessage().getContent();
```
-See [an example in our Spring Boot application](e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java)
+See [an example in our Spring Boot application](sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java)
### Set model parameters
@@ -571,7 +571,7 @@ export AICORE_SERVICE_KEY='{ "serviceurls": { "AI_API_URL": ...'
### Run the Spring Boot test application
```shell
-cd e2e-test-app
+cd sample-code/spring-app
mvn spring-boot:run
```
diff --git a/pom.xml b/pom.xml
index 6fd85817..fcf6bae5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
core
orchestration
foundation-models/openai
- e2e-test-app
+ sample-code/spring-app
@@ -133,7 +133,7 @@
com.sap.ai.sdk.app
- e2e-test-app
+ spring-app
${project.version}
diff --git a/sample-code/spring-app/README.md b/sample-code/spring-app/README.md
new file mode 100644
index 00000000..6704991d
--- /dev/null
+++ b/sample-code/spring-app/README.md
@@ -0,0 +1,20 @@
+# Sample Code and E2E Test
+
+![e2e-test](https://github.com/SAP/ai-sdk-java/actions/workflows/e2e-test.yaml/badge.svg)
+
+Sample code to demonstrate the usage of the SAP AI SDK.
+Also used as basis for running E2E tests.
+
+## Build, Run, Deploy Locally
+
+Build the project with:
+
+1. `mvn compile`
+2. [Download a service key for your AI Core service instance](../../README.md#set-credentials-as-dedicated-environment-variable)
+3. Create the environment variable `AICORE_SERVICE_KEY`
+4. Run the application with `mvn spring-boot:run`
+5. [See all available endpoints](localhost:8080)
+
+## Run the E2E Test
+
+Trigger the [GitHub Action](https://github.com/SAP/ai-sdk-java/actions/workflows/e2e-test.yml).
diff --git a/e2e-test-app/manifest.yml b/sample-code/spring-app/manifest.yml
similarity index 85%
rename from e2e-test-app/manifest.yml
rename to sample-code/spring-app/manifest.yml
index d80c70a1..d4ce12ac 100644
--- a/e2e-test-app/manifest.yml
+++ b/sample-code/spring-app/manifest.yml
@@ -1,7 +1,7 @@
applications:
- name: e2e-app-java
random-route: true
- path: target/e2e-test-app.jar
+ path: target/spring-app.jar
env:
JBP_CONFIG_OPEN_JDK_JRE: '{ jre: { version: 21.+ } }'
buildpacks:
diff --git a/e2e-test-app/pom.xml b/sample-code/spring-app/pom.xml
similarity index 98%
rename from e2e-test-app/pom.xml
rename to sample-code/spring-app/pom.xml
index 1a0a56b8..ed9c2608 100644
--- a/e2e-test-app/pom.xml
+++ b/sample-code/spring-app/pom.xml
@@ -5,9 +5,10 @@
com.sap.ai.sdk
sdk-parent
0.1.0-SNAPSHOT
+ ../../pom.xml
com.sap.ai.sdk.app
- e2e-test-app
+ spring-app
End-to-end test application
Spring Boot application that tests AI clients when deployed in BTP.
diff --git a/e2e-test-app/src/main/java/com/sap/ai/sdk/app/Application.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/Application.java
similarity index 100%
rename from e2e-test-app/src/main/java/com/sap/ai/sdk/app/Application.java
rename to sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/Application.java
diff --git a/e2e-test-app/src/main/java/com/sap/ai/sdk/app/AsynchronousConfiguration.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/AsynchronousConfiguration.java
similarity index 100%
rename from e2e-test-app/src/main/java/com/sap/ai/sdk/app/AsynchronousConfiguration.java
rename to sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/AsynchronousConfiguration.java
diff --git a/e2e-test-app/src/main/java/com/sap/ai/sdk/app/ControllerExceptionHandler.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/ControllerExceptionHandler.java
similarity index 100%
rename from e2e-test-app/src/main/java/com/sap/ai/sdk/app/ControllerExceptionHandler.java
rename to sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/ControllerExceptionHandler.java
diff --git a/e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java
similarity index 100%
rename from e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java
rename to sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/DeploymentController.java
diff --git a/e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java
similarity index 100%
rename from e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java
rename to sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java
diff --git a/e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java
similarity index 100%
rename from e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java
rename to sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java
diff --git a/e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/ScenarioController.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/ScenarioController.java
similarity index 100%
rename from e2e-test-app/src/main/java/com/sap/ai/sdk/app/controllers/ScenarioController.java
rename to sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/ScenarioController.java
diff --git a/e2e-test-app/src/main/resources/logback-spring.xml b/sample-code/spring-app/src/main/resources/logback-spring.xml
similarity index 100%
rename from e2e-test-app/src/main/resources/logback-spring.xml
rename to sample-code/spring-app/src/main/resources/logback-spring.xml
diff --git a/e2e-test-app/src/main/resources/static/index.html b/sample-code/spring-app/src/main/resources/static/index.html
similarity index 100%
rename from e2e-test-app/src/main/resources/static/index.html
rename to sample-code/spring-app/src/main/resources/static/index.html
diff --git a/e2e-test-app/src/test/java/com/sap/ai/sdk/app/controllers/DeploymentTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/DeploymentTest.java
similarity index 100%
rename from e2e-test-app/src/test/java/com/sap/ai/sdk/app/controllers/DeploymentTest.java
rename to sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/DeploymentTest.java
diff --git a/e2e-test-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java
similarity index 100%
rename from e2e-test-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java
rename to sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java
diff --git a/e2e-test-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java
similarity index 100%
rename from e2e-test-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java
rename to sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java