This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/main by this push:
new 4d1672f32be CAUSEWAY-3896: mignotes
4d1672f32be is described below
commit 4d1672f32be3462b5819b2b84012c23d3a19682e
Author: andi-huber <[email protected]>
AuthorDate: Tue Jul 1 16:13:41 2025 +0200
CAUSEWAY-3896: mignotes
---
.../modules/ROOT/pages/2025/3.4.0/mignotes.adoc | 33 +++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git
a/antora/components/relnotes/modules/ROOT/pages/2025/3.4.0/mignotes.adoc
b/antora/components/relnotes/modules/ROOT/pages/2025/3.4.0/mignotes.adoc
index 6c27927f661..4d17780e5fb 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2025/3.4.0/mignotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2025/3.4.0/mignotes.adoc
@@ -3,4 +3,35 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
:page-partial:
-No specific migration notes have been recorded to date.
+== Changes to the Wrapper Factory API
+
+Control classes `SynControl` and `AsyncControl` have been slightly modified,
+those are immutable now but do support 'withers' to setup the desired control.
+
+Factories `SynControl.control()` and `AsyncControl.control()` were
+renamed to `#defaults()`.
+
+`WrapperFactory.asyncWrap` and other `async*` sibling methods no longer return
a `Future<T>`
+but an `AsyncProxy<T>` which allows interaction with the proxied domain
+in a more type safe manner.
+
+[source,java]
+.Example usage
+----
+// transaction scoped call to retrieve an attached counter entity
+var counter = bookmarkService
+ .lookup(bookmark, Counter.class).orElseThrow();
+
+// returns a Future<Counter>
+var proxy = wrapperFactory.asyncWrap(counter)
+ .applyAsync(Counter::bumpUsingDeclaredAction);
+
+// then later ...
+
+// returns the detached counter entity
+var counter2 = proxy
+ .tryGet(5, TimeUnit.SECONDS) // blocking
+ .valueAsNonNullElseFail();
+
+assertThat(counter2.getNum()).isEqualTo(2L);
+----
\ No newline at end of file