java.lang.Object
io.evitadb.driver.EvitaClientSession
- All Implemented Interfaces:
EvitaSessionContract,Closeable,AutoCloseable,Comparable<EvitaSessionContract>
The EvitaClientSession implements
EvitaSessionContract interface and aims to behave identically as if the
evitaDB is used as an embedded engine. The EvitaClientSession is not thread-safe. It keeps a gRPC session opened,
but it doesn't mean that the session on the server side is still alive. Server can close the session due to
the timeout and the client will realize this on the next server call attempt.- Author:
- Jan Novotný (novotny@fg.cz), FG Forrest a.s. (c) 2022
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordSimple wrapper class that allows to pass capture value, or signalize end of stream with possible error returned byt the server. -
Constructor Summary
ConstructorsConstructorDescriptionEvitaClientSession(EvitaClient evita, EvitaClientManagement management, io.evitadb.driver.EvitaEntitySchemaCache schemaCache, com.linecorp.armeria.client.grpc.GrpcClientBuilder grpcClientBuilder, String catalogName, CatalogState catalogState, UUID catalogId, UUID sessionId, TransactionContract.CommitBehavior commitBehaviour, SessionTraits sessionTraits, Consumer<EvitaClientSession> onTerminationCallback, Timeout timeout) -
Method Summary
Modifier and TypeMethodDescriptionTask<?,FileForFetch> backupCatalog(OffsetDateTime pastMoment, boolean includingWAL) Method internally closes the sessioncloseNow(TransactionContract.CommitBehavior commitBehaviour) <S extends Serializable>
ScreateNewEntity(Class<S> expectedType) <S extends Serializable>
ScreateNewEntity(Class<S> expectedType, int primaryKey) createNewEntity(String entityType) createNewEntity(String entityType, int primaryKey) defineEntitySchema(String entityType) defineEntitySchemaFromModelClass(Class<?> modelClass) defineEntitySchemaFromModelClass(Class<?> modelClass, SchemaPostProcessor postProcessor) booleandeleteCollection(Class<?> modelClass) booleandeleteCollection(String entityType) intdeleteEntities(io.evitadb.api.query.Query query) booleandeleteEntity(Class<?> modelClass, int primaryKey) <T extends Serializable>
Optional<T>deleteEntity(Class<T> modelClass, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) booleandeleteEntity(String entityType, int primaryKey) deleteEntity(String entityType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) <T extends Serializable>
DeletedHierarchy<T>deleteEntityAndItsHierarchy(Class<T> modelClass, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) intdeleteEntityAndItsHierarchy(String entityType, int primaryKey) deleteEntityAndItsHierarchy(String entityType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) deleteSealedEntitiesAndReturnBodies(io.evitadb.api.query.Query query) <T extends Serializable>
TenrichEntity(T partiallyLoadedEntity, io.evitadb.api.query.require.EntityContentRequire... require) <T extends Serializable>
TenrichOrLimitEntity(T partiallyLoadedEntity, io.evitadb.api.query.require.EntityContentRequire... require) voidexecuteWithExtendedTimeout(Runnable lambda, long timeout, TimeUnit unit) Method executes lambda using specified timeout for the call ignoring the defaults specified inEvitaClientConfiguration.timeout().<T> TexecuteWithExtendedTimeout(Supplier<T> lambda, long timeout, TimeUnit unit) Method executes lambda using specified timeout for the call ignoring the defaults specified inEvitaClientConfiguration.timeout().getCatalogSchema(EvitaClient evita) This method is internal and is a special form ofgetCatalogSchema()that can handle the situation when this particular session is already closed and opens a new temporary one for accessing the schemas on the server side when necessary.longgetCatalogVersionAt(OffsetDateTime moment) <T extends Serializable>
Optional<T>getEntity(Class<T> expectedType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) getEntity(String entityType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) intgetEntityCollectionSize(String entityType) getEntitySchema(Class<?> modelClass) getEntitySchema(String entityType) getEntitySchemaOrThrowException(Class<?> modelClass) getEntitySchemaOrThrowException(String entityType) getId()longIf the stream is closed prematurely the server stream is cancelled and the server is notified about it.booleanbooleanisActive()booleanbooleanisDryRun()booleanboolean<S extends Serializable,T extends EvitaResponse<S>>
T<S extends Serializable>
List<S><S extends Serializable>
Optional<S>booleanrenameCollection(String entityType, String newName) booleanreplaceCollection(String entityTypeToBeReplaced, String entityTypeToBeReplacedWith) voidupdateAndFetchCatalogSchema(LocalCatalogSchemaMutation... schemaMutation) updateAndFetchEntitySchema(ModifyEntitySchemaMutation schemaMutation) intupdateCatalogSchema(LocalCatalogSchemaMutation... schemaMutation) intupdateEntitySchema(ModifyEntitySchemaMutation schemaMutation) upsertAndFetchEntity(EntityEditor.EntityBuilder entityBuilder, io.evitadb.api.query.require.EntityContentRequire... require) upsertAndFetchEntity(EntityMutation entityMutation, io.evitadb.api.query.require.EntityContentRequire... require) upsertEntity(EntityMutation entityMutation) <S extends Serializable>
EntityReferenceupsertEntity(S customEntity) <S extends Serializable>
List<EntityReference>upsertEntityDeeply(S customEntity) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.evitadb.api.EvitaSessionContract
close, closeWhen, compareTo, getEntitySchemaOrThrow, getEntitySchemaOrThrow, getEvita, getProxyFactory, isTransactionOpen, queryEntityReference, queryListOfEntityReferences, queryListOfSealedEntities, queryOneEntityReference, queryOneSealedEntity, querySealedEntity, updateAndFetchCatalogSchema, updateAndFetchEntitySchema, updateCatalogSchema, updateEntitySchema
-
Constructor Details
-
EvitaClientSession
public EvitaClientSession(@Nonnull EvitaClient evita, @Nonnull EvitaClientManagement management, @Nonnull io.evitadb.driver.EvitaEntitySchemaCache schemaCache, @Nonnull com.linecorp.armeria.client.grpc.GrpcClientBuilder grpcClientBuilder, @Nonnull String catalogName, @Nonnull CatalogState catalogState, @Nonnull UUID catalogId, @Nonnull UUID sessionId, @Nonnull TransactionContract.CommitBehavior commitBehaviour, @Nonnull SessionTraits sessionTraits, @Nonnull Consumer<EvitaClientSession> onTerminationCallback, @Nonnull Timeout timeout)
-
-
Method Details
-
getId
- Specified by:
getIdin interfaceEvitaSessionContract
-
getCatalogId
- Specified by:
getCatalogIdin interfaceEvitaSessionContract
-
getCatalogSchema
- Specified by:
getCatalogSchemain interfaceEvitaSessionContract
-
getCatalogName
- Specified by:
getCatalogNamein interfaceEvitaSessionContract
-
getCatalogState
- Specified by:
getCatalogStatein interfaceEvitaSessionContract
-
getCatalogVersion
public long getCatalogVersion()- Specified by:
getCatalogVersionin interfaceEvitaSessionContract
-
isActive
public boolean isActive()- Specified by:
isActivein interfaceEvitaSessionContract
-
goLiveAndClose
public boolean goLiveAndClose()- Specified by:
goLiveAndClosein interfaceEvitaSessionContract
-
closeNow
@Nonnull public CompletableFuture<Long> closeNow(@Nonnull TransactionContract.CommitBehavior commitBehaviour) - Specified by:
closeNowin interfaceEvitaSessionContract
-
defineEntitySchema
@Nonnull public EntitySchemaEditor.EntitySchemaBuilder defineEntitySchema(@Nonnull String entityType) - Specified by:
defineEntitySchemain interfaceEvitaSessionContract
-
defineEntitySchemaFromModelClass
- Specified by:
defineEntitySchemaFromModelClassin interfaceEvitaSessionContract
-
defineEntitySchemaFromModelClass
@Nonnull public SealedEntitySchema defineEntitySchemaFromModelClass(@Nonnull Class<?> modelClass, @Nonnull SchemaPostProcessor postProcessor) - Specified by:
defineEntitySchemaFromModelClassin interfaceEvitaSessionContract
-
getEntitySchema
- Specified by:
getEntitySchemain interfaceEvitaSessionContract
-
getEntitySchema
@Nonnull public Optional<SealedEntitySchema> getEntitySchema(@Nonnull Class<?> modelClass) throws EntityClassInvalidException - Specified by:
getEntitySchemain interfaceEvitaSessionContract- Throws:
EntityClassInvalidException
-
getEntitySchemaOrThrowException
@Nonnull public SealedEntitySchema getEntitySchemaOrThrowException(@Nonnull String entityType) throws CollectionNotFoundException - Specified by:
getEntitySchemaOrThrowExceptionin interfaceEvitaSessionContract- Throws:
CollectionNotFoundException
-
getEntitySchemaOrThrowException
@Nonnull public SealedEntitySchema getEntitySchemaOrThrowException(@Nonnull Class<?> modelClass) throws CollectionNotFoundException, EntityClassInvalidException - Specified by:
getEntitySchemaOrThrowExceptionin interfaceEvitaSessionContract- Throws:
CollectionNotFoundExceptionEntityClassInvalidException
-
getAllEntityTypes
- Specified by:
getAllEntityTypesin interfaceEvitaSessionContract
-
queryOne
@Nonnull public <S extends Serializable> Optional<S> queryOne(@Nonnull io.evitadb.api.query.Query query, @Nonnull Class<S> expectedType) throws UnexpectedResultException, UnexpectedResultCountException, InstanceTerminatedException - Specified by:
queryOnein interfaceEvitaSessionContract- Throws:
UnexpectedResultExceptionUnexpectedResultCountExceptionInstanceTerminatedException
-
queryList
@Nonnull public <S extends Serializable> List<S> queryList(@Nonnull io.evitadb.api.query.Query query, @Nonnull Class<S> expectedType) throws UnexpectedResultException, InstanceTerminatedException - Specified by:
queryListin interfaceEvitaSessionContract- Throws:
UnexpectedResultExceptionInstanceTerminatedException
-
query
@Nonnull public <S extends Serializable,T extends EvitaResponse<S>> T query(@Nonnull io.evitadb.api.query.Query query, @Nonnull Class<S> expectedType) throws UnexpectedResultException, InstanceTerminatedException - Specified by:
queryin interfaceEvitaSessionContract- Throws:
UnexpectedResultExceptionInstanceTerminatedException
-
getEntity
@Nonnull public Optional<SealedEntity> getEntity(@Nonnull String entityType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) - Specified by:
getEntityin interfaceEvitaSessionContract
-
getEntity
@Nonnull public <T extends Serializable> Optional<T> getEntity(@Nonnull Class<T> expectedType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) throws EntityClassInvalidException - Specified by:
getEntityin interfaceEvitaSessionContract- Throws:
EntityClassInvalidException
-
enrichEntity
@Nonnull public <T extends Serializable> T enrichEntity(@Nonnull T partiallyLoadedEntity, io.evitadb.api.query.require.EntityContentRequire... require) - Specified by:
enrichEntityin interfaceEvitaSessionContract
-
enrichOrLimitEntity
@Nonnull public <T extends Serializable> T enrichOrLimitEntity(@Nonnull T partiallyLoadedEntity, io.evitadb.api.query.require.EntityContentRequire... require) - Specified by:
enrichOrLimitEntityin interfaceEvitaSessionContract
-
updateCatalogSchema
public int updateCatalogSchema(@Nonnull LocalCatalogSchemaMutation... schemaMutation) throws SchemaAlteringException - Specified by:
updateCatalogSchemain interfaceEvitaSessionContract- Throws:
SchemaAlteringException
-
updateAndFetchCatalogSchema
@Nonnull public SealedCatalogSchema updateAndFetchCatalogSchema(@Nonnull LocalCatalogSchemaMutation... schemaMutation) throws SchemaAlteringException - Specified by:
updateAndFetchCatalogSchemain interfaceEvitaSessionContract- Throws:
SchemaAlteringException
-
updateEntitySchema
public int updateEntitySchema(@Nonnull ModifyEntitySchemaMutation schemaMutation) throws SchemaAlteringException - Specified by:
updateEntitySchemain interfaceEvitaSessionContract- Throws:
SchemaAlteringException
-
updateAndFetchEntitySchema
@Nonnull public SealedEntitySchema updateAndFetchEntitySchema(@Nonnull ModifyEntitySchemaMutation schemaMutation) throws SchemaAlteringException - Specified by:
updateAndFetchEntitySchemain interfaceEvitaSessionContract- Throws:
SchemaAlteringException
-
deleteCollection
- Specified by:
deleteCollectionin interfaceEvitaSessionContract
-
deleteCollection
- Specified by:
deleteCollectionin interfaceEvitaSessionContract- Throws:
EntityClassInvalidException
-
renameCollection
- Specified by:
renameCollectionin interfaceEvitaSessionContract
-
replaceCollection
public boolean replaceCollection(@Nonnull String entityTypeToBeReplaced, @Nonnull String entityTypeToBeReplacedWith) - Specified by:
replaceCollectionin interfaceEvitaSessionContract
-
getEntityCollectionSize
- Specified by:
getEntityCollectionSizein interfaceEvitaSessionContract
-
createNewEntity
- Specified by:
createNewEntityin interfaceEvitaSessionContract
-
createNewEntity
- Specified by:
createNewEntityin interfaceEvitaSessionContract
-
createNewEntity
@Nonnull public EntityEditor.EntityBuilder createNewEntity(@Nonnull String entityType, int primaryKey) - Specified by:
createNewEntityin interfaceEvitaSessionContract
-
createNewEntity
@Nonnull public <S extends Serializable> S createNewEntity(@Nonnull Class<S> expectedType, int primaryKey) - Specified by:
createNewEntityin interfaceEvitaSessionContract
-
upsertEntity
- Specified by:
upsertEntityin interfaceEvitaSessionContract
-
upsertEntityDeeply
@Nonnull public <S extends Serializable> List<EntityReference> upsertEntityDeeply(@Nonnull S customEntity) - Specified by:
upsertEntityDeeplyin interfaceEvitaSessionContract
-
upsertEntity
- Specified by:
upsertEntityin interfaceEvitaSessionContract
-
upsertAndFetchEntity
@Nonnull public SealedEntity upsertAndFetchEntity(@Nonnull EntityEditor.EntityBuilder entityBuilder, io.evitadb.api.query.require.EntityContentRequire... require) - Specified by:
upsertAndFetchEntityin interfaceEvitaSessionContract
-
upsertAndFetchEntity
@Nonnull public SealedEntity upsertAndFetchEntity(@Nonnull EntityMutation entityMutation, io.evitadb.api.query.require.EntityContentRequire... require) - Specified by:
upsertAndFetchEntityin interfaceEvitaSessionContract
-
deleteEntity
- Specified by:
deleteEntityin interfaceEvitaSessionContract
-
deleteEntity
public boolean deleteEntity(@Nonnull Class<?> modelClass, int primaryKey) throws EntityClassInvalidException - Specified by:
deleteEntityin interfaceEvitaSessionContract- Throws:
EntityClassInvalidException
-
deleteEntity
@Nonnull public Optional<SealedEntity> deleteEntity(@Nonnull String entityType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) - Specified by:
deleteEntityin interfaceEvitaSessionContract
-
deleteEntity
@Nonnull public <T extends Serializable> Optional<T> deleteEntity(@Nonnull Class<T> modelClass, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) throws EntityClassInvalidException - Specified by:
deleteEntityin interfaceEvitaSessionContract- Throws:
EntityClassInvalidException
-
deleteEntityAndItsHierarchy
- Specified by:
deleteEntityAndItsHierarchyin interfaceEvitaSessionContract
-
deleteEntityAndItsHierarchy
@Nonnull public DeletedHierarchy<SealedEntity> deleteEntityAndItsHierarchy(@Nonnull String entityType, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) - Specified by:
deleteEntityAndItsHierarchyin interfaceEvitaSessionContract
-
deleteEntityAndItsHierarchy
@Nonnull public <T extends Serializable> DeletedHierarchy<T> deleteEntityAndItsHierarchy(@Nonnull Class<T> modelClass, int primaryKey, io.evitadb.api.query.require.EntityContentRequire... require) throws io.evitadb.exception.EvitaInvalidUsageException, EntityClassInvalidException - Specified by:
deleteEntityAndItsHierarchyin interfaceEvitaSessionContract- Throws:
io.evitadb.exception.EvitaInvalidUsageExceptionEntityClassInvalidException
-
deleteEntities
public int deleteEntities(@Nonnull io.evitadb.api.query.Query query) - Specified by:
deleteEntitiesin interfaceEvitaSessionContract
-
deleteSealedEntitiesAndReturnBodies
@Nonnull public SealedEntity[] deleteSealedEntitiesAndReturnBodies(@Nonnull io.evitadb.api.query.Query query) - Specified by:
deleteSealedEntitiesAndReturnBodiesin interfaceEvitaSessionContract
-
getCatalogVersionAt
@Nonnull public CatalogVersion getCatalogVersionAt(@Nullable OffsetDateTime moment) throws TemporalDataNotAvailableException - Specified by:
getCatalogVersionAtin interfaceEvitaSessionContract- Throws:
TemporalDataNotAvailableException
-
getMutationsHistory
@Nonnull public Stream<ChangeCatalogCapture> getMutationsHistory(@Nonnull ChangeCatalogCaptureRequest request) If the stream is closed prematurely the server stream is cancelled and the server is notified about it.- Specified by:
getMutationsHistoryin interfaceEvitaSessionContract- Parameters:
request- request that specifies the criteria for the changes to be returned- Returns:
-
backupCatalog
@Nonnull public Task<?,FileForFetch> backupCatalog(@Nullable OffsetDateTime pastMoment, boolean includingWAL) throws TemporalDataNotAvailableException - Specified by:
backupCatalogin interfaceEvitaSessionContract- Throws:
TemporalDataNotAvailableException
-
getOpenedTransactionId
- Specified by:
getOpenedTransactionIdin interfaceEvitaSessionContract
-
isRollbackOnly
public boolean isRollbackOnly()- Specified by:
isRollbackOnlyin interfaceEvitaSessionContract
-
setRollbackOnly
public void setRollbackOnly()- Specified by:
setRollbackOnlyin interfaceEvitaSessionContract
-
isReadOnly
public boolean isReadOnly()- Specified by:
isReadOnlyin interfaceEvitaSessionContract
-
isBinaryFormat
public boolean isBinaryFormat()- Specified by:
isBinaryFormatin interfaceEvitaSessionContract
-
isDryRun
public boolean isDryRun()- Specified by:
isDryRunin interfaceEvitaSessionContract
-
getInactivityDurationInSeconds
public long getInactivityDurationInSeconds()- Specified by:
getInactivityDurationInSecondsin interfaceEvitaSessionContract
-
getCatalogSchema
This method is internal and is a special form ofgetCatalogSchema()that can handle the situation when this particular session is already closed and opens a new temporary one for accessing the schemas on the server side when necessary.- Parameters:
evita- - reference to theEvitaClientinstance that is used to open a new temporary session when necessary- Returns:
SealedCatalogSchemaof the catalog targeted by this session
-
closeInternally
Method internally closes the session -
executeWithExtendedTimeout
public void executeWithExtendedTimeout(@Nonnull Runnable lambda, long timeout, @Nonnull TimeUnit unit) Method executes lambda using specified timeout for the call ignoring the defaults specified inEvitaClientConfiguration.timeout().- Parameters:
lambda- logic to be executedtimeout- timeout valueunit- time unit of the timeout
-
executeWithExtendedTimeout
public <T> T executeWithExtendedTimeout(@Nonnull Supplier<T> lambda, long timeout, @Nonnull TimeUnit unit) Method executes lambda using specified timeout for the call ignoring the defaults specified inEvitaClientConfiguration.timeout().- Type Parameters:
T- type of the result- Parameters:
lambda- logic to be executedtimeout- timeout valueunit- time unit of the timeout- Returns:
- result of the lambda
-