예제 #1
0
  /**
   * Returns a path of a lock for the provided file.
   *
   * <p>Examples:
   *
   * <pre>
   * default://master@repo/some/path/to/file.txt =>
   * default://locks@system/repo/master/some/path/to/file.txt.ulock
   *
   * file:\\master@repo\some\path\to\file.txt =>
   * file:\\locks@system\repo\master\some\path\to\file.txt.ulock
   * </pre>
   *
   * @param path the path of a file for which a lock should be created, must not be null.
   * @return the lock path
   */
  public static Path newLockPath(final Path path) {
    checkNotNull("path", path);

    final String systemUri =
        path.toURI().replaceFirst("(/|\\\\)([^/&^\\\\]*)@([^/&^\\\\]*)", "$1locks@system$1$3$1$2");

    return PathFactory.newPath("/", systemUri);
  }
예제 #2
0
  /**
   * Returns the path of the locked file for the provided lock.
   *
   * <p>Examples:
   *
   * <pre>
   * default://locks@system/repo/master/some/path/to/file.txt.ulock =>
   * default://master@repo/some/path/to/file.txt
   *
   * file:\\locks@system\repo\master\some\path\to\file.txt.ulock =>
   * file:\\master@repo\some\path\to\file.txt
   * </pre>
   *
   * @param lockPath the path of a lock, must not be null.
   * @return the locked path.
   */
  public static Path fromLock(final Path lockPath) {
    checkNotNull("path", lockPath);

    final String uri =
        lockPath
            .toURI()
            .replaceFirst("locks@system(/|\\\\)([^/&^\\\\]*)(/|\\\\)([^/&^\\\\]*)", "$4@$2");

    return PathFactory.newPath(
        lockPath.getFileName().replace(LOCK_FILE_EXTENSION, ""),
        uri.replace(LOCK_FILE_EXTENSION, ""));
  }
예제 #3
0
 public static Path newLock(final Path path) {
   Path lockPath = newLockPath(path);
   return PathFactory.newPath(
       path.getFileName() + LOCK_FILE_EXTENSION, lockPath.toURI() + LOCK_FILE_EXTENSION);
 }