Class NoopDataContext

java.lang.Object
io.jmix.flowui.model.impl.NoopDataContext
All Implemented Interfaces:
DataContext

public class NoopDataContext extends Object implements DataContext
Dummy implementation of DataContext used for read-only views like entity list views.
  • Field Details

    • applicationContext

      protected org.springframework.context.ApplicationContext applicationContext
  • Constructor Details

    • NoopDataContext

      public NoopDataContext(org.springframework.context.ApplicationContext applicationContext)
  • Method Details

    • find

      @Nullable public <T> T find(Class<T> entityClass, Object entityId)
      Description copied from interface: DataContext
      Returns an entity instance by its class and id.
      Specified by:
      find in interface DataContext
      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 interface DataContext
      Returns:
      entity instance or null if there is no such entity in the context
    • contains

      public boolean contains(Object entity)
      Description copied from interface: DataContext
      Returns true if the context contains the given entity (distinguished by its class and id).
      Specified by:
      contains in interface DataContext
    • merge

      public <T> T merge(T entity, MergeOptions options)
      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) or merge().

      Specified by:
      merge in interface DataContext
      Parameters:
      entity - instance to merge
      options - merge options
      Returns:
      the instance which is tracked by the context
    • merge

      public <T> T merge(T entity)
      Description copied from interface: DataContext
      Same as DataContext.merge(Object, MergeOptions) with default options.
      Specified by:
      merge in interface DataContext
    • merge

      public EntitySet merge(Collection entities, MergeOptions options)
      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 interface DataContext
      Returns:
      set of instances tracked by the context
    • merge

      public EntitySet merge(Collection entities)
      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 interface DataContext
      Returns:
      set of instances tracked by the context
    • remove

      public void remove(Object entity)
      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 to DataContext.save().

      If the given entity is not in the context, nothing happens.

      Specified by:
      remove in interface DataContext
    • evict

      public void evict(Object entity)
      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 interface DataContext
    • 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 interface DataContext
    • clear

      public void clear()
      Description copied from interface: DataContext
      Evicts all tracked entities.
      Specified by:
      clear in interface DataContext
      See Also:
    • create

      public <T> T create(Class<T> entityClass)
      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 interface DataContext
      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 interface DataContext
    • isModified

      public boolean isModified(Object entity)
      Description copied from interface: DataContext
      Returns true if the context has detected changes in the given entity.
      Specified by:
      isModified in interface DataContext
    • setModified

      public void setModified(Object entity, boolean modified)
      Description copied from interface: DataContext
      Registers or unregisters the given entity as modified.
      Specified by:
      setModified in interface DataContext
      Parameters:
      entity - entity instance which is already merged into the context
      modified - true to register or false to unregister
    • getModified

      public Set getModified()
      Description copied from interface: DataContext
      Returns an immutable set of entities registered as modified.
      Specified by:
      getModified in interface DataContext
    • isRemoved

      public boolean isRemoved(Object entity)
      Description copied from interface: DataContext
      Returns true if the context has registered removal of the given entity.
      Specified by:
      isRemoved in interface DataContext
    • getRemoved

      public Set getRemoved()
      Description copied from interface: DataContext
      Returns an immutable set of entities registered for removal.
      Specified by:
      getRemoved in interface DataContext
    • save

      public EntitySet 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 interface DataContext
      Returns:
      set of saved and merged back to the context instances. Does not contain removed instances.
      See Also:
    • getParent

      public DataContext 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 interface DataContext
    • setParent

      public void setParent(DataContext parentContext)
      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 interface DataContext
    • addChangeListener

      public Subscription addChangeListener(Consumer<DataContext.ChangeEvent> listener)
      Description copied from interface: DataContext
      Adds a listener to DataContext.ChangeEvent.
      Specified by:
      addChangeListener in interface DataContext
    • addPreSaveListener

      public Subscription addPreSaveListener(Consumer<DataContext.PreSaveEvent> listener)
      Description copied from interface: DataContext
      Adds a listener to DataContext.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 interface DataContext
      Parameters:
      listener - listener
      Returns:
      subscription
    • addPostSaveListener

      public Subscription addPostSaveListener(Consumer<DataContext.PostSaveEvent> listener)
      Description copied from interface: DataContext
      Adds a listener to DataContext.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 interface DataContext
      Parameters:
      listener - listener
      Returns:
      subscription
    • getSaveDelegate

      public Function<SaveContext,Set<Object>> getSaveDelegate()
      Description copied from interface: DataContext
      Returns a function which will be used to save data instead of standard implementation.
      Specified by:
      getSaveDelegate in interface DataContext
    • setSaveDelegate

      public void setSaveDelegate(Function<SaveContext,Set<Object>> delegate)
      Description copied from interface: DataContext
      Sets a function which will be used to save data instead of standard implementation.
      Specified by:
      setSaveDelegate in interface DataContext