CORDA-2098: State pointers are now comparable. (#4494)

* State pointers are now data classes, so now comparable.

* Pointers now are not data classes. Implemented hashCode and equals for comparability.
This commit is contained in:
Roger Willis 2019-01-08 11:03:57 +00:00 committed by GitHub
parent 93d256649f
commit eea348768b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -65,6 +65,19 @@ class StaticPointer<T : ContractState>(override val pointer: StateRef, override
override fun resolve(ltx: LedgerTransaction): StateAndRef<T> {
return ltx.referenceInputRefsOfType(type).single { pointer == it.ref }
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is StaticPointer<*>) return false
if (pointer != other.pointer) return false
return true
}
override fun hashCode(): Int {
return pointer.hashCode()
}
}
/**
@ -118,4 +131,17 @@ class LinearPointer<T : LinearState>(override val pointer: UniqueIdentifier, ove
override fun resolve(ltx: LedgerTransaction): StateAndRef<T> {
return ltx.referenceInputRefsOfType(type).single { pointer == it.state.data.linearId }
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is LinearPointer<*>) return false
if (pointer != other.pointer) return false
return true
}
override fun hashCode(): Int {
return pointer.hashCode()
}
}