CORDA-4097 Return stream instead of List in getAllCertificates (#6840)

This commit is contained in:
nkovacsx 2021-01-08 09:41:31 +00:00 committed by GitHub
parent 62fe4bc65a
commit 7a079a166b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,6 +11,7 @@ import net.corda.core.identity.x500Matches
import net.corda.core.internal.CertRole import net.corda.core.internal.CertRole
import net.corda.core.internal.NamedCacheFactory import net.corda.core.internal.NamedCacheFactory
import net.corda.core.internal.hash import net.corda.core.internal.hash
import net.corda.core.internal.toSet
import net.corda.core.node.NotaryInfo import net.corda.core.node.NotaryInfo
import net.corda.core.node.services.UnknownAnonymousPartyException import net.corda.core.node.services.UnknownAnonymousPartyException
import net.corda.core.serialization.SingletonSerializeAsToken import net.corda.core.serialization.SingletonSerializeAsToken
@ -45,6 +46,7 @@ import java.security.cert.CollectionCertStoreParameters
import java.security.cert.TrustAnchor import java.security.cert.TrustAnchor
import java.security.cert.X509Certificate import java.security.cert.X509Certificate
import java.util.* import java.util.*
import java.util.stream.Stream
import javax.annotation.concurrent.ThreadSafe import javax.annotation.concurrent.ThreadSafe
import javax.persistence.Column import javax.persistence.Column
import javax.persistence.Entity import javax.persistence.Entity
@ -337,18 +339,19 @@ class PersistentIdentityService(cacheFactory: NamedCacheFactory) : SingletonSeri
} }
} }
private fun getAllCertificates(session: Session): List<NodeInfoSchemaV1.DBPartyAndCertificate> { private fun getAllCertificates(session: Session): Stream<NodeInfoSchemaV1.DBPartyAndCertificate> {
val criteria = session.criteriaBuilder.createQuery(NodeInfoSchemaV1.DBPartyAndCertificate::class.java) val criteria = session.criteriaBuilder.createQuery(NodeInfoSchemaV1.DBPartyAndCertificate::class.java)
criteria.select(criteria.from(NodeInfoSchemaV1.DBPartyAndCertificate::class.java)) criteria.select(criteria.from(NodeInfoSchemaV1.DBPartyAndCertificate::class.java))
return session.createQuery(criteria).resultList return session.createQuery(criteria).stream()
} }
override fun partiesFromName(query: String, exactMatch: Boolean): Set<Party> { override fun partiesFromName(query: String, exactMatch: Boolean): Set<Party> {
return database.transaction { return database.transaction {
getAllCertificates(session) getAllCertificates(session).use { stream ->
.map { it.toLegalIdentityAndCert() } stream.map { it.toLegalIdentityAndCert() }
.filter { x500Matches(query, exactMatch, it.name) } .filter { x500Matches(query, exactMatch, it.name) }
.map { it.party }.toSet() .map { it.party }.toSet()
}
} }
} }