public class FsContentProvider implements ContentProvider {
final static String XMLNS_ = "xmlns:";
+ private final String mountPath;
private final Path rootPath;
private final boolean isRoot;
private NavigableMap<String, String> prefixes = new TreeMap<>();
- public FsContentProvider(Path rootPath, boolean isRoot) {
+ public FsContentProvider(String mountPath, Path rootPath, boolean isRoot) {
+ this.mountPath = mountPath;
this.rootPath = rootPath;
this.isRoot = isRoot;
initNamespaces();
throws IOException {
if (!prefixes.containsKey(prefix)) {
ByteBuffer bb = ByteBuffer.wrap(namespace.getBytes(StandardCharsets.UTF_8));
- int size = udfav.write(XMLNS_ + prefix, bb);
+ udfav.write(XMLNS_ + prefix, bb);
prefixes.put(prefix, namespace);
}
}
+ public void registerPrefix(String prefix, String namespace) {
+ if (prefixes.containsKey(prefix))
+ prefixes.remove(prefix);
+ try {
+ UserDefinedFileAttributeView udfav = Files.getFileAttributeView(rootPath,
+ UserDefinedFileAttributeView.class);
+ addDefaultNamespace(udfav, prefix, namespace);
+ } catch (IOException e) {
+ throw new RuntimeException("Cannot register namespace " + prefix + " " + namespace + " on " + rootPath, e);
+ }
+
+ }
+
+
+@Override
+ public String getMountPath() {
+ return mountPath;
+ }
+
boolean isRoot(Path path) {
try {
return isRoot && Files.isSameFile(rootPath, path);