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 23a46be  JUNEAU-234
23a46be is described below

commit 23a46be19ffcae97cf99b04878a0bf24e76b6ea7
Author: JamesBognar <[email protected]>
AuthorDate: Sat May 23 15:55:59 2020 -0400

    JUNEAU-234
    
    BEAN_ignoreInvocationExceptionsOnGetters is not working.
---
 .../main/java/org/apache/juneau/BeanContext.java   |   1 +
 .../java/org/apache/juneau/BeanContextBuilder.java |   1 +
 .../juneau/serializer/SerializerSession.java       |   6 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 136 ++++++++++++++-------
 4 files changed, 98 insertions(+), 46 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 15db6b3..8309975 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -2501,6 +2501,7 @@ public class BeanContext extends Context implements 
MetaProvider {
         *      <jc>// An interface with a single getter.</jc>
         *      <jk>public interface</jk> MyBean {
         *              String getFoo();
+        *              <jk>void</jk> setFoo(String foo);
         *      }
         *
         *      <jc>// Create a parser that uses interface proxies.</jc>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 51d946f..06cc834 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -3626,6 +3626,7 @@ public class BeanContextBuilder extends ContextBuilder {
         *      <jc>// An interface with a single getter.</jc>
         *      <jk>public interface</jk> MyBean {
         *              String getFoo();
+        *              <jk>void</jk> setFoo(String foo);
         *      }
         *
         *      <jc>// Create a parser that uses interface proxies.</jc>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 56a18af..6bc7628 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -254,13 +254,17 @@ public abstract class SerializerSession extends 
BeanTraverseSession {
         *
         * @param p The bean map entry representing the bean property.
         * @param t The throwable that the bean getter threw.
+        * @throws SerializeException Thrown if 
ignoreInvocationExceptionOnGetters is false.
         */
-       protected final void onBeanGetterException(BeanPropertyMeta p, 
Throwable t) {
+       protected final void onBeanGetterException(BeanPropertyMeta p, 
Throwable t) throws SerializeException {
                if (listener != null)
                        listener.onBeanGetterException(this, t, p);
                String prefix = (isDebug() ? getStack(false) + ": " : "");
                addWarning("{0}Could not call getValue() on property ''{1}'' of 
class ''{2}'', exception = {3}", prefix,
                        p.getName(), p.getBeanMeta().getClassMeta(), 
t.getLocalizedMessage());
+               if (! isIgnoreInvocationExceptionsOnGetters())
+                       throw new SerializeException(this, "{0}Could not call 
getValue() on property ''{1}'' of class ''{2}'', exception = {3}", prefix,
+                               p.getName(), p.getBeanMeta().getClassMeta(), 
t.getLocalizedMessage());
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 6b50ead..1b39ec5 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -3385,51 +3385,97 @@ public class RestClientTest {
                }
        }
 
-//     @Test
-//     public void o0_beanContext_() throws Exception {
-//     }
-//     @Override /* GENERATED - BeanContextBuilder */
-//     public <T> MockRestClient example(Class<T> pojoClass, T o) {
-//             super.example(pojoClass, o);
-//             return this;
-//     }
-//
-//     @Test
-//     public void o0_beanContext_() throws Exception {
-//     }
-//     @Override /* GENERATED - BeanContextBuilder */
-//     public <T> MockRestClient exampleJson(Class<T> pojoClass, String json) {
-//             super.exampleJson(pojoClass, json);
-//             return this;
-//     }
-//
-//     @Test
-//     public void o0_beanContext_() throws Exception {
-//     }
-//     @Override /* GENERATED - BeanContextBuilder */
-//     public MockRestClient fluentSetters() {
-//             super.fluentSetters();
-//             return this;
-//     }
-//
-//     @Test
-//     public void o0_beanContext_() throws Exception {
-//     }
-//     @Override /* GENERATED - BeanContextBuilder */
-//     public MockRestClient fluentSetters(Class<?> on) {
-//             super.fluentSetters(on);
-//             return this;
-//     }
-//
-//     @Test
-//     public void o0_beanContext_() throws Exception {
-//     }
-//     @Override /* GENERATED - BeanContextBuilder */
-//     public MockRestClient ignoreInvocationExceptionsOnGetters() {
-//             super.ignoreInvocationExceptionsOnGetters();
-//             return this;
-//     }
-//
+       public static class O38 {
+               private String foo;
+               public String getFoo() {
+                       return foo;
+               }
+               public O38 foo(String foo) {
+                       this.foo = foo;
+                       return this;
+               }
+       }
+
+       @Test
+       public void o038_beanContext_fluentSetters() throws Exception {
+               O38 x = MockRestClient
+                       .create(A.class)
+                       .simpleJson()
+                       .fluentSetters()
+                       .build()
+                       .post("/echoBody", new StringReader("{foo:'1'}"))
+                       .run()
+                       .cacheBody()
+                       .getBody().assertContains("{foo:'1'}")
+                       .getBody().as(O38.class);
+               ;
+               assertEquals("1", x.getFoo());
+
+               x = MockRestClient
+                       .create(A.class)
+                       .simpleJson()
+                       .fluentSetters(O38.class)
+                       .build()
+                       .post("/echoBody", new StringReader("{foo:'1'}"))
+                       .run()
+                       .cacheBody()
+                       .getBody().assertContains("{foo:'1'}")
+                       .getBody().as(O38.class);
+               ;
+               assertEquals("1", x.getFoo());
+       }
+
+       public static class O39 {
+               @SuppressWarnings("unused")
+               private String foo,bar;
+               public String getFoo() {
+                       return foo;
+               }
+               public void setFoo(String foo) {
+                       this.foo = foo;
+               }
+               public String getBar() {
+                       throw new RuntimeException("xxx");
+               }
+               public void setBar(String bar) {
+                       this.bar = bar;
+               }
+               public O39 init() {
+                       this.foo = "1";
+                       this.bar = "2";
+                       return this;
+               }
+       }
+
+       @Test
+       public void o039_beanContext_ignoreInvocationExceptionsOnGetters() 
throws Exception {
+               try {
+                       MockRestClient
+                               .create(A.class)
+                               .simpleJson()
+                               .build()
+                               .post("/echoBody", new O39().init())
+                               .run()
+                       ;
+                       fail("Exception expected.");
+               } catch (RestCallException e) {
+                       
assertTrue(e.getCause(SerializeException.class).getMessage().contains("Could 
not call getValue() on property 'bar'"));
+               }
+
+               O39 x = MockRestClient
+                       .create(A.class)
+                       .simpleJson()
+                       .ignoreInvocationExceptionsOnGetters()
+                       .build()
+                       .post("/echoBody", new O39().init())
+                       .run()
+                       .cacheBody()
+                       .getBody().assertContains("{foo:'1'}")
+                       .getBody().as(O39.class);
+               ;
+               assertEquals("1", x.getFoo());
+       }
+
 //     @Test
 //     public void o0_beanContext_() throws Exception {
 //     }

Reply via email to