From 7a079a166be9a8d3dfe5341a40f0584b0d4c952c Mon Sep 17 00:00:00 2001 From: nkovacsx <57627796+nkovacsx@users.noreply.github.com> Date: Fri, 8 Jan 2021 09:41:31 +0000 Subject: [PATCH] CORDA-4097 Return stream instead of List in getAllCertificates (#6840) --- .../identity/PersistentIdentityService.kt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt b/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt index 94fce82c23..20e47fb2fe 100644 --- a/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt +++ b/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt @@ -11,6 +11,7 @@ import net.corda.core.identity.x500Matches import net.corda.core.internal.CertRole import net.corda.core.internal.NamedCacheFactory import net.corda.core.internal.hash +import net.corda.core.internal.toSet import net.corda.core.node.NotaryInfo import net.corda.core.node.services.UnknownAnonymousPartyException import net.corda.core.serialization.SingletonSerializeAsToken @@ -45,6 +46,7 @@ import java.security.cert.CollectionCertStoreParameters import java.security.cert.TrustAnchor import java.security.cert.X509Certificate import java.util.* +import java.util.stream.Stream import javax.annotation.concurrent.ThreadSafe import javax.persistence.Column import javax.persistence.Entity @@ -337,18 +339,19 @@ class PersistentIdentityService(cacheFactory: NamedCacheFactory) : SingletonSeri } } - private fun getAllCertificates(session: Session): List { + private fun getAllCertificates(session: Session): Stream { val criteria = session.criteriaBuilder.createQuery(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 { return database.transaction { - getAllCertificates(session) - .map { it.toLegalIdentityAndCert() } - .filter { x500Matches(query, exactMatch, it.name) } - .map { it.party }.toSet() + getAllCertificates(session).use { stream -> + stream.map { it.toLegalIdentityAndCert() } + .filter { x500Matches(query, exactMatch, it.name) } + .map { it.party }.toSet() + } } }