You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2020/08/25 15:18:34 UTC

[sling-org-apache-sling-scripting-sightly-runtime] 01/01: SLING-9314 - NPE in ObjectModel.toBoolean(Object) when object.toString() returns null

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

radu pushed a commit to branch issue/SLING-9314
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly-runtime.git

commit ae475aecde82366db27dfbdee459b91fccd4000e
Author: Radu Cotescu <ra...@apache.org>
AuthorDate: Tue Aug 25 17:16:54 2020 +0200

    SLING-9314 - NPE in ObjectModel.toBoolean(Object) when object.toString() returns null
    
    * avoid NPEs from classes which do not correctly override Object#toString()
---
 .../apache/sling/scripting/sightly/render/ObjectModel.java    |  5 ++++-
 .../sling/scripting/sightly/render/ObjectModelTest.java       | 11 +++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java b/src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java
index 3797e00..df651d1 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java
@@ -158,7 +158,10 @@ public final class ObjectModel {
             return !(number.doubleValue() == 0.0);
         }
 
-        String s = object.toString().trim();
+        String s = object.toString();
+        if (s != null) {
+            s = s.trim();
+        }
         if (EMPTY_STRING.equals(s)) {
             return false;
         } else if ("true".equalsIgnoreCase(s) || "false".equalsIgnoreCase(s)) {
diff --git a/src/test/java/org/apache/sling/scripting/sightly/render/ObjectModelTest.java b/src/test/java/org/apache/sling/scripting/sightly/render/ObjectModelTest.java
index 1ec2699..c504a51 100644
--- a/src/test/java/org/apache/sling/scripting/sightly/render/ObjectModelTest.java
+++ b/src/test/java/org/apache/sling/scripting/sightly/render/ObjectModelTest.java
@@ -81,6 +81,17 @@ public class ObjectModelTest {
         assertTrue(ObjectModel.toBoolean(Optional.of(true)));
         assertTrue(ObjectModel.toBoolean(Optional.of("pass")));
         assertTrue(ObjectModel.toBoolean(Optional.of(1)));
+        assertTrue(ObjectModel.toBoolean(new Object()));
+        Map<String, String> map2 = new HashMap<String, String>() {
+            @Override
+            public String toString() {
+                return null;
+            }
+        };
+        assertFalse(ObjectModel.toBoolean(map2));
+        map2.put("one", "entry");
+        assertTrue(ObjectModel.toBoolean(map2));
+
     }
 
     @Test