Skip to content

Commit 356a68f

Browse files
ThomasVitalemarkpollack
authored andcommitted
Remove deprecations in JdbcChatMemory
* Remove deprecated APIs for JdbcChatMemory. * Improve documentation about chat memory vs. chat history. * Fix mismatch between docs vs code for max messages in MessageWindowChatMemory. Signed-off-by: Thomas Vitale <[email protected]>
1 parent 8acf4b9 commit 356a68f

File tree

10 files changed

+16
-628
lines changed

10 files changed

+16
-628
lines changed

auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-jdbc/src/main/java/org/springframework/ai/model/chat/memory/jdbc/autoconfigure/JdbcChatMemoryAutoConfiguration.java

Lines changed: 3 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,15 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323

24-
import org.springframework.ai.chat.memory.ChatMemory;
25-
import org.springframework.ai.chat.memory.MessageWindowChatMemory;
26-
import org.springframework.ai.chat.memory.jdbc.JdbcChatMemory;
27-
import org.springframework.ai.chat.memory.jdbc.JdbcChatMemoryConfig;
2824
import org.springframework.ai.chat.memory.jdbc.JdbcChatMemoryRepository;
2925
import org.springframework.ai.model.chat.memory.autoconfigure.ChatMemoryAutoConfiguration;
3026
import org.springframework.boot.autoconfigure.AutoConfiguration;
3127
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3228
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
33-
import org.springframework.boot.autoconfigure.condition.ConditionMessage;
34-
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
35-
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
29+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
3630
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;
3731
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3832
import org.springframework.context.annotation.Bean;
39-
import org.springframework.context.annotation.ConditionContext;
40-
import org.springframework.context.annotation.Conditional;
41-
import org.springframework.core.type.AnnotatedTypeMetadata;
4233
import org.springframework.jdbc.core.JdbcTemplate;
4334

4435
/**
@@ -59,55 +50,13 @@ JdbcChatMemoryRepository chatMemoryRepository(JdbcTemplate jdbcTemplate) {
5950
return JdbcChatMemoryRepository.builder().jdbcTemplate(jdbcTemplate).build();
6051
}
6152

62-
/**
63-
* @deprecated in favor of building a {@link MessageWindowChatMemory} (or other
64-
* {@link ChatMemory} implementations) with a {@link JdbcChatMemoryRepository}
65-
* instance.
66-
*/
6753
@Bean
6854
@ConditionalOnMissingBean
69-
@Deprecated
70-
JdbcChatMemory chatMemory(JdbcTemplate jdbcTemplate) {
71-
var config = JdbcChatMemoryConfig.builder().jdbcTemplate(jdbcTemplate).build();
72-
return JdbcChatMemory.create(config);
73-
}
74-
75-
@Bean
76-
@ConditionalOnMissingBean
77-
@Conditional(OnSchemaInitializationEnabledCondition.class)
55+
@ConditionalOnProperty(prefix = JdbcChatMemoryProperties.CONFIG_PREFIX, name = "initialize-schema",
56+
havingValue = "true", matchIfMissing = true)
7857
JdbcChatMemoryDataSourceScriptDatabaseInitializer jdbcChatMemoryScriptDatabaseInitializer(DataSource dataSource) {
7958
logger.debug("Initializing schema for JdbcChatMemoryRepository");
8059
return new JdbcChatMemoryDataSourceScriptDatabaseInitializer(dataSource);
8160
}
8261

83-
/**
84-
* Condition to check if the schema initialization is enabled, supporting both
85-
* deprecated and new property.
86-
*
87-
* @deprecated to be removed in 1.0.0-RC1.
88-
*/
89-
@Deprecated
90-
static class OnSchemaInitializationEnabledCondition extends SpringBootCondition {
91-
92-
@Override
93-
public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
94-
Boolean initializeSchemaEnabled = context.getEnvironment()
95-
.getProperty("spring.ai.chat.memory.jdbc.initialize-schema", Boolean.class);
96-
97-
if (initializeSchemaEnabled != null) {
98-
return new ConditionOutcome(initializeSchemaEnabled,
99-
ConditionMessage.forCondition("Enable JDBC Chat Memory Schema Initialization")
100-
.because("spring.ai.chat.memory.jdbc.initialize-schema is " + initializeSchemaEnabled));
101-
}
102-
103-
initializeSchemaEnabled = context.getEnvironment()
104-
.getProperty(JdbcChatMemoryProperties.CONFIG_PREFIX + ".initialize-schema", Boolean.class, true);
105-
106-
return new ConditionOutcome(initializeSchemaEnabled, ConditionMessage
107-
.forCondition("Enable JDBC Chat Memory Schema Initialization")
108-
.because(JdbcChatMemoryProperties.CONFIG_PREFIX + ".initialize-schema is " + initializeSchemaEnabled));
109-
}
110-
111-
}
112-
11362
}

auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-jdbc/src/main/resources/META-INF/additional-spring-configuration-metadata.json

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

auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-jdbc/src/test/java/org/springframework/ai/model/chat/memory/jdbc/autoconfigure/JdbcChatMemoryPostgresqlAutoConfigurationIT.java

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.junit.jupiter.api.Test;
2323

2424
import org.springframework.ai.chat.memory.ChatMemory;
25-
import org.springframework.ai.chat.memory.jdbc.JdbcChatMemory;
2625
import org.springframework.ai.chat.memory.jdbc.JdbcChatMemoryRepository;
2726
import org.springframework.ai.chat.messages.AssistantMessage;
2827
import org.springframework.ai.chat.messages.Message;
@@ -57,58 +56,16 @@ void jdbcChatMemoryScriptDatabaseInitializer_shouldBeLoaded() {
5756

5857
@Test
5958
void jdbcChatMemoryScriptDatabaseInitializer_shouldNotBeLoaded() {
60-
this.contextRunner.withPropertyValues("spring.ai.chat.memory.jdbc.initialize-schema=false")
61-
.run(context -> assertThat(context.containsBean("jdbcChatMemoryScriptDatabaseInitializer")).isFalse());
6259
this.contextRunner.withPropertyValues("spring.ai.chat.memory.repository.jdbc.initialize-schema=false")
6360
.run(context -> assertThat(context.containsBean("jdbcChatMemoryScriptDatabaseInitializer")).isFalse());
6461
}
6562

6663
@Test
67-
void initializeSchemaEnabledWithDeprecatedProperty() {
68-
this.contextRunner
69-
.withPropertyValues("spring.ai.chat.memory.jdbc.initialize-schema=true",
70-
"spring.ai.chat.memory.repository.jdbc.initialize-schema=false")
71-
.run(context -> assertThat(context.containsBean("jdbcChatMemoryScriptDatabaseInitializer")).isTrue());
72-
}
73-
74-
@Test
75-
void initializeSchemaEnabledWithNewProperty() {
64+
void initializeSchemaEnabledWithProperty() {
7665
this.contextRunner.withPropertyValues("spring.ai.chat.memory.repository.jdbc.initialize-schema=true")
7766
.run(context -> assertThat(context.containsBean("jdbcChatMemoryScriptDatabaseInitializer")).isTrue());
7867
}
7968

80-
@Test
81-
void addGetAndClear_shouldAllExecute() {
82-
this.contextRunner.withPropertyValues("spring.ai.chat.memory.jdbc.initialize-schema=true").run(context -> {
83-
var chatMemory = context.getBean(JdbcChatMemory.class);
84-
var conversationId = UUID.randomUUID().toString();
85-
var userMessage = new UserMessage("Message from the user");
86-
87-
chatMemory.add(conversationId, userMessage);
88-
89-
assertThat(chatMemory.get(conversationId, Integer.MAX_VALUE)).hasSize(1);
90-
assertThat(chatMemory.get(conversationId, Integer.MAX_VALUE)).isEqualTo(List.of(userMessage));
91-
92-
var assistantMessage = new AssistantMessage("Message from the assistant");
93-
94-
chatMemory.add(conversationId, List.of(assistantMessage));
95-
96-
assertThat(chatMemory.get(conversationId)).hasSize(2);
97-
assertThat(chatMemory.get(conversationId)).isEqualTo(List.of(userMessage, assistantMessage));
98-
chatMemory.clear(conversationId);
99-
100-
assertThat(chatMemory.get(conversationId, Integer.MAX_VALUE)).isEmpty();
101-
102-
var multipleMessages = List.<Message>of(new UserMessage("Message from the user 1"),
103-
new AssistantMessage("Message from the assistant 1"));
104-
105-
chatMemory.add(conversationId, multipleMessages);
106-
107-
assertThat(chatMemory.get(conversationId, Integer.MAX_VALUE)).hasSize(multipleMessages.size());
108-
assertThat(chatMemory.get(conversationId, Integer.MAX_VALUE)).isEqualTo(multipleMessages);
109-
});
110-
}
111-
11269
@Test
11370
void useAutoConfiguredJdbcChatMemoryRepository() {
11471
this.contextRunner.run(context -> {

memory/spring-ai-model-chat-memory-jdbc/src/main/java/org/springframework/ai/chat/memory/jdbc/JdbcChatMemory.java

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

memory/spring-ai-model-chat-memory-jdbc/src/main/java/org/springframework/ai/chat/memory/jdbc/JdbcChatMemoryConfig.java

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

0 commit comments

Comments
 (0)