]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.jcr/src/org/argeo/jcr/fs/SessionFsProvider.java
Disable debug in file visitor.
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / fs / SessionFsProvider.java
1 package org.argeo.jcr.fs;
2
3 import java.io.IOException;
4 import java.net.URI;
5 import java.nio.file.FileSystem;
6 import java.nio.file.FileSystemAlreadyExistsException;
7 import java.nio.file.Path;
8 import java.util.Map;
9
10 import javax.jcr.Session;
11
12 /** An FS provider based on a single JCR session (experimental). */
13 public class SessionFsProvider extends JcrFileSystemProvider {
14 private Session session;
15 private JcrFileSystem fileSystem;
16
17 public SessionFsProvider(Session session) {
18 this.session = session;
19 }
20
21 @Override
22 public String getScheme() {
23 return "jcr+session";
24 }
25
26 @Override
27 public FileSystem newFileSystem(URI uri, Map<String, ?> env) throws IOException {
28 if (fileSystem != null && fileSystem.isOpen())
29 throw new FileSystemAlreadyExistsException();
30 fileSystem = new JcrFileSystem(this, session) {
31 boolean open;
32
33 @Override
34 public void close() throws IOException {
35 // prevent the session logout
36 open = false;
37 }
38
39 @Override
40 public boolean isOpen() {
41 return open;
42 }
43
44 };
45 return fileSystem;
46 }
47
48 @Override
49 public FileSystem getFileSystem(URI uri) {
50 return fileSystem;
51 }
52
53 @Override
54 public Path getPath(URI uri) {
55 return new JcrPath(fileSystem, uri.getPath());
56 }
57
58 }