You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2009/08/10 18:18:31 UTC
svn commit: r802844 - in /sling/trunk/contrib/scripting/scala:
engine/src/main/java/org/apache/sling/scripting/scala/engine/ScalaScriptEngineFactory.java
interpreter/src/main/scala/org/apache/sling/scripting/scala/interpreter/JcrFS.scala
Author: bdelacretaz
Date: Mon Aug 10 16:18:31 2009
New Revision: 802844
URL: http://svn.apache.org/viewvc?rev=802844&view=rev
Log:
fix failing scala integration tests (/var/classes was not created)
Modified:
sling/trunk/contrib/scripting/scala/engine/src/main/java/org/apache/sling/scripting/scala/engine/ScalaScriptEngineFactory.java
sling/trunk/contrib/scripting/scala/interpreter/src/main/scala/org/apache/sling/scripting/scala/interpreter/JcrFS.scala
Modified: sling/trunk/contrib/scripting/scala/engine/src/main/java/org/apache/sling/scripting/scala/engine/ScalaScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/scala/engine/src/main/java/org/apache/sling/scripting/scala/engine/ScalaScriptEngineFactory.java?rev=802844&r1=802843&r2=802844&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/scala/engine/src/main/java/org/apache/sling/scripting/scala/engine/ScalaScriptEngineFactory.java (original)
+++ sling/trunk/contrib/scripting/scala/engine/src/main/java/org/apache/sling/scripting/scala/engine/ScalaScriptEngineFactory.java Mon Aug 10 16:18:31 2009
@@ -26,6 +26,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
@@ -114,7 +115,7 @@
createFolder(path)),
this);
}
- catch (final RepositoryException e) {
+ catch (final Exception e) {
return new AbstractSlingScriptEngine(this) {
public Object eval(Reader reader, ScriptContext context) throws ScriptException {
throw initCause(new ScriptException("Cannot access output directory: " + path), e);
@@ -174,10 +175,36 @@
return bundleFs;
}
- private AbstractFile createFolder(String path) throws RepositoryException {
+ private AbstractFile createFolder(String path) throws Exception {
Session session = repository.loginAdministrative(null);
- Node node = (Node) session.getItem(path);
- return JcrFS.create(node);
+ try {
+ Node node = deepCreateNode(path, session, "sling:Folder");
+ if(node == null) {
+ throw new Exception("Unable to create node " + path);
+ }
+ return JcrFS.create(node);
+ } finally {
+ if(session != null) {
+ session.logout();
+ }
+ }
+ }
+
+ private Node deepCreateNode(String path, Session session, String nodeType) throws RepositoryException {
+ Node result = null;
+ if(session.itemExists(path)) {
+ final Item it = session.getItem(path);
+ if(it.isNode()) {
+ result = (Node)it;
+ }
+ } else {
+ final int slashPos = path.lastIndexOf("/");
+ final String parentPath = path.substring(0, slashPos);
+ final String childPath = path.substring(slashPos + 1);
+ result = deepCreateNode(parentPath, session, nodeType).addNode(childPath, nodeType);
+ session.save();
+ }
+ return result;
}
private static URL[] getBootUrls(Bundle bundle) {
Modified: sling/trunk/contrib/scripting/scala/interpreter/src/main/scala/org/apache/sling/scripting/scala/interpreter/JcrFS.scala
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/scala/interpreter/src/main/scala/org/apache/sling/scripting/scala/interpreter/JcrFS.scala?rev=802844&r1=802843&r2=802844&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/scala/interpreter/src/main/scala/org/apache/sling/scripting/scala/interpreter/JcrFS.scala (original)
+++ sling/trunk/contrib/scripting/scala/interpreter/src/main/scala/org/apache/sling/scripting/scala/interpreter/JcrFS.scala Mon Aug 10 16:18:31 2009
@@ -35,6 +35,7 @@
def create(node: Node): JcrNode = node.getPrimaryNodeType.getName match {
case "nt:file" => JcrFile(node) // todo fix: dont hc ns prefixes
case "nt:folder" => JcrFolder(node)
+ case "sling:Folder" => JcrFolder(node)
case _ => throw new IOException("Neither file nor folder: " + node.getPath)
}
@@ -250,4 +251,4 @@
}
-}
\ No newline at end of file
+}