X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjcr%2Ffs%2FJcrPath.java;h=a2080c546a8eb48f178fc133168bc98dd939cc5c;hb=503f2f9ae7bc2167a3c41d1937fc63c299c16027;hp=09b3e0e7ac0c62391631f90a2ecbc2fd913d6b53;hpb=cc04167de22122c17425975a86f5a2d7fae53c4f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jcr/fs/JcrPath.java b/org.argeo.jcr/src/org/argeo/jcr/fs/JcrPath.java index 09b3e0e7a..a2080c546 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/fs/JcrPath.java +++ b/org.argeo.jcr/src/org/argeo/jcr/fs/JcrPath.java @@ -31,8 +31,6 @@ public class JcrPath implements Path { private final int hashCode; public JcrPath(JcrFileSystem filesSystem, String path) { - // this(filesSystem, path.equals("/") ? null : path.split("/"), path == - // null ? true : path.startsWith("/")); this.fs = filesSystem; if (path == null) throw new JcrFsException("Path cannot be null"); @@ -47,6 +45,13 @@ public class JcrPath implements Path { this.hashCode = "".hashCode(); return; } + + if (path.equals("~")) {// home + path = filesSystem.getUserHomePath(); + if (path == null) + throw new JcrFsException("No home directory available"); + } + this.absolute = path.charAt(0) == delimChar ? true : false; String trimmedPath = path.substring(absolute ? 1 : 0, path.charAt(path.length() - 1) == delimChar ? path.length() - 1 : path.length()); @@ -254,15 +259,18 @@ public class JcrPath implements Path { if (other.startsWith(this)) { String p1 = toString(); String p2 = other.toString(); - return new JcrPath(fs, p2.substring(p1.length(), p2.length())); + String relative = p2.substring(p1.length(), p2.length()); + if (relative.charAt(0) == '/') + relative = relative.substring(1); + return new JcrPath(fs, relative); } - throw new IllegalArgumentException(other + " cannot be realtivized against " + this); + throw new IllegalArgumentException(other + " cannot be relativized against " + this); } @Override public URI toUri() { try { - return new URI("jcr", toString(), null); + return new URI(fs.provider().getScheme(), toString(), null); } catch (URISyntaxException e) { throw new JcrFsException("Cannot create URI for " + toString(), e); }