Skip to content

Commit 95b9544

Browse files
committed
Improve code style
1 parent a53de59 commit 95b9544

File tree

6 files changed

+42
-71
lines changed

6 files changed

+42
-71
lines changed

foundation-models/openai/src/main/java/com/sap/ai/sdk/foundationmodels/openai/OpenAiClient.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.sap.ai.sdk.foundationmodels.openai;
22

3+
import static com.sap.ai.sdk.foundationmodels.openai.OpenAiClientException.FACTORY;
34
import static com.sap.ai.sdk.foundationmodels.openai.OpenAiUtils.getOpenAiObjectMapper;
45

56
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -42,7 +43,8 @@
4243
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
4344
public final class OpenAiClient {
4445
private static final String DEFAULT_API_VERSION = "2024-02-01";
45-
static final ObjectMapper JACKSON = getOpenAiObjectMapper();
46+
47+
private static final ObjectMapper JACKSON = getOpenAiObjectMapper();
4648

4749
@Nullable private String systemPrompt = null;
4850

@@ -431,9 +433,7 @@ private <T> T executeRequest(
431433
try {
432434
final var client = ApacheHttpClient5Accessor.getHttpClient(destination);
433435
return client.execute(
434-
request,
435-
new ClientResponseHandler<>(
436-
responseType, OpenAiError.class, new OpenAiExceptionFactory()));
436+
request, new ClientResponseHandler<>(responseType, OpenAiError.class, FACTORY));
437437
} catch (final IOException e) {
438438
throw new OpenAiClientException("Request to OpenAI model failed", e).setHttpRequest(request);
439439
}
@@ -444,8 +444,7 @@ private <D extends StreamedDelta> Stream<D> streamRequest(
444444
final BasicClassicHttpRequest request, @Nonnull final Class<D> deltaType) {
445445
try {
446446
final var client = ApacheHttpClient5Accessor.getHttpClient(destination);
447-
return new ClientStreamingHandler<>(
448-
deltaType, OpenAiError.class, new OpenAiExceptionFactory())
447+
return new ClientStreamingHandler<>(deltaType, OpenAiError.class, FACTORY)
449448
.objectMapper(JACKSON)
450449
.handleStreamingResponse(client.executeOpen(null, request, null));
451450
} catch (final IOException e) {

foundation-models/openai/src/main/java/com/sap/ai/sdk/foundationmodels/openai/OpenAiClientException.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.common.annotations.Beta;
44
import com.sap.ai.sdk.core.common.ClientException;
5+
import com.sap.ai.sdk.core.common.ClientExceptionFactory;
56
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ErrorResponse;
67
import javax.annotation.Nullable;
78
import lombok.experimental.StandardException;
@@ -10,6 +11,9 @@
1011
@StandardException
1112
public class OpenAiClientException extends ClientException {
1213

14+
static final ClientExceptionFactory<OpenAiClientException, OpenAiError> FACTORY =
15+
(message, error, cause) -> new OpenAiClientException(message, cause).setClientError(error);
16+
1317
/**
1418
* Retrieves the {@link ErrorResponse} from the OpenAI service, if available.
1519
*

foundation-models/openai/src/main/java/com/sap/ai/sdk/foundationmodels/openai/OpenAiExceptionFactory.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

orchestration/src/main/java/com/sap/ai/sdk/orchestration/OrchestrationClientException.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,44 @@
22

33
import com.google.common.annotations.Beta;
44
import com.sap.ai.sdk.core.common.ClientException;
5+
import com.sap.ai.sdk.core.common.ClientExceptionFactory;
6+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Input;
57
import com.sap.ai.sdk.orchestration.model.ErrorResponse;
8+
import com.sap.ai.sdk.orchestration.model.GenericModuleResult;
9+
import com.sap.ai.sdk.orchestration.model.ModuleResults;
10+
import java.util.Collections;
11+
import java.util.Map;
612
import java.util.Optional;
13+
import javax.annotation.Nonnull;
714
import javax.annotation.Nullable;
815
import lombok.experimental.StandardException;
916

1017
/** Exception thrown by the {@link OrchestrationClient} in case of an error. */
1118
@StandardException
1219
public class OrchestrationClientException extends ClientException {
1320

21+
static final ClientExceptionFactory<OrchestrationClientException, OrchestrationError> FACTORY =
22+
(message, clientError, cause) -> {
23+
final var details = extractInputFilterDetails(clientError);
24+
if (details.isEmpty()) {
25+
return new OrchestrationClientException(message, cause).setClientError(clientError);
26+
}
27+
return new Input(message, cause).setFilterDetails(details).setClientError(clientError);
28+
};
29+
30+
@SuppressWarnings("unchecked")
31+
@Nonnull
32+
static Map<String, Object> extractInputFilterDetails(@Nullable final OrchestrationError error) {
33+
return Optional.ofNullable(error)
34+
.map(OrchestrationError::getErrorResponse)
35+
.map(ErrorResponse::getModuleResults)
36+
.map(ModuleResults::getInputFiltering)
37+
.map(GenericModuleResult::getData)
38+
.filter(Map.class::isInstance)
39+
.map(map -> (Map<String, Object>) map)
40+
.orElseGet(Collections::emptyMap);
41+
}
42+
1443
/**
1544
* Retrieves the {@link ErrorResponse} from the orchestration service, if available.
1645
*

orchestration/src/main/java/com/sap/ai/sdk/orchestration/OrchestrationExceptionFactory.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

orchestration/src/main/java/com/sap/ai/sdk/orchestration/OrchestrationHttpExecutor.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.sap.ai.sdk.orchestration;
22

3+
import static com.sap.ai.sdk.orchestration.OrchestrationClientException.FACTORY;
34
import static com.sap.ai.sdk.orchestration.OrchestrationJacksonConfiguration.getOrchestrationObjectMapper;
45

56
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -26,6 +27,7 @@
2627
@Slf4j
2728
class OrchestrationHttpExecutor {
2829
private final Supplier<HttpDestination> destinationSupplier;
30+
2931
private static final ObjectMapper JACKSON = getOrchestrationObjectMapper();
3032

3133
OrchestrationHttpExecutor(@Nonnull final Supplier<HttpDestination> destinationSupplier)
@@ -47,8 +49,7 @@ <T> T execute(
4749
val client = getHttpClient();
4850

4951
val handler =
50-
new ClientResponseHandler<>(
51-
responseType, OrchestrationError.class, new OrchestrationExceptionFactory())
52+
new ClientResponseHandler<>(responseType, OrchestrationError.class, FACTORY)
5253
.objectMapper(JACKSON);
5354
return client.execute(request, handler);
5455

@@ -74,9 +75,7 @@ Stream<OrchestrationChatCompletionDelta> stream(@Nonnull final Object payload) {
7475
val client = getHttpClient();
7576

7677
return new ClientStreamingHandler<>(
77-
OrchestrationChatCompletionDelta.class,
78-
OrchestrationError.class,
79-
new OrchestrationExceptionFactory())
78+
OrchestrationChatCompletionDelta.class, OrchestrationError.class, FACTORY)
8079
.objectMapper(JACKSON)
8180
.handleStreamingResponse(client.executeOpen(null, request, null));
8281

0 commit comments

Comments
 (0)