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