![JAR search and dependency download from the Maven repository](/logo.png)
tech.ytsaurus.client.TransactionalClient Maven / Gradle / Ivy
package tech.ytsaurus.client;
import java.time.Duration;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import tech.ytsaurus.client.operations.Operation;
import tech.ytsaurus.client.request.AdvanceConsumer;
import tech.ytsaurus.client.request.CheckPermission;
import tech.ytsaurus.client.request.ConcatenateNodes;
import tech.ytsaurus.client.request.CopyNode;
import tech.ytsaurus.client.request.CreateNode;
import tech.ytsaurus.client.request.ExistsNode;
import tech.ytsaurus.client.request.GetFileFromCache;
import tech.ytsaurus.client.request.GetFileFromCacheResult;
import tech.ytsaurus.client.request.GetNode;
import tech.ytsaurus.client.request.LinkNode;
import tech.ytsaurus.client.request.ListNode;
import tech.ytsaurus.client.request.LockNode;
import tech.ytsaurus.client.request.LockNodeResult;
import tech.ytsaurus.client.request.MapOperation;
import tech.ytsaurus.client.request.MapReduceOperation;
import tech.ytsaurus.client.request.MergeOperation;
import tech.ytsaurus.client.request.MoveNode;
import tech.ytsaurus.client.request.MultiTablePartition;
import tech.ytsaurus.client.request.PartitionTables;
import tech.ytsaurus.client.request.PutFileToCache;
import tech.ytsaurus.client.request.PutFileToCacheResult;
import tech.ytsaurus.client.request.ReadFile;
import tech.ytsaurus.client.request.ReadSerializationContext;
import tech.ytsaurus.client.request.ReadTable;
import tech.ytsaurus.client.request.ReadTableDirect;
import tech.ytsaurus.client.request.ReduceOperation;
import tech.ytsaurus.client.request.RemoteCopyOperation;
import tech.ytsaurus.client.request.RemoveNode;
import tech.ytsaurus.client.request.SetNode;
import tech.ytsaurus.client.request.SortOperation;
import tech.ytsaurus.client.request.StartOperation;
import tech.ytsaurus.client.request.VanillaOperation;
import tech.ytsaurus.client.request.WriteFile;
import tech.ytsaurus.client.request.WriteTable;
import tech.ytsaurus.core.GUID;
import tech.ytsaurus.core.cypress.CypressNodeType;
import tech.ytsaurus.core.cypress.YPath;
import tech.ytsaurus.core.request.LockMode;
import tech.ytsaurus.rpcproxy.TCheckPermissionResult;
import tech.ytsaurus.ysontree.YTreeNode;
/**
* Interface of transactional YT client.
*
* WARNING Callbacks that can block (e.g. they use {@link CompletableFuture#join})
* MUST NEVER BE USED with non-Async thenApply, whenComplete etc methods
* called on futures returned by this client.
*
* @see ApiServiceClient
*/
public interface TransactionalClient extends ImmutableTransactionalClient {
TransactionalClient getRootClient();
CompletableFuture createNode(CreateNode req);
/**
* @deprecated prefer to use {@link #createNode(CreateNode)}
*/
@Deprecated
default CompletableFuture createNode(CreateNode.BuilderBase> req) {
return createNode(req.build());
}
CompletableFuture removeNode(RemoveNode req);
/**
* @deprecated prefer to use {@link #removeNode(RemoveNode)}
*/
@Deprecated
default CompletableFuture removeNode(RemoveNode.BuilderBase> req) {
return removeNode(req.build());
}
CompletableFuture setNode(SetNode req);
/**
* @deprecated prefer to use {@link #setNode(SetNode)}
*/
@Deprecated
default CompletableFuture setNode(SetNode.BuilderBase> req) {
return setNode(req.build());
}
CompletableFuture getNode(GetNode req);
/**
* @deprecated prefer to use {@link #getNode(GetNode)}
*/
@Deprecated
default CompletableFuture getNode(GetNode.BuilderBase> getNode) {
return getNode(getNode.build());
}
CompletableFuture listNode(ListNode req);
/**
* @deprecated prefer to use {@link #listNode(ListNode)}
*/
@Deprecated
default CompletableFuture listNode(ListNode.BuilderBase> listNode) {
return listNode(listNode.build());
}
CompletableFuture lockNode(LockNode req);
/**
* @deprecated prefer to use {@link #lockNode(LockNode)}
*/
@Deprecated
default CompletableFuture lockNode(LockNode.BuilderBase> req) {
return lockNode(req.build());
}
CompletableFuture copyNode(CopyNode req);
/**
* @deprecated prefer to use {@link #copyNode(CopyNode)}
*/
@Deprecated
default CompletableFuture copyNode(CopyNode.BuilderBase> req) {
return copyNode(req.build());
}
CompletableFuture linkNode(LinkNode req);
/**
* @deprecated prefer to use {@link #linkNode(LinkNode)}
*/
@Deprecated
default CompletableFuture linkNode(LinkNode.BuilderBase> req) {
return linkNode(req.build());
}
CompletableFuture moveNode(MoveNode req);
/**
* @deprecated prefer to use {@link #moveNode(MoveNode)}
*/
@Deprecated
default CompletableFuture moveNode(MoveNode.BuilderBase> req) {
return moveNode(req.build());
}
CompletableFuture existsNode(ExistsNode req);
/**
* @deprecated prefer to use {@link #existsNode(ExistsNode)}
*/
@Deprecated
default CompletableFuture existsNode(ExistsNode.BuilderBase> req) {
return existsNode(req.build());
}
CompletableFuture concatenateNodes(ConcatenateNodes req);
/**
* @deprecated prefer to use {@link #concatenateNodes(ConcatenateNodes)}
*/
@Deprecated
default CompletableFuture concatenateNodes(ConcatenateNodes.BuilderBase> req) {
return concatenateNodes(req.build());
}
CompletableFuture> partitionTables(PartitionTables req);
CompletableFuture advanceConsumer(AdvanceConsumer req);
/**
* @deprecated prefer to use {@link #readTable(ReadTable)}
*/
@Deprecated
default CompletableFuture> readTable(ReadTable.BuilderBase req) {
return readTable(req.build());
}
/**
* @deprecated prefer to use {@link #readTable(ReadTable)}
*/
@Deprecated
default CompletableFuture> readTable(
ReadTable.BuilderBase req,
@Nullable TableAttachmentReader reader) {
if (reader != null) {
req.setSerializationContext(new ReadSerializationContext(reader));
}
return readTable(req.build());
}
CompletableFuture> readTable(ReadTable req);
CompletableFuture> readTableV2(ReadTable req);
default CompletableFuture> readTableDirect(ReadTableDirect req) {
return readTable(req);
}
CompletableFuture> writeTable(WriteTable req);
/**
* @deprecated prefer to use {@link #writeTable(WriteTable)}
*/
@Deprecated
default CompletableFuture> writeTable(WriteTable.BuilderBase req) {
return writeTable(req.build());
}
CompletableFuture> writeTableV2(WriteTable req);
CompletableFuture readFile(ReadFile req);
/**
* @deprecated prefer to use {@link #readFile(ReadFile)}
*/
@Deprecated
default CompletableFuture readFile(ReadFile.BuilderBase> req) {
return readFile(req.build());
}
CompletableFuture writeFile(WriteFile req);
/**
* @deprecated prefer to use {@link #writeTable(WriteTable)}
*/
@Deprecated
default CompletableFuture writeFile(WriteFile.BuilderBase> req) {
return writeFile(req.build());
}
CompletableFuture startOperation(StartOperation req);
/**
* @deprecated prefer to use {@link #startOperation(StartOperation)}
*/
@Deprecated
default CompletableFuture startOperation(StartOperation.BuilderBase> req) {
return startOperation(req.build());
}
CompletableFuture startMap(MapOperation req);
default CompletableFuture map(MapOperation req) {
return startMap(req).thenCompose(op -> op.watch().thenApply(unused -> op));
}
CompletableFuture startReduce(ReduceOperation req);
default CompletableFuture reduce(ReduceOperation req) {
return startReduce(req).thenCompose(op -> op.watch().thenApply(unused -> op));
}
CompletableFuture startSort(SortOperation req);
default CompletableFuture sort(SortOperation req) {
return startSort(req).thenCompose(op -> op.watch().thenApply(unused -> op));
}
CompletableFuture startMapReduce(MapReduceOperation req);
default CompletableFuture mapReduce(MapReduceOperation req) {
return startMapReduce(req).thenCompose(op -> op.watch().thenApply(unused -> op));
}
CompletableFuture startMerge(MergeOperation req);
default CompletableFuture merge(MergeOperation req) {
return startMerge(req).thenCompose(op -> op.watch().thenApply(unused -> op));
}
CompletableFuture startRemoteCopy(RemoteCopyOperation req);
Operation attachOperation(GUID operationId);
default CompletableFuture remoteCopy(RemoteCopyOperation req) {
return startRemoteCopy(req).thenCompose(op -> op.watch().thenApply(unused -> op));
}
CompletableFuture startVanilla(VanillaOperation req);
default CompletableFuture vanilla(VanillaOperation req) {
return startVanilla(req).thenCompose(op -> op.watch().thenApply(unused -> op));
}
CompletableFuture checkPermission(CheckPermission req);
CompletableFuture getFileFromCache(GetFileFromCache req);
CompletableFuture putFileToCache(PutFileToCache req);
default CompletableFuture getNode(YPath path) {
return getNode(GetNode.builder().setPath(path).build());
}
default CompletableFuture getNode(String path) {
return getNode(path, null);
}
default CompletableFuture getNode(String path, @Nullable Duration requestTimeout) {
return getNode(GetNode.builder().setPath(YPath.simple(path)).setTimeout(requestTimeout).build());
}
default CompletableFuture listNode(YPath path) {
return listNode(ListNode.builder().setPath(path).build());
}
default CompletableFuture listNode(String path) {
return listNode(path, null);
}
default CompletableFuture listNode(String path, @Nullable Duration requestTimeout) {
return listNode(ListNode.builder().setPath(YPath.simple(path)).setTimeout(requestTimeout).build());
}
default CompletableFuture setNode(String path, byte[] data) {
return setNode(path, data, null);
}
default CompletableFuture setNode(String path, byte[] data, @Nullable Duration requestTimeout) {
return setNode(SetNode.builder().setPath(YPath.simple(path)).setValue(data).setTimeout(requestTimeout).build());
}
default CompletableFuture setNode(String path, YTreeNode data) {
return setNode(path, data.toBinary());
}
default CompletableFuture setNode(String path, YTreeNode data, @Nullable Duration requestTimeout) {
return setNode(path, data.toBinary(), requestTimeout);
}
default CompletableFuture existsNode(String path) {
return existsNode(path, null);
}
default CompletableFuture existsNode(String path, @Nullable Duration requestTimeout) {
return existsNode(ExistsNode.builder().setPath(YPath.simple(path)).setTimeout(requestTimeout).build());
}
default CompletableFuture createNode(String path, CypressNodeType type) {
return createNode(new CreateNode(YPath.simple(path), type));
}
default CompletableFuture createNode(String path, CypressNodeType type, @Nullable Duration requestTimeout) {
return createNode(CreateNode.builder()
.setPath(YPath.simple(path))
.setType(type)
.setTimeout(requestTimeout)
.build());
}
default CompletableFuture createNode(String path, CypressNodeType type, Map attributes) {
return createNode(path, type, attributes, null);
}
default CompletableFuture createNode(
String path,
CypressNodeType type,
Map attributes,
@Nullable Duration requestTimeout
) {
return createNode(CreateNode.builder()
.setPath(YPath.simple(path))
.setType(type)
.setAttributes(attributes)
.setTimeout(requestTimeout)
.build());
}
default CompletableFuture removeNode(String path) {
return removeNode(new RemoveNode(YPath.simple(path)));
}
default CompletableFuture lockNode(String path, LockMode mode) {
return lockNode(path, mode, null);
}
default CompletableFuture lockNode(String path, LockMode mode, @Nullable Duration requestTimeout) {
return lockNode(LockNode.builder()
.setPath(YPath.simple(path))
.setMode(mode)
.setTimeout(requestTimeout)
.build());
}
default CompletableFuture copyNode(String src, String dst) {
return copyNode(src, dst, null);
}
default CompletableFuture copyNode(String src, String dst, @Nullable Duration requestTimeout) {
return copyNode(CopyNode.builder().setSource(src).setDestination(dst).setTimeout(requestTimeout).build());
}
default CompletableFuture moveNode(String from, String to) {
return moveNode(from, to, null);
}
default CompletableFuture moveNode(String from, String to, @Nullable Duration requestTimeout) {
return moveNode(MoveNode.builder().setSource(from).setDestination(to).setTimeout(requestTimeout).build());
}
default CompletableFuture linkNode(String src, String dst) {
return linkNode(new LinkNode(src, dst));
}
default CompletableFuture concatenateNodes(String[] from, String to) {
return concatenateNodes(from, to, null);
}
default CompletableFuture concatenateNodes(String[] from, String to, @Nullable Duration requestTimeout) {
return concatenateNodes(ConcatenateNodes.builder()
.setSourcePaths(Arrays.stream(from).map(YPath::simple).collect(Collectors.toList()))
.setDestinationPath(YPath.simple(to))
.setTimeout(requestTimeout)
.build());
}
}