Interface ResourceEventStore
-
- All Superinterfaces:
Store
- All Known Subinterfaces:
TrsStore
- All Known Implementing Classes:
AbstractTrsStore
,FileTrsStore
public interface ResourceEventStore extends Store
A write-only, and asynchronous, store forResourceEvent
. This store is to be used by listeners registered in the application to report change events as they occur.Implementations must not block the application while registering events; however, since getting the right
An event store instance is to retrieve withorder
to them requires synchronized access, implementations may opt to store them without an actual order (or any other tag mechanism), so they remain hidden to the TRS feed, up theTrsStore.synchronizeResourceEvents()
method is called to assign them the right order.TrsStoreSynchronizer.getResourceEventStore()
, which ensures method calls are correctly non-synchronized across the whole web application.- Since:
- 1.10.0
- See Also:
TrsStoreSynchronizer.getResourceEventStore()
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description boolean
isStoringEventsOf(Optional<String> projectAreaId)
Determines whether the store is currently able to store events and, optionally, for a particular project.void
store(ResourceEvent... resourceEvents)
Stores one or a fewresource events
.void
store(Function<Consumer<ResourceEvent>,?> eventsProvider)
Storesresource events
.-
Methods inherited from interface com.sodius.oslc.server.trs.store.Store
corrupt, isCorrupted
-
-
-
-
Method Detail
-
isStoringEventsOf
boolean isStoringEventsOf(Optional<String> projectAreaId)
Determines whether the store is currently able to store events and, optionally, for a particular project.This method must not raise any exception,
false
must be returned silently if any of them occurred while computing the result. Implementation must verify theTRS store is not corrupted
, the correspondingbase is computed
and afunctional user
is set. If a project is given, it is then recommended to rely onTrsFeedManager.isExposedProjectArea(String)
.- Parameters:
projectAreaId
- the optional project identifier.- Returns:
true
if TRS events should be stored- Since:
- 3.3.0
-
store
void store(ResourceEvent... resourceEvents)
Stores one or a fewresource events
. If a larger volume of events is to send at once, client is recommended to rather use thestore(Function)
method.Implementations MUST store events, without blocking the application, only if the
isStoringEventsOf(Optional)
method returnstrue
, for each of the givenevent seeds
, and must keep them hidden from the TRS feed up to theTrsStore.synchronizeResourceEvents()
method is called.This method is intended to avoid raising
TrsStoreException
, if something went wrong preventing the storage of the event, implementations must handle it silently.- Parameters:
resourceEvents
- events to store.
-
store
void store(Function<Consumer<ResourceEvent>,?> eventsProvider)
Storesresource events
. If only one or a few events are to report at once, client may use the simplerstore(ResourceEvent...)
method.Implementations MUST store events, without blocking the application, only if the
isStoringEventsOf(Optional)
method returnstrue
, for each of the givenevent seeds
, and must keep them hidden from the TRS feed up to theTrsStore.synchronizeResourceEvents()
method is called.This method is intended to avoid raising
TrsStoreException
, if something went wrong preventing the storage of the event, implementations must handle it silently.The function argument provides access to change events to be added in this store. Implementation must call the
apply()
method of this function and use, as argument, aConsumer
to get notified of events. Implementation is advised to use aBufferedConsumer
for optimal performance.- Parameters:
eventsProvider
- a function that provides access to change events to become part of thetrs:ChangeLog
.- See Also:
BufferedConsumer
,store(ResourceEvent...)
-
-