Author: rombert
Date: Fri Jan 15 15:29:37 2016
New Revision: 1724841
URL: http://svn.apache.org/viewvc?rev=1724841&view=rev
Log:
SLING-5431 - PipeBinding NPE when evaluating null expression
Submitted-By: Nicolas Peltier
Modified:
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
Modified:
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java?rev=1724841&r1=1724840&r2=1724841&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java
(original)
+++
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java
Fri Jan 15 15:29:37 2016
@@ -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);
Modified:
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java?rev=1724841&r1=1724840&r2=1724841&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
(original)
+++
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
Fri Jan 15 15:29:37 2016
@@ -41,10 +41,14 @@ public class PipeBindingsTest extends Ab
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 Ab
@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 Ab
@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 Ab
}
@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");