Interface TrackedResourceCollector

All Known Implementing Classes:
ProcessResourceCollector

public interface TrackedResourceCollector
A tracked resources (and their change events) collector.
Since:
1.10.0
  • Method Details

    • collectBaseMembers

      void collectBaseMembers(Collection<ProjectArea> trsExposedProjects, Consumer<ResourceSeed> baseMembersConsumer)
      Collects all base members, accessible by the current user.

      Implementation must notify the consumer of each artifact of the application that must be reported as TRS base member. Consumers may raise CancellationException to indicate the collecting process must stop, but implementations must no propagate this exception, this is a convenient way to stop a searching process.

      Parameters:
      trsExposedProjects - the collection of TRS exposed projects
      baseMembersConsumer - base members consumer.
      Throws:
      CompletionException - if consumer raise it to stop the collecting process due an error occurred.
      Since:
      4.0.0
    • getEventCollectorStrategy

      default TrackedResourceCollector.EventCollectorStrategy getEventCollectorStrategy()
      Determines when to collect events by querying changes in the host application. Default implementation returns TrackedResourceCollector.EventCollectorStrategy.NEVER, which implies collectResourceEventsAfter is never called. Subclasses that override collectResourceEventsAfter must also override this method to either return TrackedResourceCollector.EventCollectorStrategy.STARTUP or TrackedResourceCollector.EventCollectorStrategy.ALWAYS.
      Returns:
      the strategy indicating when to collect resource events
      Since:
      3.7.0
    • collectResourceEventsAfter

      default void collectResourceEventsAfter(Date after, Collection<ProjectArea> trsExposedProjects, Consumer<ResourceEvent> resourceEventsConsumer)
      Collects latest change events after a moment in time, visible by the current user.

      Implementations must call this consumer's accept method per change event since after chronologically - this means older events first and newer events last.

      Implementers are advised to prefer using listeners in the application to record events as they occur with ResourceEventStore.store(ResourceEvent...), which is the most reliable way to handle large volume of events. This method should be implemented in following cases:

      • Some changes can be queried in the application and cannot be captured using a listener.
      • TRS implementation is started after the host application or can be disabled for a period of time, which makes some events not to be captured by listeners
      Consumers may raise CancellationException to indicate the collecting process must stop, but implementations must no propagate this exception, this is a convenient way to stop a searching process.

      Default implementation throws UnsupportedOperationException, as default implementation of getEventCollectorStrategy() is to return NEVER. Applications overriding getEventCollectorStrategy() must also override this method.

      Parameters:
      after - the reference time to search changed resources.
      trsExposedProjects - the collection of TRS exposed projects
      resourceEventsConsumer - change events consumer.
      Throws:
      CompletionException - if consumer raise it to stop the collecting process due an error occurred.
      Since:
      4.0.0