Skip to content

Commit cf4fbe0

Browse files
committed
Generate files with snapshot Cloud SDK OpenAPI gen and test
1 parent a157593 commit cf4fbe0

File tree

6 files changed

+41
-26
lines changed

6 files changed

+41
-26
lines changed

core-services/prompt-registry/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,11 @@
152152
<inputSpec>${project.basedir}/src/main/resources/spec/prompt-registry.yaml</inputSpec>
153153
<apiPackage>com.sap.ai.sdk.prompt.registry.client</apiPackage>
154154
<modelPackage>com.sap.ai.sdk.prompt.registry.model</modelPackage>
155+
<typeMappings>
156+
<typeMapping>File=byte[]</typeMapping>
157+
</typeMappings>
155158
<additionalProperties>
159+
<useAbstractionForFiles>true</useAbstractionForFiles>
156160
<pojoBuilderMethodName>create</pojoBuilderMethodName>
157161
<pojoBuildMethodName/>
158162
<pojoConstructorVisibility>protected</pojoConstructorVisibility>

core-services/prompt-registry/src/main/java/com/sap/ai/sdk/prompt/registry/client/OrchestrationConfigsApi.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@
1010
import com.sap.cloud.sdk.services.openapi.apiclient.ApiClient;
1111
import com.sap.cloud.sdk.services.openapi.core.AbstractOpenApiService;
1212
import com.sap.cloud.sdk.services.openapi.core.OpenApiRequestException;
13-
import java.io.File;
1413
import java.util.HashMap;
1514
import java.util.List;
1615
import java.util.Map;
1716
import java.util.UUID;
1817
import javax.annotation.Nonnull;
1918
import javax.annotation.Nullable;
2019
import org.springframework.core.ParameterizedTypeReference;
21-
import org.springframework.core.io.FileSystemResource;
2220
import org.springframework.http.HttpHeaders;
2321
import org.springframework.http.HttpMethod;
2422
import org.springframework.http.MediaType;
@@ -238,11 +236,11 @@ public OrchestrationConfigDeleteResponse deleteOrchestrationConfig(
238236
*
239237
* @param orchestrationConfigId (required) The value for the parameter orchestrationConfigId
240238
* @param aiResourceGroup (optional) Specify a resource group id to use
241-
* @return File
239+
* @return byte[]
242240
* @throws OpenApiRequestException if an error occurs while attempting to invoke the API
243241
*/
244242
@Nonnull
245-
public File exportOrchestrationConfig(
243+
public byte[] exportOrchestrationConfig(
246244
@Nonnull final UUID orchestrationConfigId, @Nullable final String aiResourceGroup)
247245
throws OpenApiRequestException {
248246
final Object localVarPostBody = null;
@@ -278,8 +276,8 @@ public File exportOrchestrationConfig(
278276

279277
final String[] localVarAuthNames = new String[] {};
280278

281-
final ParameterizedTypeReference<File> localVarReturnType =
282-
new ParameterizedTypeReference<File>() {};
279+
final ParameterizedTypeReference<byte[]> localVarReturnType =
280+
new ParameterizedTypeReference<byte[]>() {};
283281
return apiClient.invokeAPI(
284282
localVarPath,
285283
HttpMethod.GET,
@@ -303,11 +301,11 @@ public File exportOrchestrationConfig(
303301
* <p><b>0</b> - Common Error
304302
*
305303
* @param orchestrationConfigId The value for the parameter orchestrationConfigId
306-
* @return File
304+
* @return byte[]
307305
* @throws OpenApiRequestException if an error occurs while attempting to invoke the API
308306
*/
309307
@Nonnull
310-
public File exportOrchestrationConfig(@Nonnull final UUID orchestrationConfigId)
308+
public byte[] exportOrchestrationConfig(@Nonnull final UUID orchestrationConfigId)
311309
throws OpenApiRequestException {
312310
return exportOrchestrationConfig(orchestrationConfigId, null);
313311
}
@@ -423,7 +421,8 @@ public OrchestrationConfigGetResponse getOrchestrationConfigByUuid(
423421
*/
424422
@Nonnull
425423
public OrchestrationConfigPostResponse importOrchestrationConfig(
426-
@Nullable final String aiResourceGroup, @Nullable final File _file)
424+
@Nullable final String aiResourceGroup,
425+
@Nullable final org.springframework.core.io.Resource _file)
427426
throws OpenApiRequestException {
428427
final Object localVarPostBody = null;
429428

@@ -441,7 +440,7 @@ public OrchestrationConfigPostResponse importOrchestrationConfig(
441440
if (aiResourceGroup != null)
442441
localVarHeaderParams.add("AI-Resource-Group", apiClient.parameterToString(aiResourceGroup));
443442

444-
if (_file != null) localVarFormParams.add("file", new FileSystemResource(_file));
443+
if (_file != null) localVarFormParams.add("file", _file);
445444

446445
final String[] localVarAccepts = {"application/json"};
447446
final List<MediaType> localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

core-services/prompt-registry/src/main/java/com/sap/ai/sdk/prompt/registry/client/PromptTemplatesApi.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,13 @@
1212
import com.sap.cloud.sdk.services.openapi.apiclient.ApiClient;
1313
import com.sap.cloud.sdk.services.openapi.core.AbstractOpenApiService;
1414
import com.sap.cloud.sdk.services.openapi.core.OpenApiRequestException;
15-
import java.io.File;
1615
import java.util.HashMap;
1716
import java.util.List;
1817
import java.util.Map;
1918
import java.util.UUID;
2019
import javax.annotation.Nonnull;
2120
import javax.annotation.Nullable;
2221
import org.springframework.core.ParameterizedTypeReference;
23-
import org.springframework.core.io.FileSystemResource;
2422
import org.springframework.http.HttpHeaders;
2523
import org.springframework.http.HttpMethod;
2624
import org.springframework.http.MediaType;
@@ -251,11 +249,11 @@ public PromptTemplateDeleteResponse deletePromptTemplate(@Nonnull final UUID pro
251249
* @param promptTemplateId (required) The value for the parameter promptTemplateId
252250
* @param aiResourceGroup (optional) Specify a resource group id to use
253251
* @param aiResourceGroupScope (optional) Specify whether the resource group scope is to be used
254-
* @return File
252+
* @return byte[]
255253
* @throws OpenApiRequestException if an error occurs while attempting to invoke the API
256254
*/
257255
@Nonnull
258-
public File exportPromptTemplate(
256+
public byte[] exportPromptTemplate(
259257
@Nonnull final UUID promptTemplateId,
260258
@Nullable final String aiResourceGroup,
261259
@Nullable final String aiResourceGroupScope)
@@ -295,8 +293,8 @@ public File exportPromptTemplate(
295293

296294
final String[] localVarAuthNames = new String[] {};
297295

298-
final ParameterizedTypeReference<File> localVarReturnType =
299-
new ParameterizedTypeReference<File>() {};
296+
final ParameterizedTypeReference<byte[]> localVarReturnType =
297+
new ParameterizedTypeReference<byte[]>() {};
300298
return apiClient.invokeAPI(
301299
localVarPath,
302300
HttpMethod.GET,
@@ -320,11 +318,11 @@ public File exportPromptTemplate(
320318
* <p><b>0</b> - Common Error
321319
*
322320
* @param promptTemplateId The value for the parameter promptTemplateId
323-
* @return File
321+
* @return byte[]
324322
* @throws OpenApiRequestException if an error occurs while attempting to invoke the API
325323
*/
326324
@Nonnull
327-
public File exportPromptTemplate(@Nonnull final UUID promptTemplateId)
325+
public byte[] exportPromptTemplate(@Nonnull final UUID promptTemplateId)
328326
throws OpenApiRequestException {
329327
return exportPromptTemplate(promptTemplateId, null, null);
330328
}
@@ -442,7 +440,7 @@ public PromptTemplateGetResponse getPromptTemplateByUuid(@Nonnull final UUID pro
442440
public PromptTemplatePostResponse importPromptTemplate(
443441
@Nullable final String aiResourceGroup,
444442
@Nullable final String aiResourceGroupScope,
445-
@Nullable final File _file)
443+
@Nullable final org.springframework.core.io.Resource _file)
446444
throws OpenApiRequestException {
447445
final Object localVarPostBody = null;
448446

@@ -461,7 +459,7 @@ public PromptTemplatePostResponse importPromptTemplate(
461459
localVarHeaderParams.add(
462460
"AI-Resource-Group-Scope", apiClient.parameterToString(aiResourceGroupScope));
463461

464-
if (_file != null) localVarFormParams.add("file", new FileSystemResource(_file));
462+
if (_file != null) localVarFormParams.add("file", _file);
465463

466464
final String[] localVarAccepts = {"application/json"};
467465
final List<MediaType> localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

sample-code/spring-app/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,11 @@
232232
<artifactId>assertj-core</artifactId>
233233
<scope>test</scope>
234234
</dependency>
235+
<dependency>
236+
<groupId>com.fasterxml.jackson.dataformat</groupId>
237+
<artifactId>jackson-dataformat-yaml</artifactId>
238+
<scope>test</scope>
239+
</dependency>
235240
</dependencies>
236241

237242
<build>

sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/PromptRegistryController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateSubstitutionResponse;
1414
import com.sap.ai.sdk.prompt.registry.model.SingleChatTemplate;
1515
import com.sap.ai.sdk.prompt.registry.spring.SpringAiConverter;
16-
import java.io.File;
1716
import java.io.IOException;
1817
import java.util.List;
1918
import java.util.Map;
@@ -82,11 +81,11 @@ PromptTemplateListResponse history() {
8281
@GetMapping("/importTemplate")
8382
PromptTemplatePostResponse importTemplate() throws IOException {
8483
final Resource template = new ClassPathResource("prompt-template.yaml");
85-
return client.importPromptTemplate("default", null, template.getFile());
84+
return client.importPromptTemplate("default", null, template);
8685
}
8786

8887
@GetMapping("/exportTemplate")
89-
File exportTemplate() throws IOException {
88+
byte[] exportTemplate() throws IOException {
9089
final var template = importTemplate();
9190
return client.exportPromptTemplate(template.getId());
9291
}

sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/PromptRegistryTest.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
57
import com.sap.ai.sdk.prompt.registry.model.PromptTemplate;
68
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateDeleteResponse;
79
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateListResponse;
@@ -11,9 +13,12 @@
1113
import java.io.IOException;
1214
import java.util.List;
1315
import org.junit.jupiter.api.Test;
16+
import org.springframework.core.io.ClassPathResource;
1417

1518
public class PromptRegistryTest {
1619

20+
static final ObjectMapper YAML_MAPPER = new ObjectMapper(new YAMLFactory());
21+
1722
@Test
1823
void listTemplates() {
1924
var controller = new PromptRegistryController();
@@ -53,10 +58,15 @@ void importExportTemplate() throws IOException {
5358
controller.deleteTemplate();
5459

5560
// import
56-
PromptTemplatePostResponse template = controller.importTemplate();
57-
assertThat(template.getMessage()).contains("successful");
61+
var importResult = controller.importTemplate();
62+
assertThat(importResult.getMessage()).contains("successful");
63+
64+
// export
65+
var exportedTemplate = controller.exportTemplate();
5866

59-
// export TODO: NOT WORKING
67+
var importedTemplate = new ClassPathResource("prompt-template.yaml");
68+
var expectedYaml = YAML_MAPPER.readTree(importedTemplate.getContentAsByteArray());
69+
assertThat(YAML_MAPPER.readTree(exportedTemplate)).isEqualTo(expectedYaml);
6070

6171
// cleanup
6272
List<PromptTemplateDeleteResponse> deletedTemplate = controller.deleteTemplate();

0 commit comments

Comments
 (0)