You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2013/11/13 06:28:06 UTC
svn commit: r1541393 - in /sling/trunk/bundles/scripting/javascript/src:
main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java
test/java/org/apache/sling/scripting/wrapper/ScriptableResourceTest.java
Author: fmeschbe
Date: Wed Nov 13 05:28:05 2013
New Revision: 1541393
URL: http://svn.apache.org/r1541393
Log:
SLING-3241 Unwrapped any wrapped objects before returning
the result from script evaluation.
Also adapted the ScriptableResourceTest becaused "undefined" is returned
as null now. The test evaluates a comparison to the undefined value and
verifies the result is true.
Modified:
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java
sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableResourceTest.java
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java?rev=1541393&r1=1541392&r2=1541393&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java Wed Nov 13 05:28:05 2013
@@ -36,6 +36,7 @@ import org.mozilla.javascript.JavaScript
import org.mozilla.javascript.ScriptRuntime;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
+import org.mozilla.javascript.Undefined;
import org.mozilla.javascript.WrapFactory;
import org.mozilla.javascript.Wrapper;
import org.slf4j.Logger;
@@ -111,9 +112,15 @@ public class RhinoJavaScriptEngine exten
final int lineNumber = 1;
final Object securityDomain = null;
- return rhinoContext.evaluateReader(scope, scriptReader, scriptName,
+ Object result = rhinoContext.evaluateReader(scope, scriptReader, scriptName,
lineNumber, securityDomain);
+ if (result instanceof Wrapper) {
+ result = ((Wrapper) result).unwrap();
+ }
+
+ return (result instanceof Undefined) ? null : result;
+
} catch (JavaScriptException t) {
// prevent variables to be pushed back in case of errors
Modified: sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableResourceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableResourceTest.java?rev=1541393&r1=1541392&r2=1541393&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableResourceTest.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableResourceTest.java Wed Nov 13 05:28:05 2013
@@ -37,7 +37,6 @@ import org.apache.sling.commons.testing.
import org.apache.sling.jcr.resource.JcrResourceConstants;
import org.apache.sling.scripting.RepositoryScriptingTestBase;
import org.apache.sling.scripting.javascript.internal.ScriptEngineHelper;
-import org.mozilla.javascript.Undefined;
import org.mozilla.javascript.Wrapper;
public class ScriptableResourceTest extends RepositoryScriptingTestBase {
@@ -153,14 +152,10 @@ public class ScriptableResourceTest exte
data.put("resource", new TestResource(node));
// the node to which the resource adapts
- assertEquals(Undefined.instance,
- script.eval("resource.adaptTo()", data));
- assertEquals(Undefined.instance, script.eval("resource.adaptTo(null)",
- data));
- assertEquals(Undefined.instance, script.eval(
- "resource.adaptTo(undefined)", data));
- assertEquals(Undefined.instance, script.eval(
- "resource.adaptTo(Packages.java.util.Date)", data));
+ assertEquals(true, script.eval("resource.adaptTo() == undefined", data));
+ assertEquals(true, script.eval("resource.adaptTo(null) == undefined", data));
+ assertEquals(true, script.eval("resource.adaptTo(undefined) == undefined", data));
+ assertEquals(true, script.eval("resource.adaptTo(Packages.java.util.Date) == undefined", data));
}
private void assertEquals(Node expected, Object actual) {
@@ -279,7 +274,7 @@ public class ScriptableResourceTest exte
}
}
-
+
}
}