Package org.apache.cayenne.access

## Class DataRowStore

- java.lang.Object
- - org.apache.cayenne.access.DataRowStore

- All Implemented Interfaces:
    `Serializable`

      public class DataRowStore
      extends Object
      implements Serializable

  A fixed size cache of DataRows keyed by ObjectId.
  Since:
    1.1
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected EventManager` | `eventManager` |
    `protected EventSubject` | `eventSubject` |
    `protected String` | `name` |
    `protected EventBridge` | `remoteNotificationsHandler` |
    `static int` | `SNAPSHOT_CACHE_SIZE_DEFAULT` |
    `static long` | `SNAPSHOT_EXPIRATION_DEFAULT` |
    `protected ConcurrentMap<ObjectId,​DataRow>` | `snapshots` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DataRowStore​(String name, RuntimeProperties properties, EventManager eventManager)` | Creates new DataRowStore with a specified name and a set of properties.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `clear()` | Expires and removes all stored snapshots without sending any notification events.
    `void` | `forgetSnapshot​(ObjectId id)` | Evicts a snapshot from cache without generating any SnapshotEvents.
    `DataRow` | `getCachedSnapshot​(ObjectId oid)` | Returns cached snapshot or null if no snapshot is currently cached for the given ObjectId.
    `protected EventBridge` | `getEventBridge()` |
    `EventManager` | `getEventManager()` | Returns an EventManager associated with this DataRowStore.
    `String` | `getName()` | Returns the name of this DataRowStore.
    `EventSubject` | `getSnapshotEventSubject()` | Returns EventSubject used by this SnapshotCache to notify of snapshot changes.
    `protected void` | `initWithProperties​(RuntimeProperties properties)` |
    `int` | `maximumSize()` | Returns maximum allowed cache size.
    `void` | `processRemoteEvent​(SnapshotEvent event)` | Handles remote events received via EventBridge.
    `void` | `processSnapshotChanges​(Object postedBy, Map<ObjectId,​DataRow> updatedSnapshots, Collection<ObjectId> deletedSnapshotIds, Collection<ObjectId> invalidatedSnapshotIds, Collection<ObjectId> indirectlyModifiedIds)` | Processes changes made to snapshots.
    `protected void` | `setEventBridge​(EventBridge eventBridge)` |
    `void` | `setEventManager​(EventManager eventManager)` | Sets an EventManager associated with this DataRowStore.
    `void` | `setName​(String name)` | Sets the name of this DataRowStore.
    `void` | `shutdown()` | Shuts down any remote notification connections, and clears internal cache.
    `int` | `size()` | Returns current cache size.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SNAPSHOT_EXPIRATION_DEFAULT

          public static final long SNAPSHOT_EXPIRATION_DEFAULT

      See Also:
        Constant Field Values

    - #### SNAPSHOT_CACHE_SIZE_DEFAULT

          public static final int SNAPSHOT_CACHE_SIZE_DEFAULT

      See Also:
        Constant Field Values

    - #### name

          protected String name

    - #### snapshots

          protected ConcurrentMap<ObjectId,​DataRow> snapshots

    - #### eventManager

          protected transient EventManager eventManager

    - #### remoteNotificationsHandler

          protected transient EventBridge remoteNotificationsHandler

    - #### eventSubject

          protected transient EventSubject eventSubject

  - ### Constructor Detail

    - #### DataRowStore

          public DataRowStore​(String name,
                              RuntimeProperties properties,
                              EventManager eventManager)

      Creates new DataRowStore with a specified name and a set of properties. If no properties are defined, default values are used.
      Parameters:
        `name` - DataRowStore name. Used to identify this DataRowStore in events, etc. Can't be null.
        `properties` - Properties map used to configure DataRowStore parameters. Can be null.
        `eventManager` - EventManager that should be used for posting and receiving events.
      Since:
        1.2

  - ### Method Detail

    - #### initWithProperties

          protected void initWithProperties​(RuntimeProperties properties)

    - #### setEventBridge

          protected void setEventBridge​(EventBridge eventBridge)

    - #### getEventBridge

          protected EventBridge getEventBridge()

    - #### size

          public int size()

      Returns current cache size.

    - #### maximumSize

          public int maximumSize()

      Returns maximum allowed cache size.

    - #### shutdown

          public void shutdown()

      Shuts down any remote notification connections, and clears internal cache.

    - #### getName

          public String getName()

      Returns the name of this DataRowStore. Name allows to create EventSubjects for event notifications addressed to or sent from this DataRowStore.

    - #### setName

          public void setName​(String name)

      Sets the name of this DataRowStore. Name allows to create EventSubjects for event notifications addressed to or sent from this DataRowStore.

    - #### getEventManager

          public EventManager getEventManager()

      Returns an EventManager associated with this DataRowStore.
      Since:
        1.2

    - #### setEventManager

          public void setEventManager​(EventManager eventManager)

      Sets an EventManager associated with this DataRowStore.
      Since:
        1.2

    - #### getCachedSnapshot

          public DataRow getCachedSnapshot​(ObjectId oid)

      Returns cached snapshot or null if no snapshot is currently cached for the given ObjectId.

    - #### getSnapshotEventSubject

          public EventSubject getSnapshotEventSubject()

      Returns EventSubject used by this SnapshotCache to notify of snapshot changes.

    - #### clear

          public void clear()

      Expires and removes all stored snapshots without sending any notification events.

    - #### forgetSnapshot

          public void forgetSnapshot​(ObjectId id)

      Evicts a snapshot from cache without generating any SnapshotEvents.

    - #### processRemoteEvent

          public void processRemoteEvent​(SnapshotEvent event)

      Handles remote events received via EventBridge. Performs needed snapshot updates, and then resends the event to local listeners.

    - #### processSnapshotChanges

          public void processSnapshotChanges​(Object postedBy,
                                             Map<ObjectId,​DataRow> updatedSnapshots,
                                             Collection<ObjectId> deletedSnapshotIds,
                                             Collection<ObjectId> invalidatedSnapshotIds,
                                             Collection<ObjectId> indirectlyModifiedIds)

      Processes changes made to snapshots. Modifies internal cache state, and then sends the event to all listeners. Source of these changes is usually an ObjectStore.