This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch 
deprecate-memoryidempotentrepository-and-memoryagg
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 789db3e5923c294463e47dae85224aa8c44f508e
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Aug 27 15:13:37 2026 +0200

    CAMEL-24463: Deprecate MemoryIdempotentRepository and 
MemoryAggregationRepository
    
    Deprecate MemoryIdempotentRepository and MemoryAggregationRepository in 
favor
    of KeyValueIdempotentRepository and KeyValueAggregationRepository wrapping
    MemoryKeyValueRepository. This is a follow-up to the KeyValueRepository SPI
    introduced in PR #25631.
    
    The deprecated classes continue to work but users are encouraged to migrate 
to
    the new KeyValue-based replacements which provide a uniform abstraction 
that can
    be backed by any store (in-memory, Redis, JDBC, etc.).
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
 .../camel/bean/MemoryAggregationRepository.json    |  2 +-
 .../aggregate/MemoryAggregationRepository.java     |  5 ++++
 .../camel/bean/MemoryIdempotentRepository.json     |  2 +-
 .../idempotent/MemoryIdempotentRepository.java     |  5 ++++
 .../ROOT/pages/camel-4x-upgrade-guide-4_23.adoc    | 32 ++++++++++++++++++++++
 5 files changed, 44 insertions(+), 2 deletions(-)

diff --git 
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryAggregationRepository.json
 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryAggregationRepository.json
index 16fc81255246..db86a28c9e61 100644
--- 
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryAggregationRepository.json
+++ 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryAggregationRepository.json
@@ -6,7 +6,7 @@
     "interfaceType": "org.apache.camel.spi.AggregationRepository",
     "title": "Memory Aggregation Repository",
     "description": "A memory based AggregationRepository which stores Exchange 
in memory only.",
-    "deprecated": false,
+    "deprecated": true,
     "groupId": "org.apache.camel",
     "artifactId": "camel-core-processor",
     "version": "4.23.0-SNAPSHOT",
diff --git 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java
 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java
index 62b0946f4d53..3b31cf11c9e0 100644
--- 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java
+++ 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java
@@ -32,7 +32,12 @@ import org.apache.camel.support.service.ServiceSupport;
  * A memory based {@link org.apache.camel.spi.AggregationRepository} which 
stores {@link Exchange}s in memory only.
  *
  * Supports both optimistic locking and non-optimistic locking modes. Defaults 
to non-optimistic locking mode.
+ *
+ * @deprecated since 4.23.0. Use {@link 
org.apache.camel.support.KeyValueAggregationRepository} wrapping a
+ *             {@link org.apache.camel.support.MemoryKeyValueRepository} 
instead. For example:
+ *             {@code new KeyValueAggregationRepository(new 
MemoryKeyValueRepository())}
  */
+@Deprecated(since = "4.23.0")
 @Metadata(label = "bean",
           description = "A memory based AggregationRepository which stores 
Exchange in memory only.",
           annotations = { 
"interfaceName=org.apache.camel.spi.AggregationRepository" })
diff --git 
a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json
 
b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json
index 690e62c15fc0..cfac3f088734 100644
--- 
a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json
+++ 
b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json
@@ -6,7 +6,7 @@
     "interfaceType": "org.apache.camel.spi.IdempotentRepository",
     "title": "Memory Idempotent Repository",
     "description": "A memory based IdempotentRepository.",
-    "deprecated": false,
+    "deprecated": true,
     "groupId": "org.apache.camel",
     "artifactId": "camel-support",
     "version": "4.23.0-SNAPSHOT",
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/processor/idempotent/MemoryIdempotentRepository.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/processor/idempotent/MemoryIdempotentRepository.java
index 0e0f21be3db4..cd2bbdcdd581 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/processor/idempotent/MemoryIdempotentRepository.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/processor/idempotent/MemoryIdempotentRepository.java
@@ -37,7 +37,12 @@ import org.apache.camel.support.service.ServiceSupport;
  * algorithm.
  * <p/>
  * Care should be taken to use a suitable underlying {@link Map} to avoid this 
class being a memory leak.
+ *
+ * @deprecated since 4.23.0. Use {@link 
org.apache.camel.support.KeyValueIdempotentRepository} wrapping a
+ *             {@link org.apache.camel.support.MemoryKeyValueRepository} 
instead. For example:
+ *             {@code new KeyValueIdempotentRepository(new 
MemoryKeyValueRepository())}
  */
+@Deprecated(since = "4.23.0")
 @Metadata(label = "bean",
           description = "A memory based IdempotentRepository.",
           annotations = { 
"interfaceName=org.apache.camel.spi.IdempotentRepository" })
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc
index a0caf69df188..70c2d8f2ae32 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc
@@ -131,6 +131,38 @@ The component camel-threadpoolfactory-vertx was deprecated 
in 4.21. The componen
 
 `camel-zeebe` component was deprecated in 4.19 and has a straightforward 
replacement with `camel-camunda`. It is removed in 4.23.
 
+=== camel-core - MemoryIdempotentRepository and MemoryAggregationRepository 
deprecated
+
+`MemoryIdempotentRepository` and `MemoryAggregationRepository` are deprecated 
in favor of the new
+`KeyValueIdempotentRepository` and `KeyValueAggregationRepository` adapters 
wrapping a
+`MemoryKeyValueRepository`. The new classes delegate to the 
`KeyValueRepository` SPI introduced in
+4.23, which provides a uniform key-value abstraction that can be backed by any 
store (in-memory,
+Redis, JDBC, etc.).
+
+To migrate from `MemoryIdempotentRepository`:
+
+[source,java]
+----
+// Before
+IdempotentRepository repo = 
MemoryIdempotentRepository.memoryIdempotentRepository();
+
+// After
+IdempotentRepository repo = new KeyValueIdempotentRepository(new 
MemoryKeyValueRepository());
+----
+
+To migrate from `MemoryAggregationRepository`:
+
+[source,java]
+----
+// Before
+AggregationRepository repo = new MemoryAggregationRepository();
+
+// After
+AggregationRepository repo = new KeyValueAggregationRepository(new 
MemoryKeyValueRepository());
+----
+
+The deprecated classes continue to work but will be removed in a future 
release.
+
 === camel-a2a - webhook URL address classification
 
 Push notification webhook URLs are now classified by the address the host 
resolves to, using the

Reply via email to