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

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 61a3358  JUNEAU-241 withX method support.
61a3358 is described below

commit 61a335873fe5848da35f43c175f9259f3e40c287
Author: JamesBognar <[email protected]>
AuthorDate: Fri Sep 25 10:00:51 2020 -0400

    JUNEAU-241 withX method support.
---
 .../org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java   |  3 ++-
 .../src/main/java/org/apache/juneau/BeanMeta.java            |  3 +++
 juneau-doc/docs/ReleaseNotes/8.1.4.html                      | 12 ++++++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
index a648463..78f3ef6 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
@@ -204,8 +204,9 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
                public int getF6() {
                        return f6;
                }
-               public void setF6(int f6) {
+               public A withF6(int f6) {
                        this.f6 = f6;
+                       return this;
                }
 
                public A() {}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
index 2e39f83..350978c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
@@ -755,6 +755,9 @@ public class BeanMeta<T> {
                                        } else if (n.startsWith("set") && 
(rt.isParentOf(c) || rt.is(Void.TYPE))) {
                                                methodType = SETTER;
                                                n = n.substring(3);
+                                       } else if (n.startsWith("with") && 
(rt.isParentOf(c))) {
+                                               methodType = SETTER;
+                                               n = n.substring(4);
                                        } else if (bpName != null) {
                                                methodType = SETTER;
                                                if (bpName.isEmpty()) {
diff --git a/juneau-doc/docs/ReleaseNotes/8.1.4.html 
b/juneau-doc/docs/ReleaseNotes/8.1.4.html
index 7330b58..ef3f802 100644
--- a/juneau-doc/docs/ReleaseNotes/8.1.4.html
+++ b/juneau-doc/docs/ReleaseNotes/8.1.4.html
@@ -248,6 +248,18 @@
                        <li class='ja'>{@link oaj.annotation.Bean#interceptor 
Bean(interceptor)}
                        <li class='jm'>{@link 
oaj.BeanContextBuilder#beanInterceptor(Class,Class)}
                </ul>
+       <li>
+               Fluent setters that follow the <c>withX</c> convention are now 
automatically detected by all parsers.
+               <p class='bpcode w800'>
+       <jc>// A bean with a fluent setter.</jc>
+       <jk>public class</jk> MyBean {
+               <jk>public</jk> MyBean withFoo(String <jv>foo</jv>) {
+                       <jk>this</jk>.<jf>foo</jf> = <jv>foo</jv>;
+                       <jk>return this</jk>;
+               }
+       }
+               </p>
+               Note you could previously use the <ja>@BeanProperty</ja> 
annotation to identify these setters.
 </ul>
 
 <h5 class='topic w800'>juneau-rest-server</h5>

Reply via email to