@Override
  public Task<String> ensurePathExists(String path) {
    return exists(path).flatMap(stat -> {
      if (!stat.isPresent()) {
        Task<String> createIfAbsent = create(path, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT)
            .recoverWith("recover from NodeExistsException", e -> {
              if (e instanceof KeeperException.NodeExistsException) {
                return Task.value(path);
              } else {
                return Task.failure(e);
              }
            });
        String parent = path.substring(0, path.lastIndexOf('/'));
        if (parent.isEmpty()) { // parent is root
          return createIfAbsent;
        } else {
          return ensurePathExists(parent).flatMap(unused -> createIfAbsent);
        }
      } else {
        return Task.value(path);
      }
    });
  }
@Override
  public Task<String> ensurePathExists(String path) {
    return exists(path).flatMap(stat -> {
      if (!stat.isPresent()) {
        Task<String> createIfAbsent = create(path, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT)
            .recoverWith("recover from NodeExistsException", e -> {
              if (e instanceof KeeperException.NodeExistsException) {
                return Task.value(path);
              } else {
                return Task.failure(e);
              }
            });
        String parent = path.substring(0, path.lastIndexOf('/'));
        if (parent.isEmpty()) { 
          return createIfAbsent;
        } else {
          return ensurePathExists(parent).flatMap(unused -> createIfAbsent);
        }
      } else {
        return Task.value(path);
      }
    });
  }
@ Override public Task < String > ensurePathExists ( String path ) { return exists ( path ) . flatMap ( stat -> { if ( ! stat . isPresent ( ) ) { Task < String > createIfAbsent = create ( path , null , ZooDefs . Ids . OPEN_ACL_UNSAFE , CreateMode . PERSISTENT ) . recoverWith ( "recover from NodeExistsException" , e -> { if ( e instanceof KeeperException . NodeExistsException ) { return Task . value ( path ) ; } else { return Task . failure ( e ) ; } } ) ; String parent = path . substring ( 0 , path . lastIndexOf ( ' ' ) ) ; if ( parent . isEmpty ( ) ) { // parent is root return createIfAbsent ; } else { return ensurePathExists ( parent ) . flatMap ( unused -> createIfAbsent ) ; } } else { return Task . value ( path ) ; } } ) ; }
{@inheritDoc}
{