Class ContextCollectingSession
java.lang.Object
com._1c.g5.v8.internal.derived.context.ContextCollectingSession
- All Implemented Interfaces:
IContextCollectingSession
Implementation of
IContextCollectingSession
which wraps the context manager and ensures that all context operations
are tracked properly.-
Constructor Summary
ConstructorsConstructorDescriptionContextCollectingSession
(IContextTransactionManager manager, Object computationCause, boolean trackWaitingScope, boolean forcedUpdate) Creates new context collecting session with given context collection mode (sync or async). -
Method Summary
Modifier and TypeMethodDescriptionvoid
commit()
Commits the session, unlocking context objects being locked during the context collecting session.<T extends IObjectDerivedDataContext>
TgetExistingObjectContext
(Object objectId, String segmentId) Gets existing (previously scheduled and not yet computed) contextgetObjectContext
(IBmObject bmObject, String segmentId) Gets the object context of the provided object.Gets the identifier of the service that initiated the context collecting session.<T extends IObjectDerivedDataContext>
TgetTypedObjectContext
(long bmObjectId, org.eclipse.emf.ecore.EClass objectEClass, String segmentId, Class<T> contextType) Convenience method that checks the type of the internal context and casts it to the given type.<T extends IObjectDerivedDataContext>
TgetTypedObjectContext
(IBmObject bmObject, String segmentId) Convenience method that checks the type of the internal context and casts it to the given type.<T extends IObjectDerivedDataContext>
TgetTypedObjectContext
(IBmObject bmObject, String segmentId, Class<T> contextType) Convenience method that checks the type of the internal context and casts it to the given type.<T extends IObjectDerivedDataContext>
TgetTypedObjectContext
(Object objectId, org.eclipse.emf.ecore.EClass objectEClass, String segmentId, Class<T> contextType) Convenience method that checks the type of the internal context and casts it to the given type.boolean
isContextExists
(IBmObject bmObject, String segmentId) Checks if the DD context exists(supported) for the given object and segmentboolean
isContextExists
(org.eclipse.emf.ecore.EClass topObjectEClass, long topObjectId, String segmentId) Checks if the DD context exists(supported) for the given object and segmentboolean
isEmpty()
Checks if the session has no collected contexts.void
Removes previously scheduled operationscheduleModalOperation
(Consumer<org.eclipse.core.runtime.IProgressMonitor> operation, DerivedDataSegmentBucket stage, IModalOperationController modalOperationController) Schedules a new modal operation with corresponding controllerscheduleOperation
(Consumer<org.eclipse.core.runtime.IProgressMonitor> operation, OperationType operationType, boolean important, DerivedDataSegmentBucket bucket) Schedules managed operation
-
Constructor Details
-
ContextCollectingSession
public ContextCollectingSession(IContextTransactionManager manager, Object computationCause, boolean trackWaitingScope, boolean forcedUpdate) Creates new context collecting session with given context collection mode (sync or async).- Parameters:
manager
- The reference to the context manager.syncContextCollection
- True in case if the session is used to collect sync DD contexts; false for async context collection.computationCause
- The object bound to the computation context and used to track computations.trackWaitingScope
- Enables collection of the implicit waiting scope if trueforcedUpdate
- Forces update of contexts, even if they aren't changed
-
-
Method Details
-
commit
public void commit()Description copied from interface:IContextCollectingSession
Commits the session, unlocking context objects being locked during the context collecting session.- Specified by:
commit
in interfaceIContextCollectingSession
-
getObjectContext
Description copied from interface:IContextCollectingSession
Gets the object context of the provided object. Effectively locks the provided context from changes via other context collecting sessions. Creates a new context if no context was collected since the last processing- Specified by:
getObjectContext
in interfaceIContextCollectingSession
- Parameters:
bmObject
- The object to get the context for.segmentId
- The DD segment identifier.- Returns:
- The corresponding context for the object.
-
getServiceId
Description copied from interface:IContextCollectingSession
Gets the identifier of the service that initiated the context collecting session. This identifier is used to implement complex scearios, like selective computation of DD based on events raised as a result of another DD modification.- Specified by:
getServiceId
in interfaceIContextCollectingSession
- Returns:
- The identifier of the service to check the equality against. Can be
null
,
-
getTypedObjectContext
public <T extends IObjectDerivedDataContext> T getTypedObjectContext(IBmObject bmObject, String segmentId, Class<T> contextType) Description copied from interface:IContextCollectingSession
Convenience method that checks the type of the internal context and casts it to the given type. Creates a new context if no context was collected since the last processing- Specified by:
getTypedObjectContext
in interfaceIContextCollectingSession
- Parameters:
bmObject
- The object to get the context for. Cannot benull
or proxysegmentId
- The DD segment identifier. May not benull
contextType
- The target type of the context. May not benull
- Returns:
- The corresponding context for the object. May not be
null
-
getTypedObjectContext
public <T extends IObjectDerivedDataContext> T getTypedObjectContext(IBmObject bmObject, String segmentId) Description copied from interface:IContextCollectingSession
Convenience method that checks the type of the internal context and casts it to the given type. Creates a new context if no context was collected since the last processing- Specified by:
getTypedObjectContext
in interfaceIContextCollectingSession
- Type Parameters:
T
- A required type of the context- Parameters:
bmObject
- A target object. May not benull
segmentId
- A target DD segment identifier. May not benull
- Returns:
- Required context if any. May not be
null
-
isContextExists
Description copied from interface:IContextCollectingSession
Checks if the DD context exists(supported) for the given object and segment- Specified by:
isContextExists
in interfaceIContextCollectingSession
- Parameters:
bmObject
- The object to get the context for. May not benull
segmentId
- The DD segment identifier. May not benull
- Returns:
- True if the context is exist/may be created
-
isContextExists
public boolean isContextExists(org.eclipse.emf.ecore.EClass topObjectEClass, long topObjectId, String segmentId) Description copied from interface:IContextCollectingSession
Checks if the DD context exists(supported) for the given object and segment- Specified by:
isContextExists
in interfaceIContextCollectingSession
- Parameters:
topObjectEClass
- Top objectEClass
. May not benull
topObjectId
- Top object identifier. May not benull
segmentId
- The DD segment identifier. May not benull
- Returns:
- True if the context is exist/may be created
-
getTypedObjectContext
public <T extends IObjectDerivedDataContext> T getTypedObjectContext(long bmObjectId, org.eclipse.emf.ecore.EClass objectEClass, String segmentId, Class<T> contextType) Description copied from interface:IContextCollectingSession
Convenience method that checks the type of the internal context and casts it to the given type. ThrowsIllegalArgumentException
in case of type mismatch.- Specified by:
getTypedObjectContext
in interfaceIContextCollectingSession
- Parameters:
bmObjectId
- The identifier of the object to get the context for.objectEClass
- TheEClass
of the object to get the context for. Cannot benull
segmentId
- The DD segment identifier. Cannot benull
contextType
- The target type of the context. Cannot benull
- Returns:
- The corresponding context for the object.
-
getTypedObjectContext
public <T extends IObjectDerivedDataContext> T getTypedObjectContext(Object objectId, org.eclipse.emf.ecore.EClass objectEClass, String segmentId, Class<T> contextType) Description copied from interface:IContextCollectingSession
Convenience method that checks the type of the internal context and casts it to the given type. Creates a new context if no context was collected since the last processing- Specified by:
getTypedObjectContext
in interfaceIContextCollectingSession
objectEClass
- TheEClass
of the object to get the context for. Cannot benull
segmentId
- The DD segment identifier. May not benull
contextType
- The target type of the context. May not benull
- Returns:
- The corresponding context for the object. May not be
null
-
getExistingObjectContext
public <T extends IObjectDerivedDataContext> T getExistingObjectContext(Object objectId, String segmentId) Description copied from interface:IContextCollectingSession
Gets existing (previously scheduled and not yet computed) context- Specified by:
getExistingObjectContext
in interfaceIContextCollectingSession
- Type Parameters:
T
- A required type of the context- Parameters:
objectId
- A target object identifier. May not benull
segmentId
- A target DD segment identifier. May not benull
- Returns:
- Required context if any.
null
if no object exists
-
isEmpty
public boolean isEmpty()Description copied from interface:IContextCollectingSession
Checks if the session has no collected contexts.- Specified by:
isEmpty
in interfaceIContextCollectingSession
- Returns:
- True if the session has no collected contexts; false otherwise.
-
scheduleOperation
public IObjectDerivedDataContext scheduleOperation(Consumer<org.eclipse.core.runtime.IProgressMonitor> operation, OperationType operationType, boolean important, DerivedDataSegmentBucket bucket) Description copied from interface:IContextCollectingSession
Schedules managed operation- Specified by:
scheduleOperation
in interfaceIContextCollectingSession
- Parameters:
operation
- The oepration executable logic to schedule. May not benull
operationType
- The type of the operation. May not benull
bucket
- The target stage of the async pipeline. May not benull
-
scheduleModalOperation
public Object scheduleModalOperation(Consumer<org.eclipse.core.runtime.IProgressMonitor> operation, DerivedDataSegmentBucket stage, IModalOperationController modalOperationController) Description copied from interface:IContextCollectingSession
Schedules a new modal operation with corresponding controller- Specified by:
scheduleModalOperation
in interfaceIContextCollectingSession
- Parameters:
operation
- The operation executable to schedule. May not benull
stage
- The target stage of the operation. May not benull
modalOperationController
- The modal operation controller. May not benull
- Returns:
- The handle of the scheduled operation. May not be
null
-
removeOperation
Description copied from interface:IContextCollectingSession
Removes previously scheduled operation- Specified by:
removeOperation
in interfaceIContextCollectingSession
- Parameters:
handle
- The operation handle. May not benull
-