1 package org
.argeo
.jackrabbit
.fs
;
3 import java
.io
.IOException
;
5 import java
.net
.URISyntaxException
;
7 import java
.nio
.file
.FileSystem
;
8 import java
.nio
.file
.Files
;
9 import java
.nio
.file
.Path
;
10 import java
.util
.HashMap
;
13 import javax
.jcr
.Credentials
;
14 import javax
.jcr
.Repository
;
15 import javax
.jcr
.RepositoryException
;
16 import javax
.jcr
.Session
;
17 import javax
.jcr
.SimpleCredentials
;
19 import org
.apache
.jackrabbit
.core
.RepositoryImpl
;
20 import org
.apache
.jackrabbit
.core
.config
.RepositoryConfig
;
21 import org
.argeo
.jcr
.fs
.JcrFileSystem
;
22 import org
.argeo
.jcr
.fs
.JcrFsException
;
24 public class JackrabbitMemoryFsProvider
extends AbstractJackrabbitFsProvider
{
25 private RepositoryImpl repository
;
26 private JcrFileSystem fileSystem
;
28 private Credentials credentials
;
30 public JackrabbitMemoryFsProvider() {
31 String username
= System
.getProperty("user.name");
32 credentials
= new SimpleCredentials(username
, username
.toCharArray());
36 public String
getScheme() {
41 public FileSystem
newFileSystem(URI uri
, Map
<String
, ?
> env
) throws IOException
{
43 Path tempDir
= Files
.createTempDirectory("fs-memory");
44 URL confUrl
= JackrabbitMemoryFsProvider
.class.getResource("fs-memory.xml");
45 RepositoryConfig repositoryConfig
= RepositoryConfig
.create(confUrl
.toURI(), tempDir
.toString());
46 repository
= RepositoryImpl
.create(repositoryConfig
);
47 postRepositoryCreation(repository
);
48 fileSystem
= new JcrFileSystem(this, repository
, credentials
);
50 } catch (RepositoryException
| URISyntaxException e
) {
51 throw new IOException("Cannot login to repository", e
);
56 public FileSystem
getFileSystem(URI uri
) {
61 public Path
getPath(URI uri
) {
62 String path
= uri
.getPath();
63 if (fileSystem
== null)
65 newFileSystem(uri
, new HashMap
<String
, Object
>());
66 } catch (IOException e
) {
67 throw new JcrFsException("Could not autocreate file system", e
);
69 return fileSystem
.getPath(path
);
72 public Repository
getRepository() {
76 public Session
login() throws RepositoryException
{
77 return getRepository().login(credentials
);
81 * Called after the repository has been created and before the file system is
84 protected void postRepositoryCreation(RepositoryImpl repositoryImpl
) throws RepositoryException
{