Skip to content

Commit 3bbab8e

Browse files
committed
Move Jackson to separate class
1 parent d8c3cb5 commit 3bbab8e

File tree

5 files changed

+49
-35
lines changed

5 files changed

+49
-35
lines changed

core/src/main/java/com/sap/ai/sdk/core/AiCoreService.java

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
package com.sap.ai.sdk.core;
22

3-
import static com.fasterxml.jackson.databind.MapperFeature.DEFAULT_VIEW_INCLUSION;
3+
import static com.sap.ai.sdk.core.JacksonConfiguration.getDefaultObjectMapper;
44

5-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
6-
import com.fasterxml.jackson.annotation.JsonInclude;
7-
import com.fasterxml.jackson.annotation.PropertyAccessor;
8-
import com.fasterxml.jackson.databind.DeserializationFeature;
95
import com.fasterxml.jackson.databind.json.JsonMapper;
10-
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
11-
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
126
import com.google.common.annotations.Beta;
137
import com.google.common.collect.Iterables;
148
import com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor;
@@ -237,29 +231,4 @@ HttpDestination build(@Nonnull final String deploymentId) {
237231
.build();
238232
}
239233
}
240-
241-
/**
242-
* Default object mapper used for JSON de-/serialization. <b>Only intended for internal usage
243-
* within this SDK</b>. Largely follows the defaults set by Spring.
244-
*
245-
* @return A new object mapper with the default configuration.
246-
* @see <a
247-
* href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.html">Jackson2ObjectMapperBuilder</a>
248-
*/
249-
@Nonnull
250-
@Beta
251-
public static JsonMapper getDefaultObjectMapper() {
252-
return JsonMapper.builder()
253-
.addModule(new JavaTimeModule())
254-
.addModule(new ParameterNamesModule())
255-
// Disable automatic detection of getters and setters
256-
.visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
257-
.visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
258-
.serializationInclusion(JsonInclude.Include.NON_NULL)
259-
// for generated code unknown properties should always be stored as custom fields
260-
// still added for any non-generated code and additional safety
261-
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
262-
.disable(DEFAULT_VIEW_INCLUSION)
263-
.build();
264-
}
265234
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.sap.ai.sdk.core;
2+
3+
import static com.fasterxml.jackson.databind.MapperFeature.DEFAULT_VIEW_INCLUSION;
4+
5+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
6+
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import com.fasterxml.jackson.annotation.PropertyAccessor;
8+
import com.fasterxml.jackson.databind.DeserializationFeature;
9+
import com.fasterxml.jackson.databind.json.JsonMapper;
10+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
11+
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
12+
import com.google.common.annotations.Beta;
13+
import javax.annotation.Nonnull;
14+
import lombok.AccessLevel;
15+
import lombok.NoArgsConstructor;
16+
17+
/** Internal utility class for getting a default object mapper with preset configuration. */
18+
@NoArgsConstructor(access = AccessLevel.NONE)
19+
public final class JacksonConfiguration {
20+
21+
/**
22+
* Default object mapper used for JSON de-/serialization. <b>Only intended for internal usage
23+
* within this SDK</b>. Largely follows the defaults set by Spring.
24+
*
25+
* @return A new object mapper with the default configuration.
26+
* @see <a
27+
* href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.html">Jackson2ObjectMapperBuilder</a>
28+
*/
29+
@Nonnull
30+
@Beta
31+
public static JsonMapper getDefaultObjectMapper() {
32+
return JsonMapper.builder()
33+
.addModule(new JavaTimeModule())
34+
.addModule(new ParameterNamesModule())
35+
// Disable automatic detection of getters and setters
36+
.visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
37+
.visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
38+
.serializationInclusion(JsonInclude.Include.NON_NULL)
39+
// for generated code unknown properties should always be stored as custom fields
40+
// still added for any non-generated code and additional safety
41+
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
42+
.disable(DEFAULT_VIEW_INCLUSION)
43+
.build();
44+
}
45+
}

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

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

3-
import static com.sap.ai.sdk.core.AiCoreService.getDefaultObjectMapper;
3+
import static com.sap.ai.sdk.core.JacksonConfiguration.getDefaultObjectMapper;
44

55
import com.fasterxml.jackson.core.JsonProcessingException;
66
import com.fasterxml.jackson.databind.ObjectMapper;

foundation-models/openai/src/test/java/com/sap/ai/sdk/foundationmodels/openai/model/OpenAiChatMessageTest.java

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

3-
import static com.sap.ai.sdk.core.AiCoreService.getDefaultObjectMapper;
3+
import static com.sap.ai.sdk.core.JacksonConfiguration.getDefaultObjectMapper;
44
import static com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatMessage.OpenAiChatUserMessage;
55
import static com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatMessage.OpenAiChatUserMessage.ContentPartText;
66
import static com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatMessage.OpenAiChatUserMessage.ImageDetailLevel;

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

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

3-
import static com.sap.ai.sdk.core.AiCoreService.getDefaultObjectMapper;
3+
import static com.sap.ai.sdk.core.JacksonConfiguration.getDefaultObjectMapper;
44

55
import com.fasterxml.jackson.core.JsonProcessingException;
66
import com.fasterxml.jackson.databind.JsonNode;

0 commit comments

Comments
 (0)