+ private final static String delimStr = "/";
+ private final static char delimChar = '/';
+
+ private final JcrFileSystem fs;
+ private final String[] path;// null means root
+ private final boolean absolute;
+
+ // optim
+ 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");
+ if (path.equals(delimStr)) {// root
+ this.path = null;
+ this.absolute = true;
+ this.hashCode = 0;
+ return;
+ }
+ 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());
+ this.path = trimmedPath.split(delimStr);
+ this.hashCode = this.path[this.path.length - 1].hashCode();
+ }