Improve Jackrabbit inMemory container
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 4 Oct 2011 10:17:10 +0000 (10:17 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 4 Oct 2011 10:17:10 +0000 (10:17 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4791 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java

index 3b83941cfade149844b768a15dc56e1c6d4e4269..a708aadd1d67a6eada7401b8bcf94d3cf95ff8ad 100644 (file)
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.UUID;
 import java.util.concurrent.Executor;
 
 import javax.jcr.Credentials;
@@ -236,6 +237,20 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware {
        /** Lazy init. */
        protected File getHomeDirectory() {
                try {
+                       if (homeDirectory == null) {
+                               if (inMemory) {
+                                       homeDirectory = new File(
+                                                       System.getProperty("java.io.tmpdir")
+                                                                       + File.separator
+                                                                       + System.getProperty("user.name")
+                                                                       + File.separator + "jackrabbit-"
+                                                                       + UUID.randomUUID());
+                                       homeDirectory.mkdirs();
+                                       // will it work if directory is not empty?
+                                       homeDirectory.deleteOnExit();
+                               }
+                       }
+
                        return homeDirectory.getCanonicalFile();
                } catch (IOException e) {
                        throw new ArgeoException("Cannot get canonical file for "