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 2015/04/16 13:02:50 UTC
svn commit: r1674040 - in /sling/trunk/bundles/scripting/javascript: ./
src/main/java/org/apache/sling/scripting/javascript/helper/
src/main/java/org/apache/sling/scripting/javascript/internal/
src/main/java/org/apache/sling/scripting/javascript/wrappe...
Author: radu
Date: Thu Apr 16 11:02:50 2015
New Revision: 1674040
URL: http://svn.apache.org/r1674040
Log:
SLING-3413 - Extend the JavaScript Resource API
* implemented getChild(String), getChildren(), getName(), getParent(), isResourceType(String), listChildren()
for the JS Resource API
* extended tests
* minor code cleanup
* updated some POM dependencies to next release post-incubator phase
Modified:
sling/trunk/bundles/scripting/javascript/pom.xml
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingGlobal.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngineFactory.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableNode.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptablePrintWriter.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableProperty.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersion.java
sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersionHistory.java
sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/javascript/internal/ScriptEngineHelper.java
sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableNodeTest.java
sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableResourceTest.java
Modified: sling/trunk/bundles/scripting/javascript/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/pom.xml?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/pom.xml (original)
+++ sling/trunk/bundles/scripting/javascript/pom.xml Thu Apr 16 11:02:50 2015
@@ -54,7 +54,7 @@
<configuration>
<instructions>
<Import-Package>
- javax.jcr.*;version=1.0,
+ javax.jcr.*;version=2.0,
*
</Import-Package>
<Export-Package>
@@ -102,17 +102,17 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.0.8</version>
+ <version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.scripting.api</artifactId>
- <version>2.0.2-incubator</version>
+ <version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.resource</artifactId>
- <version>2.0.6</version>
+ <version>2.3.8</version>
<exclusions>
<exclusion>
<groupId>org.apache.jackrabbit</groupId>
@@ -132,7 +132,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.json</artifactId>
- <version>2.0.2-incubator</version>
+ <version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
@@ -149,12 +149,18 @@
<artifactId>org.osgi.compendium</artifactId>
</dependency>
<dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
<dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
</dependency>
<dependency>
<groupId>org.mozilla</groupId>
@@ -165,16 +171,18 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ <scope>provided</scope>
+ </dependency>
<!-- Testing -->
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.testing</artifactId>
- <version>2.0.4-incubator</version>
+ <version>2.0.16</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.scr.annotations</artifactId>
- </dependency>
</dependencies>
</project>
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingGlobal.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingGlobal.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingGlobal.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingGlobal.java Thu Apr 16 11:02:50 2015
@@ -24,6 +24,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.Serializable;
+import java.nio.charset.Charset;
import org.apache.sling.api.resource.NonExistingResource;
import org.apache.sling.api.resource.Resource;
@@ -76,7 +77,7 @@ public class SlingGlobal implements Seri
private static final int LAST_SCOPE_FUNCTION_ID = 3;
/** default log */
- private final Logger defaultLog = LoggerFactory.getLogger(getClass());
+ private static final Logger defaultLog = LoggerFactory.getLogger(SlingGlobal.class);
public static void init(Scriptable scope, boolean sealed) {
SlingGlobal obj = new SlingGlobal();
@@ -189,7 +190,7 @@ public class SlingGlobal implements Seri
try {
// reader for the stream
- Reader scriptReader = new InputStreamReader(scriptStream);
+ Reader scriptReader = new InputStreamReader(scriptStream, Charset.forName("UTF-8"));
// check whether we have to wrap the basic reader
if (scriptName
@@ -287,7 +288,7 @@ public class SlingGlobal implements Seri
try {
// reader for the stream
- Reader scriptReader = new InputStreamReader(scriptStream);
+ Reader scriptReader = new InputStreamReader(scriptStream, Charset.forName("UTF-8"));
// check whether we have to wrap the basic reader
if (scriptName
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngineFactory.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngineFactory.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngineFactory.java Thu Apr 16 11:02:50 2015
@@ -21,10 +21,11 @@ package org.apache.sling.scripting.javas
import java.util.Dictionary;
import java.util.HashSet;
import java.util.Set;
-
import javax.script.ScriptEngine;
+import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
@@ -197,7 +198,7 @@ public class RhinoJavaScriptEngineFactor
}
// ---------- SCR integration
-
+ @Activate
protected void activate(ComponentContext context) {
Dictionary<?, ?> props = context.getProperties();
boolean debugging = getProperty(
@@ -236,6 +237,7 @@ public class RhinoJavaScriptEngineFactor
log.info("Activated with optimization level {}", optimizationLevel);
}
+ @Deactivate
protected void deactivate(ComponentContext context) {
// remove the root scope
@@ -279,7 +281,7 @@ public class RhinoJavaScriptEngineFactor
if (SlingWrapper.class.isAssignableFrom(clazz)) {
// SlingWrappers can map to several classes if needed
- final SlingWrapper hostWrapper = (SlingWrapper) clazz.newInstance();;
+ final SlingWrapper hostWrapper = (SlingWrapper) clazz.newInstance();
for (Class<?> c : hostWrapper.getWrappedClasses()) {
getWrapFactory().registerWrapper(c,
hostWrapper.getClassName());
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java Thu Apr 16 11:02:50 2015
@@ -32,7 +32,7 @@ public class ScriptableCalendar extends
private SimpleDateFormat calendarFormat;
/** Calendar is a class, not an interface - so we need to enumerate possible implementations here */
- public static final Class<?> [] WRAPPED_CLASSES = { Calendar.class, GregorianCalendar.class };
+ private static final Class<?> [] WRAPPED_CLASSES = { Calendar.class, GregorianCalendar.class };
/**
* The wrapped Calendar. Will be {@code null} if the
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableNode.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableNode.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableNode.java Thu Apr 16 11:02:50 2015
@@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory;
public class ScriptableNode extends ScriptableBase implements SlingWrapper {
public static final String CLASSNAME = "Node";
- public static final Class<?> [] WRAPPED_CLASSES = { Node.class };
+ private static final Class<?> [] WRAPPED_CLASSES = { Node.class };
/** default log */
private final Logger log = LoggerFactory.getLogger(getClass());
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptablePrintWriter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptablePrintWriter.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptablePrintWriter.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptablePrintWriter.java Thu Apr 16 11:02:50 2015
@@ -33,7 +33,7 @@ import org.mozilla.javascript.Wrapper;
public class ScriptablePrintWriter extends ScriptableObject implements SlingWrapper {
public static final String CLASSNAME = "PrintWriter";
- public static final Class<?> [] WRAPPED_CLASSES = { PrintWriter.class };
+ private static final Class<?> [] WRAPPED_CLASSES = { PrintWriter.class };
private PrintWriter writer;
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableProperty.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableProperty.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableProperty.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableProperty.java Thu Apr 16 11:02:50 2015
@@ -33,7 +33,7 @@ public class ScriptableProperty extends
public static final String CLASSNAME = "Property";
- public static final Class<?>[] WRAPPED_CLASSES = { Property.class };
+ private static final Class<?>[] WRAPPED_CLASSES = { Property.class };
/**
* The wrapped JCR Property instance. Will be {@code null} if the
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java Thu Apr 16 11:02:50 2015
@@ -16,15 +16,19 @@
*/
package org.apache.sling.scripting.javascript.wrapper;
+import org.apache.commons.collections.IteratorUtils;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.scripting.javascript.SlingWrapper;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
+import org.mozilla.javascript.NativeArray;
import org.mozilla.javascript.ScriptRuntime;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
import org.mozilla.javascript.Undefined;
import org.mozilla.javascript.Wrapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Resource in JavaScript has following signature: [Object] getData(); [Object]
@@ -34,9 +38,11 @@ import org.mozilla.javascript.Wrapper;
public class ScriptableResource extends ScriptableObject implements
SlingWrapper {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ScriptableResource.class);
+
public static final String CLASSNAME = "Resource";
- public static final Class<?>[] WRAPPED_CLASSES = { Resource.class };
+ private static final Class<?>[] WRAPPED_CLASSES = { Resource.class };
private Resource resource;
@@ -52,14 +58,28 @@ public class ScriptableResource extends
}
/**
- * Mapps getPath() method as path property.
+ * Maps getName() method as name property.
+ */
+ public String jsGet_name() {
+ return this.jsFunction_getName();
+ }
+
+ /**
+ * Maps getName() method as getName() method.
+ */
+ public String jsFunction_getName() {
+ return resource.getName();
+ }
+
+ /**
+ * Maps getPath() method as path property.
*/
public String jsGet_path() {
return this.jsFunction_getPath();
}
/**
- * Mapps getPath() method as getPath() method.
+ * Maps getPath() method as getPath() method.
*/
public String jsFunction_getPath() {
return resource.getPath();
@@ -91,6 +111,18 @@ public class ScriptableResource extends
return resource.getResourceType();
}
+ public NativeArray jsFunction_listChildren() {
+ return jsFunction_getChildren();
+ }
+
+ public NativeArray jsFunction_getChildren() {
+ return new NativeArray(IteratorUtils.toArray(resource.listChildren()));
+ }
+
+ public Object jsFunction_getParent() {
+ return resource.getParent();
+ }
+
/**
* Maps getResourceSuperType() to resourceSuperType property.
*/
@@ -105,6 +137,10 @@ public class ScriptableResource extends
return resource.getResourceSuperType();
}
+ public boolean jsFunction_isResourceType(String type) {
+ return resource.isResourceType(type);
+ }
+
/**
* Maps getResourceMetadata() to meta property. This property is deprecated
* since it does not correctly map the getResourceType() method name to a
@@ -158,6 +194,16 @@ public class ScriptableResource extends
}
/**
+ * Maps getChild(String childPath) to getChild method.
+ *
+ * @param childPath the child path
+ * @return the child resource if one exists at {@code childPath} or {@code null}
+ */
+ public Object jsFunction_getChild(String childPath) {
+ return resource.getChild(childPath);
+ }
+
+ /**
* Helper method to easily retrieve the default adapted object of the
* resource. In case of Object Content Mapping support, this method will
* return the correctly mapped content object for this resource.
@@ -217,7 +263,7 @@ public class ScriptableResource extends
}
adapter = loader.loadClass(className);
} catch (Exception e) {
- // TODO: log exception
+ LOGGER.error("Unable to adapt object.", e);
}
}
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersion.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersion.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersion.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersion.java Thu Apr 16 11:02:50 2015
@@ -23,7 +23,7 @@ import javax.jcr.version.Version;
public class ScriptableVersion extends ScriptableNode {
public static final String CLASSNAME = "Version";
- public static final Class<?> [] WRAPPED_CLASSES = { Version.class };
+ private static final Class<?> [] WRAPPED_CLASSES = { Version.class };
private Version version;
Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersionHistory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersionHistory.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersionHistory.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableVersionHistory.java Thu Apr 16 11:02:50 2015
@@ -23,7 +23,7 @@ import javax.jcr.version.VersionHistory;
public class ScriptableVersionHistory extends ScriptableNode {
public static final String CLASSNAME = "VersionHistory";
- public static final Class<?> [] WRAPPED_CLASSES = { VersionHistory.class };
+ private static final Class<?> [] WRAPPED_CLASSES = { VersionHistory.class };
private VersionHistory versionHistory;
Modified: sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/javascript/internal/ScriptEngineHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/javascript/internal/ScriptEngineHelper.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/javascript/internal/ScriptEngineHelper.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/javascript/internal/ScriptEngineHelper.java Thu Apr 16 11:02:50 2015
@@ -34,6 +34,7 @@ import javax.script.ScriptException;
import javax.script.SimpleBindings;
import javax.script.SimpleScriptContext;
+import org.apache.sling.commons.testing.osgi.MockBundle;
import org.apache.sling.commons.testing.osgi.MockComponentContext;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ScriptableObject;
@@ -121,7 +122,7 @@ public class ScriptEngineHelper {
private static class RhinoMockComponentContext extends MockComponentContext {
private RhinoMockComponentContext() {
- super(null, null);
+ super(new MockBundle(0));
}
@Override
Modified: sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableNodeTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableNodeTest.java?rev=1674040&r1=1674039&r2=1674040&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableNodeTest.java (original)
+++ sling/trunk/bundles/scripting/javascript/src/test/java/org/apache/sling/scripting/wrapper/ScriptableNodeTest.java Thu Apr 16 11:02:50 2015
@@ -140,8 +140,8 @@ public class ScriptableNodeTest extends
public void testViaPropertyNoWrappersCal() throws Exception {
assertEquals(
- testCal,
- script.eval("calProperty.value.getDate()", data)
+ testCal.getTimeInMillis(),
+ script.eval("calProperty.value.getDate().getTimeInMillis()", data)
);
}
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=1674040&r1=1674039&r2=1674040&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 Thu Apr 16 11:02:50 2015
@@ -93,6 +93,53 @@ public class ScriptableResourceTest exte
data));
}
+ public void testChildren() throws Exception {
+ node.addNode("first-child");
+ node.addNode("second-child");
+
+ final ScriptEngineHelper.Data data = new ScriptEngineHelper.Data();
+ data.put("resource", new TestResource(node));
+
+ assertEquals(2.0, script.eval("resource.getChildren().length", data));
+ assertEquals("first-child", script.eval("resource.getChildren()[0].name", data));
+ }
+
+ public void testListChildren() throws Exception {
+ Node firstChild = node.addNode("first-child");
+ node.addNode("second-child");
+
+ final ScriptEngineHelper.Data data = new ScriptEngineHelper.Data();
+ data.put("resource", new TestResource(node));
+
+ assertEquals(2.0, script.eval("resource.listChildren().length", data));
+ assertEquals(firstChild.getPath(), script.eval("resource.listChildren()[0].path", data));
+ }
+
+ public void testGetChild() throws Exception {
+ Node child = node.addNode("child");
+
+ final ScriptEngineHelper.Data data = new ScriptEngineHelper.Data();
+ data.put("resource", new TestResource(node));
+
+ assertEquals(child.getPath(), script.eval("resource.getChild('./child').path", data));
+ }
+
+ public void testGetParent() throws Exception {
+ Node child = node.addNode("child");
+ Node grandChild = child.addNode("grandchild");
+
+ final ScriptEngineHelper.Data data = new ScriptEngineHelper.Data();
+ data.put("resource", new TestResource(grandChild));
+
+ assertEquals(child.getPath(), script.eval("resource.getParent().getPath()", data));
+ }
+
+ public void testIsResourceType() throws Exception {
+ final ScriptEngineHelper.Data data = new ScriptEngineHelper.Data();
+ data.put("resource", new TestResource(node));
+ assertEquals(Boolean.TRUE, script.eval("resource.isResourceType('" + RESOURCE_TYPE + "')", data));
+ }
+
public void testResourceSuperType() throws Exception {
// set resource and resource super type
node.setProperty(JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY,