Class NoopDataContext
- All Implemented Interfaces:
DataContext
DataContext
used for read-only views like entity list views.-
Nested Class Summary
Nested classes/interfaces inherited from interface io.jmix.flowui.model.DataContext
DataContext.ChangeEvent, DataContext.PostSaveEvent, DataContext.PreSaveEvent
-
Field Summary
Modifier and TypeFieldDescriptionprotected org.springframework.context.ApplicationContext
-
Constructor Summary
ConstructorDescriptionNoopDataContext
(org.springframework.context.ApplicationContext applicationContext) -
Method Summary
Modifier and TypeMethodDescriptionaddChangeListener
(Consumer<DataContext.ChangeEvent> listener) Adds a listener toDataContext.ChangeEvent
.addPostSaveListener
(Consumer<DataContext.PostSaveEvent> listener) Adds a listener toDataContext.PostSaveEvent
.addPreSaveListener
(Consumer<DataContext.PreSaveEvent> listener) Adds a listener toDataContext.PreSaveEvent
.void
clear()
Evicts all tracked entities.boolean
Returns true if the context contains the given entity (distinguished by its class and id).<T> T
Creates an entity instance and merges it into the context.void
Removes the entity from the context so the context stops tracking it.void
Clears the lists of created/modified/deleted entities and evicts these entities.<T> T
Returns an entity instance by its class and id.<T> T
find
(T entity) Returns the instance of entity with the same id if it exists in this context.Returns an immutable set of entities registered as modified.Returns a parent context, if any.Returns an immutable set of entities registered for removal.Returns a function which will be used to save data instead of standard implementation.boolean
Returns true if the context has detected changes in the tracked entities.boolean
isModified
(Object entity) Returns true if the context has detected changes in the given entity.boolean
Returns true if the context has registered removal of the given entity.merge
(Collection entities) Merge the given entities into the context.merge
(Collection entities, MergeOptions options) Merge the given entities into the context.<T> T
merge
(T entity) Same asDataContext.merge(Object, MergeOptions)
with default options.<T> T
merge
(T entity, MergeOptions options) Merge the given entity into the context.void
Removes the entity from the context and registers it as deleted.save()
Saves changed and removed instances using DataManager or a custom save delegate.void
setModified
(Object entity, boolean modified) Registers or unregisters the given entity as modified.void
setParent
(DataContext parentContext) Sets the parent context.void
setSaveDelegate
(Function<SaveContext, Set<Object>> delegate) Sets a function which will be used to save data instead of standard implementation.
-
Field Details
-
applicationContext
protected org.springframework.context.ApplicationContext applicationContext
-
-
Constructor Details
-
NoopDataContext
public NoopDataContext(org.springframework.context.ApplicationContext applicationContext)
-
-
Method Details
-
find
Description copied from interface:DataContext
Returns an entity instance by its class and id.- Specified by:
find
in interfaceDataContext
- Returns:
- entity instance or null if there is no such entity in the context
-
find
public <T> T find(T entity) Description copied from interface:DataContext
Returns the instance of entity with the same id if it exists in this context.- Specified by:
find
in interfaceDataContext
- Returns:
- entity instance or null if there is no such entity in the context
-
contains
Description copied from interface:DataContext
Returns true if the context contains the given entity (distinguished by its class and id).- Specified by:
contains
in interfaceDataContext
-
merge
Description copied from interface:DataContext
Merge the given entity into the context. The whole object graph with all references will be merged.If an entity with the same identifier already exists in the context, the passed entity state is copied into it and the existing instance is returned. Otherwise, a copy of the passed instance is registered in the context and returned.
If the given instance is new and the context doesn't contain an instance with the same identifier, the context will save the new instance on
DataContext.save()
. Otherwise, even if some attributes of the merged instance are changed as a result of copying the state of the passed instance, the merged instance will not be saved. Such modifications are considered as a result of loading more fresh state from the database.WARNING: use the returned value because it is always a different object instance. The only case when you get the same instance is if the input was previously returned from the same context as a result of
DataContext.find(Class, Object)
ormerge()
.- Specified by:
merge
in interfaceDataContext
- Parameters:
entity
- instance to mergeoptions
- merge options- Returns:
- the instance which is tracked by the context
-
merge
public <T> T merge(T entity) Description copied from interface:DataContext
Same asDataContext.merge(Object, MergeOptions)
with default options.- Specified by:
merge
in interfaceDataContext
-
merge
Description copied from interface:DataContext
Merge the given entities into the context. The whole object graph for each element of the collection with all references will be merged.Same as
DataContext.merge(Object)
but for a collection of instances.- Specified by:
merge
in interfaceDataContext
- Returns:
- set of instances tracked by the context
-
merge
Description copied from interface:DataContext
Merge the given entities into the context. The whole object graph for each element of the collection with all references will be merged.Same as
DataContext.merge(Object, MergeOptions)
but for a collection of instances.- Specified by:
merge
in interfaceDataContext
- Returns:
- set of instances tracked by the context
-
remove
Description copied from interface:DataContext
Removes the entity from the context and registers it as deleted. The entity will be removed from the data store upon subsequent call toDataContext.save()
.If the given entity is not in the context, nothing happens.
- Specified by:
remove
in interfaceDataContext
-
evict
Description copied from interface:DataContext
Removes the entity from the context so the context stops tracking it.If the given entity is not in the context, nothing happens.
- Specified by:
evict
in interfaceDataContext
-
evictModified
public void evictModified()Description copied from interface:DataContext
Clears the lists of created/modified/deleted entities and evicts these entities.- Specified by:
evictModified
in interfaceDataContext
-
clear
public void clear()Description copied from interface:DataContext
Evicts all tracked entities.- Specified by:
clear
in interfaceDataContext
- See Also:
-
create
Description copied from interface:DataContext
Creates an entity instance and merges it into the context.Same as:
Foo foo = dataContext.merge(metadata.create(Foo.class));
- Specified by:
create
in interfaceDataContext
- Parameters:
entityClass
- entity class- Returns:
- a new instance which is tracked by the context
-
hasChanges
public boolean hasChanges()Description copied from interface:DataContext
Returns true if the context has detected changes in the tracked entities.- Specified by:
hasChanges
in interfaceDataContext
-
isModified
Description copied from interface:DataContext
Returns true if the context has detected changes in the given entity.- Specified by:
isModified
in interfaceDataContext
-
setModified
Description copied from interface:DataContext
Registers or unregisters the given entity as modified.- Specified by:
setModified
in interfaceDataContext
- Parameters:
entity
- entity instance which is already merged into the contextmodified
- true to register or false to unregister
-
getModified
Description copied from interface:DataContext
Returns an immutable set of entities registered as modified.- Specified by:
getModified
in interfaceDataContext
-
isRemoved
Description copied from interface:DataContext
Returns true if the context has registered removal of the given entity.- Specified by:
isRemoved
in interfaceDataContext
-
getRemoved
Description copied from interface:DataContext
Returns an immutable set of entities registered for removal.- Specified by:
getRemoved
in interfaceDataContext
-
save
Description copied from interface:DataContext
Saves changed and removed instances using DataManager or a custom save delegate. After successful save, the context contains updated instances returned from the backend code.- Specified by:
save
in interfaceDataContext
- Returns:
- set of saved and merged back to the context instances. Does not contain removed instances.
- See Also:
-
getParent
Description copied from interface:DataContext
Returns a parent context, if any. If the parent context is set,DataContext.save()
method merges the changed instances to it instead of sending them to DataManager or a custom save delegate.- Specified by:
getParent
in interfaceDataContext
-
setParent
Description copied from interface:DataContext
Sets the parent context. If the parent context is set,DataContext.save()
method merges the changed instances to it instead of sending them to DataManager or a custom save delegate.- Specified by:
setParent
in interfaceDataContext
-
addChangeListener
Description copied from interface:DataContext
Adds a listener toDataContext.ChangeEvent
.- Specified by:
addChangeListener
in interfaceDataContext
-
addPreSaveListener
Description copied from interface:DataContext
Adds a listener toDataContext.PreSaveEvent
.You can also add an event listener declaratively using a controller method annotated with
Subscribe
:@Subscribe(target = Target.DATA_CONTEXT) protected void onPreSave(DataContext.PreSaveEvent event) { // handle event here }
- Specified by:
addPreSaveListener
in interfaceDataContext
- Parameters:
listener
- listener- Returns:
- subscription
-
addPostSaveListener
Description copied from interface:DataContext
Adds a listener toDataContext.PostSaveEvent
.You can also add an event listener declaratively using a controller method annotated with
Subscribe
:@Subscribe(target = Target.DATA_CONTEXT) protected void onPostSave(DataContext.PostSaveEvent event) { // handle event here }
- Specified by:
addPostSaveListener
in interfaceDataContext
- Parameters:
listener
- listener- Returns:
- subscription
-
getSaveDelegate
Description copied from interface:DataContext
Returns a function which will be used to save data instead of standard implementation.- Specified by:
getSaveDelegate
in interfaceDataContext
-
setSaveDelegate
Description copied from interface:DataContext
Sets a function which will be used to save data instead of standard implementation.- Specified by:
setSaveDelegate
in interfaceDataContext
-