All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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()); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy