Skip to content

Commit 387e239

Browse files
committed
Refactor(observation): add null-safety checks and apply @OverRide annotation
- Added `Assert.notNull(context, "context cannot be null")` in getLowCardinalityKeyValues and getHighCardinalityKeyValues methods to enforce null-safety and avoid potential NPEs. - Applied @OverRide annotation to methods in DefaultChatClientBuilder for consistency and better readability. Signed-off-by: KoreaNirsa <[email protected]>
1 parent c65fdac commit 387e239

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClientBuilder.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,39 +69,47 @@ public DefaultChatClientBuilder(ChatModel chatModel, ObservationRegistry observa
6969
customObservationConvention, Map.of(), null);
7070
}
7171

72+
@Override
7273
public ChatClient build() {
7374
return new DefaultChatClient(this.defaultRequest);
7475
}
7576

77+
@Override
7678
public Builder clone() {
7779
return this.defaultRequest.mutate();
7880
}
7981

82+
@Override
8083
public Builder defaultAdvisors(Advisor... advisors) {
8184
this.defaultRequest.advisors(advisors);
8285
return this;
8386
}
8487

88+
@Override
8589
public Builder defaultAdvisors(Consumer<ChatClient.AdvisorSpec> advisorSpecConsumer) {
8690
this.defaultRequest.advisors(advisorSpecConsumer);
8791
return this;
8892
}
8993

94+
@Override
9095
public Builder defaultAdvisors(List<Advisor> advisors) {
9196
this.defaultRequest.advisors(advisors);
9297
return this;
9398
}
9499

100+
@Override
95101
public Builder defaultOptions(ChatOptions chatOptions) {
96102
this.defaultRequest.options(chatOptions);
97103
return this;
98104
}
99105

106+
@Override
100107
public Builder defaultUser(String text) {
101108
this.defaultRequest.user(text);
102109
return this;
103110
}
104111

112+
@Override
105113
public Builder defaultUser(Resource text, Charset charset) {
106114
Assert.notNull(text, "text cannot be null");
107115
Assert.notNull(charset, "charset cannot be null");
@@ -114,20 +122,24 @@ public Builder defaultUser(Resource text, Charset charset) {
114122
return this;
115123
}
116124

125+
@Override
117126
public Builder defaultUser(Resource text) {
118127
return this.defaultUser(text, Charset.defaultCharset());
119128
}
120129

130+
@Override
121131
public Builder defaultUser(Consumer<PromptUserSpec> userSpecConsumer) {
122132
this.defaultRequest.user(userSpecConsumer);
123133
return this;
124134
}
125135

136+
@Override
126137
public Builder defaultSystem(String text) {
127138
this.defaultRequest.system(text);
128139
return this;
129140
}
130141

142+
@Override
131143
public Builder defaultSystem(Resource text, Charset charset) {
132144
Assert.notNull(text, "text cannot be null");
133145
Assert.notNull(charset, "charset cannot be null");
@@ -140,10 +152,12 @@ public Builder defaultSystem(Resource text, Charset charset) {
140152
return this;
141153
}
142154

155+
@Override
143156
public Builder defaultSystem(Resource text) {
144157
return this.defaultSystem(text, Charset.defaultCharset());
145158
}
146159

160+
@Override
147161
public Builder defaultSystem(Consumer<PromptSystemSpec> systemSpecConsumer) {
148162
this.defaultRequest.system(systemSpecConsumer);
149163
return this;
@@ -179,11 +193,13 @@ public Builder defaultToolCallbacks(ToolCallbackProvider... toolCallbackProvider
179193
return this;
180194
}
181195

196+
@Override
182197
public Builder defaultToolContext(Map<String, Object> toolContext) {
183198
this.defaultRequest.toolContext(toolContext);
184199
return this;
185200
}
186201

202+
@Override
187203
public Builder defaultTemplateRenderer(TemplateRenderer templateRenderer) {
188204
Assert.notNull(templateRenderer, "templateRenderer cannot be null");
189205
this.defaultRequest.templateRenderer(templateRenderer);

spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/DefaultChatClientObservationConvention.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.springframework.ai.observation.ObservabilityHelper;
3030
import org.springframework.ai.observation.conventions.SpringAiKind;
3131
import org.springframework.lang.Nullable;
32+
import org.springframework.util.Assert;
3233
import org.springframework.util.CollectionUtils;
3334
import org.springframework.util.StringUtils;
3435

@@ -66,6 +67,7 @@ public String getContextualName(ChatClientObservationContext context) {
6667

6768
@Override
6869
public KeyValues getLowCardinalityKeyValues(ChatClientObservationContext context) {
70+
Assert.notNull(context, "context cannot be null");
6971
return KeyValues.of(aiOperationType(context), aiProvider(context), springAiKind(), stream(context));
7072
}
7173

@@ -90,6 +92,7 @@ protected KeyValue stream(ChatClientObservationContext context) {
9092

9193
@Override
9294
public KeyValues getHighCardinalityKeyValues(ChatClientObservationContext context) {
95+
Assert.notNull(context, "context cannot be null");
9396
var keyValues = KeyValues.empty();
9497
keyValues = advisors(keyValues, context);
9598
keyValues = conversationId(keyValues, context);

0 commit comments

Comments
 (0)