Interface PersistenceContext

  • All Known Implementing Classes:
    DefaultPersistenceContext, StorageRequest

    public interface PersistenceContext
    Captures all parameters related to persistence of an item data. While persisting a complex item with nested item(s), a context is created for each item being persisted.
    • Method Detail

      • getIntegrationItem

        @Nonnull
        IntegrationItem getIntegrationItem()
        Retrieves item data to be persisted.
        Returns:
        item data to be persisted into an ItemModel.
      • getReferencedContext

        PersistenceContext getReferencedContext​(TypeAttributeDescriptor attribute)
        Retrieves the persistence context for an item referenced by the specified attribute
        Parameters:
        attribute - specifies referenced item
        Returns:
        the context containing information about the referenced item
      • getReferencedContexts

        java.util.Collection<PersistenceContext> getReferencedContexts​(TypeAttributeDescriptor attribute)
        Retrieves the persistence contexts for the items referenced by the specified attribute
        Parameters:
        attribute - specifies referenced items
        Returns:
        the context containing information about the referenced items
      • getSourceContext

        java.util.Optional<PersistenceContext> getSourceContext()
        Retrieves the persistence context that the referenced context was gotten from
        Returns:
        parent context, from which this context was retrieved. If this context is the root item context, Optional.empty is returned
      • getContextItem

        java.util.Optional<ItemModel> getContextItem()
        Determines whether the payload item that can be retrieved by getIntegrationItem() method has been persisted already in the course of the root persistent context processing and retrieves the persisted item from the context. This is the case when a nested item refers back to another item present earlier on the payload graph. For example, an Order contains OrderEntries and OrderEntry refers back to its container Order. The already persisted item match should be done by the item type and its key value. Only when those two characteristics match, the context item was already persisted and can be retrieved by this method.
        Returns:
        an item, if this persistent context represents an already persisted payload item from higher levels of the root item graph or an empty Optional, if the item was not persisted yet.
        See Also:
        getIntegrationItem(), putItem(ItemModel)
      • putItem

        void putItem​(ItemModel item)
        Adds the item model corresponding to the payload, i.e. getIntegrationItem(), into this context for being persisted. Every single payload item that is converted to an ItemModel must be put into this context explicitly.
      • getRootContext

        @Nonnull
        PersistenceContext getRootContext()
        Retrieves the top most persistence context
        Returns:
        the root context
      • isReplaceAttributes

        default boolean isReplaceAttributes()
        Indicates the persistence is to replace the item attributes with what's provided in the IntegrationItem. This is primarily applicable to collections. The default behavior is to append to the collection. With this method being true, the item's collection attribute will be replaced instead of appended.
        Returns:
        true means to replace attributes, otherwise false.
      • isItemCanBeCreated

        boolean isItemCanBeCreated()
        Determines whether a new item model can be created for the context payload.
        Returns:
        true, when new item can be create, if an item matching the context was not found in the persistent storage; false, if the context implies update only and therefore the item should not be created, if it does not exist yet.
      • getAcceptLocale

        @Nonnull
        java.util.Locale getAcceptLocale()
        Indicates locale, in which data must be returned in the response to the persistence request.
        Returns:
        locale to be used for localized attribute values in the response. The locale should be always explicitly specified in this context, so that clients would not need to duplicate logic for determining a default value to be used for returned data.
      • getContentLocale

        @Nonnull
        default java.util.Locale getContentLocale()
        Indicates the language, in which localized attributes content is provided.
        Returns:
        content locale that must be always explicitly specified in this context, so that clients would not need to duplicate logic for determining a locale for the localized attributes in the payload.