corda / net.corda.finance.contracts.asset.cash.selection / AbstractCashSelection

AbstractCashSelection

abstract class AbstractCashSelection

Pluggable interface to allow for different cash selection provider implementations Default implementation CashSelectionH2Impl uses H2 database and a custom function within H2 to perform aggregation. Custom implementations must implement this interface and declare their implementation in META-INF/services/net.corda.contracts.asset.CashSelection

Constructors

<init>

AbstractCashSelection(maxRetries: Int = 8, retrySleep: Int = 100, retryCap: Int = 2000)

Pluggable interface to allow for different cash selection provider implementations Default implementation CashSelectionH2Impl uses H2 database and a custom function within H2 to perform aggregation. Custom implementations must implement this interface and declare their implementation in META-INF/services/net.corda.contracts.asset.CashSelection

Functions

executeQuery

abstract fun executeQuery(connection: Connection, amount: Amount<Currency>, lockId: UUID, notary: Party?, onlyFromIssuerParties: Set<AbstractParty>, withIssuerRefs: Set<OpaqueBytes>, withResultSet: (ResultSet) -> Boolean): Boolean

A vendor specific query(ies) to gather Cash states that are available.

isCompatible

abstract fun isCompatible(metadata: DatabaseMetaData): Boolean

Upon dynamically loading configured Cash Selection algorithms declared in META-INF/services this method determines whether the loaded implementation is compatible and usable with the currently loaded JDBC driver. Note: the first loaded implementation to pass this check will be used at run-time.

toString

abstract fun toString(): String

unconsumedCashStatesForSpending

fun unconsumedCashStatesForSpending(services: ServiceHub, amount: Amount<Currency>, onlyFromIssuerParties: Set<AbstractParty> = emptySet(), notary: Party? = null, lockId: UUID, withIssuerRefs: Set<OpaqueBytes> = emptySet()): List<StateAndRef<State>>

Query to gather Cash states that are available and retry if they are temporarily unavailable.

Companion Object Properties

instance

val instance: AtomicReference<AbstractCashSelection>

Companion Object Functions

getInstance

fun getInstance(metadata: () -> DatabaseMetaData): AbstractCashSelection

Extension Functions

contextLogger

fun Any.contextLogger(): Logger

When called from a companion object, returns the logger for the enclosing class.

Inheritors

CashSelectionH2Impl

class CashSelectionH2Impl : AbstractCashSelection

CashSelectionOracleImpl

class CashSelectionOracleImpl : AbstractCashSelection

CashSelectionPostgreSQLImpl

class CashSelectionPostgreSQLImpl : AbstractCashSelection

CashSelectionSQLServerImpl

class CashSelectionSQLServerImpl : AbstractCashSelection

SQL Server / SQL Azure