mirror of
https://github.com/corda/corda.git
synced 2025-05-29 13:44:25 +00:00
ENT-11386: Using NodeAttachmentService
instead of fat interface ServiceHub
. (#7670)
This commit is contained in:
parent
50a6f2f495
commit
a95b854b1e
@ -1201,7 +1201,7 @@ abstract class AbstractNode<S>(val configuration: NodeConfiguration,
|
|||||||
override lateinit var networkParameters: NetworkParameters
|
override lateinit var networkParameters: NetworkParameters
|
||||||
|
|
||||||
init {
|
init {
|
||||||
this@AbstractNode.attachments.servicesForResolution = this
|
this@AbstractNode.attachments.nodeVerificationSupport = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun start(myInfo: NodeInfo, networkParameters: NetworkParameters) {
|
fun start(myInfo: NodeInfo, networkParameters: NetworkParameters) {
|
||||||
|
@ -32,7 +32,7 @@ import net.corda.core.internal.entries
|
|||||||
import net.corda.core.internal.isUploaderTrusted
|
import net.corda.core.internal.isUploaderTrusted
|
||||||
import net.corda.core.internal.readFully
|
import net.corda.core.internal.readFully
|
||||||
import net.corda.core.internal.utilities.ZipBombDetector
|
import net.corda.core.internal.utilities.ZipBombDetector
|
||||||
import net.corda.core.node.ServicesForResolution
|
import net.corda.core.internal.verification.NodeVerificationSupport
|
||||||
import net.corda.core.node.services.AttachmentId
|
import net.corda.core.node.services.AttachmentId
|
||||||
import net.corda.core.node.services.vault.AttachmentQueryCriteria
|
import net.corda.core.node.services.vault.AttachmentQueryCriteria
|
||||||
import net.corda.core.node.services.vault.AttachmentSort
|
import net.corda.core.node.services.vault.AttachmentSort
|
||||||
@ -90,7 +90,7 @@ class NodeAttachmentService @JvmOverloads constructor(
|
|||||||
) : AttachmentStorageInternal, SingletonSerializeAsToken() {
|
) : AttachmentStorageInternal, SingletonSerializeAsToken() {
|
||||||
|
|
||||||
// This is to break the circular dependency.
|
// This is to break the circular dependency.
|
||||||
lateinit var servicesForResolution: ServicesForResolution
|
lateinit var nodeVerificationSupport: NodeVerificationSupport
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val log = contextLogger()
|
private val log = contextLogger()
|
||||||
@ -390,7 +390,7 @@ class NodeAttachmentService @JvmOverloads constructor(
|
|||||||
|
|
||||||
private fun increaseDefaultVersionIfWhitelistedAttachment(contractClassNames: List<ContractClassName>, contractVersionFromFile: Int, attachmentId: AttachmentId) =
|
private fun increaseDefaultVersionIfWhitelistedAttachment(contractClassNames: List<ContractClassName>, contractVersionFromFile: Int, attachmentId: AttachmentId) =
|
||||||
if (contractVersionFromFile == DEFAULT_CORDAPP_VERSION) {
|
if (contractVersionFromFile == DEFAULT_CORDAPP_VERSION) {
|
||||||
val versions = contractClassNames.mapNotNull { servicesForResolution.networkParameters.whitelistedContractImplementations[it]?.indexOf(attachmentId) }
|
val versions = contractClassNames.mapNotNull { nodeVerificationSupport.networkParameters.whitelistedContractImplementations[it]?.indexOf(attachmentId) }
|
||||||
.filter { it >= 0 }.map { it + 1 } // +1 as versions starts from 1 not 0
|
.filter { it >= 0 }.map { it + 1 } // +1 as versions starts from 1 not 0
|
||||||
val max = versions.maxOrNull()
|
val max = versions.maxOrNull()
|
||||||
if (max != null && max > contractVersionFromFile) {
|
if (max != null && max > contractVersionFromFile) {
|
||||||
@ -416,7 +416,7 @@ class NodeAttachmentService @JvmOverloads constructor(
|
|||||||
// set the hash field of the new attachment record.
|
// set the hash field of the new attachment record.
|
||||||
|
|
||||||
val bytes = inputStream.readFully()
|
val bytes = inputStream.readFully()
|
||||||
require(!ZipBombDetector.scanZip(ByteArrayInputStream(bytes), servicesForResolution.networkParameters.maxTransactionSize.toLong())) {
|
require(!ZipBombDetector.scanZip(ByteArrayInputStream(bytes), nodeVerificationSupport.networkParameters.maxTransactionSize.toLong())) {
|
||||||
"The attachment is too large and exceeds both max transaction size and the maximum allowed compression ratio"
|
"The attachment is too large and exceeds both max transaction size and the maximum allowed compression ratio"
|
||||||
}
|
}
|
||||||
val id = bytes.sha256()
|
val id = bytes.sha256()
|
||||||
|
@ -10,8 +10,8 @@ import net.corda.core.crypto.SecureHash;
|
|||||||
import net.corda.core.identity.AbstractParty;
|
import net.corda.core.identity.AbstractParty;
|
||||||
import net.corda.core.identity.CordaX500Name;
|
import net.corda.core.identity.CordaX500Name;
|
||||||
import net.corda.core.identity.Party;
|
import net.corda.core.identity.Party;
|
||||||
|
import net.corda.core.internal.verification.NodeVerificationSupport;
|
||||||
import net.corda.core.messaging.DataFeed;
|
import net.corda.core.messaging.DataFeed;
|
||||||
import net.corda.core.node.ServicesForResolution;
|
|
||||||
import net.corda.core.node.services.AttachmentStorage;
|
import net.corda.core.node.services.AttachmentStorage;
|
||||||
import net.corda.core.node.services.IdentityService;
|
import net.corda.core.node.services.IdentityService;
|
||||||
import net.corda.core.node.services.Vault;
|
import net.corda.core.node.services.Vault;
|
||||||
@ -97,9 +97,9 @@ public class VaultQueryJavaTests {
|
|||||||
vaultFiller = new VaultFiller(services, DUMMY_NOTARY);
|
vaultFiller = new VaultFiller(services, DUMMY_NOTARY);
|
||||||
vaultService = services.getVaultService();
|
vaultService = services.getVaultService();
|
||||||
storage = new NodeAttachmentService(new MetricRegistry(), new TestingNamedCacheFactory(100), database);
|
storage = new NodeAttachmentService(new MetricRegistry(), new TestingNamedCacheFactory(100), database);
|
||||||
ServicesForResolution serviceForResolution = mock(ServicesForResolution.class);
|
NodeVerificationSupport nodeVerificationSupport = mock(NodeVerificationSupport.class);
|
||||||
((NodeAttachmentService) storage).servicesForResolution = serviceForResolution;
|
((NodeAttachmentService) storage).nodeVerificationSupport = nodeVerificationSupport;
|
||||||
doReturn(testNetworkParameters()).when(serviceForResolution).getNetworkParameters();
|
doReturn(testNetworkParameters()).when(nodeVerificationSupport).getNetworkParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
@ -6,7 +6,7 @@ import net.corda.core.internal.AttachmentTrustCalculator
|
|||||||
import net.corda.core.internal.AttachmentTrustInfo
|
import net.corda.core.internal.AttachmentTrustInfo
|
||||||
import net.corda.core.internal.hash
|
import net.corda.core.internal.hash
|
||||||
import net.corda.core.internal.read
|
import net.corda.core.internal.read
|
||||||
import net.corda.core.node.ServicesForResolution
|
import net.corda.core.internal.verification.NodeVerificationSupport
|
||||||
import net.corda.coretesting.internal.rigorousMock
|
import net.corda.coretesting.internal.rigorousMock
|
||||||
import net.corda.node.services.persistence.NodeAttachmentService
|
import net.corda.node.services.persistence.NodeAttachmentService
|
||||||
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||||
@ -47,7 +47,7 @@ class AttachmentTrustCalculatorTest {
|
|||||||
private lateinit var database: CordaPersistence
|
private lateinit var database: CordaPersistence
|
||||||
private lateinit var storage: NodeAttachmentService
|
private lateinit var storage: NodeAttachmentService
|
||||||
private lateinit var attachmentTrustCalculator: AttachmentTrustCalculator
|
private lateinit var attachmentTrustCalculator: AttachmentTrustCalculator
|
||||||
private val services = rigorousMock<ServicesForResolution>().also {
|
private val nodeVerificationSupport = rigorousMock<NodeVerificationSupport>().also {
|
||||||
doReturn(testNetworkParameters()).whenever(it).networkParameters
|
doReturn(testNetworkParameters()).whenever(it).networkParameters
|
||||||
}
|
}
|
||||||
private val cacheFactory = TestingNamedCacheFactory()
|
private val cacheFactory = TestingNamedCacheFactory()
|
||||||
@ -61,7 +61,7 @@ class AttachmentTrustCalculatorTest {
|
|||||||
it.start()
|
it.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
storage.servicesForResolution = services
|
storage.nodeVerificationSupport = nodeVerificationSupport
|
||||||
attachmentTrustCalculator = NodeAttachmentTrustCalculator(storage, database, cacheFactory)
|
attachmentTrustCalculator = NodeAttachmentTrustCalculator(storage, database, cacheFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ import net.corda.core.internal.cordapp.CordappImpl.Companion.DEFAULT_CORDAPP_VER
|
|||||||
import net.corda.core.internal.hash
|
import net.corda.core.internal.hash
|
||||||
import net.corda.core.internal.read
|
import net.corda.core.internal.read
|
||||||
import net.corda.core.internal.readFully
|
import net.corda.core.internal.readFully
|
||||||
import net.corda.core.node.ServicesForResolution
|
import net.corda.core.internal.verification.NodeVerificationSupport
|
||||||
import net.corda.core.node.services.AttachmentId
|
import net.corda.core.node.services.AttachmentId
|
||||||
import net.corda.core.node.services.vault.AttachmentQueryCriteria.AttachmentsQueryCriteria
|
import net.corda.core.node.services.vault.AttachmentQueryCriteria.AttachmentsQueryCriteria
|
||||||
import net.corda.core.node.services.vault.AttachmentSort
|
import net.corda.core.node.services.vault.AttachmentSort
|
||||||
@ -84,7 +84,7 @@ class NodeAttachmentServiceTest {
|
|||||||
private lateinit var database: CordaPersistence
|
private lateinit var database: CordaPersistence
|
||||||
private lateinit var storage: NodeAttachmentService
|
private lateinit var storage: NodeAttachmentService
|
||||||
private lateinit var devModeStorage: NodeAttachmentService
|
private lateinit var devModeStorage: NodeAttachmentService
|
||||||
private val services = rigorousMock<ServicesForResolution>().also {
|
private val nodeVerificationSupport = rigorousMock<NodeVerificationSupport>().also {
|
||||||
doReturn(testNetworkParameters()).whenever(it).networkParameters
|
doReturn(testNetworkParameters()).whenever(it).networkParameters
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,13 +105,13 @@ class NodeAttachmentServiceTest {
|
|||||||
it.start()
|
it.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
storage.servicesForResolution = services
|
storage.nodeVerificationSupport = nodeVerificationSupport
|
||||||
devModeStorage = NodeAttachmentService(MetricRegistry(), TestingNamedCacheFactory(), database, true).also {
|
devModeStorage = NodeAttachmentService(MetricRegistry(), TestingNamedCacheFactory(), database, true).also {
|
||||||
database.transaction {
|
database.transaction {
|
||||||
it.start()
|
it.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
devModeStorage.servicesForResolution = services
|
devModeStorage.nodeVerificationSupport = nodeVerificationSupport
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
Loading…
x
Reference in New Issue
Block a user