X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjackrabbit%2Ffs%2FJackrabbitMemoryFsProvider.java;h=e3a70d0842165d11a447f19380b67a7e2c77278e;hb=6d8432bcf931c7525ecc4254b2a95e8a413a06f1;hp=47cf33d142de12d8b3a2a848b721c5efe0beba3b;hpb=0c293102b1857cd0eca6b58cbb1a88d0835a2095;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jackrabbit/fs/JackrabbitMemoryFsProvider.java b/org.argeo.jcr/src/org/argeo/jackrabbit/fs/JackrabbitMemoryFsProvider.java index 47cf33d14..e3a70d084 100644 --- a/org.argeo.jcr/src/org/argeo/jackrabbit/fs/JackrabbitMemoryFsProvider.java +++ b/org.argeo.jcr/src/org/argeo/jackrabbit/fs/JackrabbitMemoryFsProvider.java @@ -10,6 +10,8 @@ import java.nio.file.Path; import java.util.HashMap; import java.util.Map; +import javax.jcr.Credentials; +import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; @@ -23,6 +25,13 @@ public class JackrabbitMemoryFsProvider extends AbstractJackrabbitFsProvider { private RepositoryImpl repository; private JcrFileSystem fileSystem; + private Credentials credentials; + + public JackrabbitMemoryFsProvider() { + String username = System.getProperty("user.name"); + credentials = new SimpleCredentials(username, username.toCharArray()); + } + @Override public String getScheme() { return "jcr+memory"; @@ -32,12 +41,11 @@ public class JackrabbitMemoryFsProvider extends AbstractJackrabbitFsProvider { public FileSystem newFileSystem(URI uri, Map env) throws IOException { try { Path tempDir = Files.createTempDirectory("fs-memory"); - URL confUrl = getClass().getResource("fs-memory.xml"); + URL confUrl = JackrabbitMemoryFsProvider.class.getResource("fs-memory.xml"); RepositoryConfig repositoryConfig = RepositoryConfig.create(confUrl.toURI(), tempDir.toString()); repository = RepositoryImpl.create(repositoryConfig); - String username = System.getProperty("user.name"); - Session session = repository.login(new SimpleCredentials(username, username.toCharArray())); - fileSystem = new JcrFileSystem(this, session); + postRepositoryCreation(repository); + fileSystem = new JcrFileSystem(this, repository, credentials); return fileSystem; } catch (RepositoryException | URISyntaxException e) { throw new IOException("Cannot login to repository", e); @@ -61,4 +69,19 @@ public class JackrabbitMemoryFsProvider extends AbstractJackrabbitFsProvider { return fileSystem.getPath(path); } + public Repository getRepository() { + return repository; + } + + public Session login() throws RepositoryException { + return getRepository().login(credentials); + } + + /** + * Called after the repository has been created and before the file system is + * created. + */ + protected void postRepositoryCreation(RepositoryImpl repositoryImpl) throws RepositoryException { + + } }