Class InMemoryStores

java.lang.Object
com.iantapply.orchestra.adapter.memory.InMemoryStores
All Implemented Interfaces:
com.iantapply.orchestra.port.DefinitionRepository, com.iantapply.orchestra.port.DistributedLock, com.iantapply.orchestra.port.ExecutionRepository

public final class InMemoryStores extends Object implements com.iantapply.orchestra.port.DefinitionRepository, com.iantapply.orchestra.port.ExecutionRepository, com.iantapply.orchestra.port.DistributedLock
Thread-safe in-memory implementation of the core stores and lease provider. Intended for tests, development, and single-process installations.
  • Nested Class Summary

    Nested classes/interfaces inherited from interface com.iantapply.orchestra.port.DistributedLock

    com.iantapply.orchestra.port.DistributedLock.Lease
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates empty in-memory definition, execution, and lease stores.
    Creates empty stores using the supplied clock for deterministic lease expiry.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    compareAndSet(long expectedVersion, com.iantapply.orchestra.domain.EventExecution replacement)
     
    void
    create(com.iantapply.orchestra.domain.EventExecution execution)
     
    Optional<com.iantapply.orchestra.api.EventDefinition>
     
    Optional<com.iantapply.orchestra.domain.EventExecution>
    find(UUID id)
     
    Collection<com.iantapply.orchestra.domain.EventExecution>
    findActive(int limit)
     
    Collection<com.iantapply.orchestra.api.EventDefinition>
     
    Collection<com.iantapply.orchestra.domain.EventExecution>
    findDue(Instant now, int limit)
     
    void
    replaceAll(Collection<com.iantapply.orchestra.api.EventDefinition> replacement)
     
    void
    save(com.iantapply.orchestra.api.EventDefinition definition)
     
    Optional<com.iantapply.orchestra.port.DistributedLock.Lease>
    tryAcquire(String key, Duration duration)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • InMemoryStores

      public InMemoryStores()
      Creates empty in-memory definition, execution, and lease stores.
    • InMemoryStores

      public InMemoryStores(Clock clock)
      Creates empty stores using the supplied clock for deterministic lease expiry.
      Parameters:
      clock - lease expiry clock
  • Method Details

    • save

      public void save(com.iantapply.orchestra.api.EventDefinition definition)
      Specified by:
      save in interface com.iantapply.orchestra.port.DefinitionRepository
    • find

      public Optional<com.iantapply.orchestra.api.EventDefinition> find(String id)
      Specified by:
      find in interface com.iantapply.orchestra.port.DefinitionRepository
    • findAll

      public Collection<com.iantapply.orchestra.api.EventDefinition> findAll()
      Specified by:
      findAll in interface com.iantapply.orchestra.port.DefinitionRepository
    • replaceAll

      public void replaceAll(Collection<com.iantapply.orchestra.api.EventDefinition> replacement)
      Specified by:
      replaceAll in interface com.iantapply.orchestra.port.DefinitionRepository
    • create

      public void create(com.iantapply.orchestra.domain.EventExecution execution)
      Specified by:
      create in interface com.iantapply.orchestra.port.ExecutionRepository
    • find

      public Optional<com.iantapply.orchestra.domain.EventExecution> find(UUID id)
      Specified by:
      find in interface com.iantapply.orchestra.port.ExecutionRepository
    • findDue

      public Collection<com.iantapply.orchestra.domain.EventExecution> findDue(Instant now, int limit)
      Specified by:
      findDue in interface com.iantapply.orchestra.port.ExecutionRepository
    • findActive

      public Collection<com.iantapply.orchestra.domain.EventExecution> findActive(int limit)
      Specified by:
      findActive in interface com.iantapply.orchestra.port.ExecutionRepository
    • compareAndSet

      public boolean compareAndSet(long expectedVersion, com.iantapply.orchestra.domain.EventExecution replacement)
      Specified by:
      compareAndSet in interface com.iantapply.orchestra.port.ExecutionRepository
    • tryAcquire

      public Optional<com.iantapply.orchestra.port.DistributedLock.Lease> tryAcquire(String key, Duration duration)
      Specified by:
      tryAcquire in interface com.iantapply.orchestra.port.DistributedLock