You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:56:49 UTC

[sling-org-apache-sling-pipes] 05/31: SLING-5431 - PipeBinding NPE when evaluating null expression

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

rombert pushed a commit to annotated tag org.apache.sling.pipes-0.0.10
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-pipes.git

commit 6d828c6fda65686566c54579adc531c3e62fdf27
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Fri Jan 15 15:29:37 2016 +0000

    SLING-5431 - PipeBinding NPE when evaluating null expression
    
    Submitted-By: Nicolas Peltier
    
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes@1724841 13f79535-47bb-0310-9956-ffa450edef68
---
 .../java/org/apache/sling/pipes/PipeBindings.java  |  2 +-
 .../org/apache/sling/pipes/PipeBindingsTest.java   | 24 ++++++++++++++--------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/apache/sling/pipes/PipeBindings.java b/src/main/java/org/apache/sling/pipes/PipeBindings.java
index 6cb4ac2..0331d48 100644
--- a/src/main/java/org/apache/sling/pipes/PipeBindings.java
+++ b/src/main/java/org/apache/sling/pipes/PipeBindings.java
@@ -227,7 +227,7 @@ public class PipeBindings {
     public Object instantiateObject(String expr){
         try {
             Object result = evaluate(expr);
-            if (! result.getClass().getName().startsWith("java.lang.")) {
+            if (result != null && ! result.getClass().getName().startsWith("java.lang.")) {
                 //special case of the date in which case jdk.nashorn.api.scripting.ScriptObjectMirror will
                 //be returned
                 JsDate jsDate = ((Invocable) engine).getInterface(result, JsDate.class);
diff --git a/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java b/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
index 5403e99..8e548f6 100644
--- a/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
+++ b/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
@@ -41,10 +41,14 @@ public class PipeBindingsTest extends AbstractPipeTest {
         context.load().json("/container.json", PATH_PIPE);
     }
 
+    private PipeBindings getDummyTreeBinding(){
+        Resource resource = context.resourceResolver().getResource(PATH_PIPE + "/" + ContainerPipeTest.NN_DUMMYTREE);
+        return new PipeBindings(resource);
+    }
+
     @Test
     public void testEvaluateSimpleString() throws ScriptException {
-        Resource resource = context.resourceResolver().getResource(PATH_PIPE + "/" + ContainerPipeTest.NN_DUMMYTREE);
-        PipeBindings bindings = new PipeBindings(resource);
+        PipeBindings bindings = getDummyTreeBinding();
         String simple = "simple string";
         String evaluated = (String)bindings.evaluate(simple);
         assertEquals("evaluated should be the same than input", evaluated, simple);
@@ -52,8 +56,7 @@ public class PipeBindingsTest extends AbstractPipeTest {
 
     @Test
     public void computeEcma5Expression() {
-        Resource resource = context.resourceResolver().getResource(PATH_PIPE + "/" + ContainerPipeTest.NN_DUMMYTREE);
-        PipeBindings bindings = new PipeBindings(resource);
+        PipeBindings bindings = getDummyTreeBinding();
         Map<String,String> expressions = new HashMap<>();
         expressions.put("blah ${blah} blah", "'blah ' + blah + ' blah'");
         expressions.put("${blah}", "blah");
@@ -68,8 +71,7 @@ public class PipeBindingsTest extends AbstractPipeTest {
 
     @Test
     public void testInstantiateExpression() throws Exception {
-        Resource resource = context.resourceResolver().getResource(PATH_PIPE + "/" + ContainerPipeTest.NN_DUMMYTREE);
-        PipeBindings bindings = new PipeBindings(resource);
+        PipeBindings bindings = getDummyTreeBinding();
         Map<String, String> testMap = new HashMap<>();
         testMap.put("a", "apricots");
         testMap.put("b", "bananas");
@@ -79,9 +81,15 @@ public class PipeBindingsTest extends AbstractPipeTest {
     }
 
     @Test
+    public void testEvaluateNull() throws Exception {
+        PipeBindings bindings = getDummyTreeBinding();
+        assertNull("${null} object should be instantiated as null", bindings.instantiateObject("${null}"));
+        assertNull("${null} expression should be instantiated as null", bindings.instantiateExpression("${null}"));
+    }
+
+    @Test
     public void testInstantiateObject() throws Exception {
-        Resource resource = context.resourceResolver().getResource(PATH_PIPE + "/" + ContainerPipeTest.NN_DUMMYTREE);
-        PipeBindings bindings = new PipeBindings(resource);
+        PipeBindings bindings = getDummyTreeBinding();
         Map<String, String> testMap = new HashMap<>();
         testMap.put("a", "apricots");
         testMap.put("b", "bananas");

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.