diff --git a/applications/workers/workers-smoketest/build.gradle b/applications/workers/workers-smoketest/build.gradle index a582ad4cdbc..0336480bdd1 100644 --- a/applications/workers/workers-smoketest/build.gradle +++ b/applications/workers/workers-smoketest/build.gradle @@ -70,6 +70,7 @@ dependencies { smokeTestImplementation project(':components:flow:flow-rest-resource-service') smokeTestImplementation project(':libs:crypto:crypto-core') + smokeTestImplementation project(':libs:crypto:crypto-core-avro') // TODO: this reference is only to get the serialialiser. I don't think this should be in the // messagebus project. smokeTestImplementation project(":libs:messaging:kafka-message-bus-impl") diff --git a/applications/workers/workers-smoketest/src/smokeTest/kotlin/net/corda/applications/workers/smoketest/services/CryptoRestSmokeTests.kt b/applications/workers/workers-smoketest/src/smokeTest/kotlin/net/corda/applications/workers/smoketest/services/CryptoRestSmokeTests.kt index f52b7ff4a0b..c6b66a228b7 100644 --- a/applications/workers/workers-smoketest/src/smokeTest/kotlin/net/corda/applications/workers/smoketest/services/CryptoRestSmokeTests.kt +++ b/applications/workers/workers-smoketest/src/smokeTest/kotlin/net/corda/applications/workers/smoketest/services/CryptoRestSmokeTests.kt @@ -2,7 +2,7 @@ package net.corda.applications.workers.smoketest.services import net.corda.applications.workers.smoketest.utils.PLATFORM_VERSION import net.corda.crypto.core.SecureHashImpl -import net.corda.crypto.core.toAvro +import net.corda.crypto.core.avro.toAvro import net.corda.data.KeyValuePair import net.corda.data.KeyValuePairList import net.corda.data.crypto.SecureHashes diff --git a/components/chunking/chunk-db-write-impl/build.gradle b/components/chunking/chunk-db-write-impl/build.gradle index bcc585cbebe..c051b0307cf 100644 --- a/components/chunking/chunk-db-write-impl/build.gradle +++ b/components/chunking/chunk-db-write-impl/build.gradle @@ -29,6 +29,7 @@ dependencies { implementation project(':libs:chunking:chunking-core') implementation project(':libs:configuration:configuration-core') implementation project(':libs:crypto:crypto-core') + implementation project(':libs:crypto:crypto-core-avro') implementation project(':libs:db:db-core') implementation project(':libs:db:db-orm') implementation project(':libs:db:db-admin') diff --git a/components/chunking/chunk-db-write-impl/src/integrationTest/kotlin/net/corda/chunking/db/impl/tests/DatabaseChunkPersistenceTest.kt b/components/chunking/chunk-db-write-impl/src/integrationTest/kotlin/net/corda/chunking/db/impl/tests/DatabaseChunkPersistenceTest.kt index e056090ab69..1a5a5b8be32 100644 --- a/components/chunking/chunk-db-write-impl/src/integrationTest/kotlin/net/corda/chunking/db/impl/tests/DatabaseChunkPersistenceTest.kt +++ b/components/chunking/chunk-db-write-impl/src/integrationTest/kotlin/net/corda/chunking/db/impl/tests/DatabaseChunkPersistenceTest.kt @@ -18,7 +18,7 @@ import net.corda.chunking.datamodel.ChunkingEntities import net.corda.chunking.db.impl.AllChunksReceived import net.corda.chunking.db.impl.persistence.database.DatabaseChunkPersistence import net.corda.crypto.core.SecureHashImpl -import net.corda.crypto.core.toAvro +import net.corda.crypto.core.avro.toAvro import net.corda.data.chunking.Chunk import net.corda.db.admin.impl.ClassloaderChangeLog import net.corda.db.admin.impl.LiquibaseSchemaMigratorImpl diff --git a/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/StatusPublisher.kt b/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/StatusPublisher.kt index 5827bb84bd2..cdcebd85ed7 100644 --- a/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/StatusPublisher.kt +++ b/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/StatusPublisher.kt @@ -1,6 +1,6 @@ package net.corda.chunking.db.impl.persistence -import net.corda.crypto.core.toAvro +import net.corda.crypto.core.avro.toAvro import net.corda.data.ExceptionEnvelope import net.corda.data.chunking.UploadStatus import net.corda.data.chunking.UploadStatusKey diff --git a/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/database/DatabaseChunkPersistence.kt b/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/database/DatabaseChunkPersistence.kt index 6544bc279f6..2069c39fb72 100644 --- a/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/database/DatabaseChunkPersistence.kt +++ b/components/chunking/chunk-db-write-impl/src/main/kotlin/net/corda/chunking/db/impl/persistence/database/DatabaseChunkPersistence.kt @@ -6,10 +6,10 @@ import net.corda.chunking.datamodel.ChunkEntity import net.corda.chunking.datamodel.ChunkPropertyEntity import net.corda.chunking.db.impl.AllChunksReceived import net.corda.chunking.db.impl.persistence.ChunkPersistence +import net.corda.crypto.core.avro.toAvro +import net.corda.crypto.core.avro.toCorda import net.corda.crypto.core.bytes import net.corda.crypto.core.parseSecureHash -import net.corda.crypto.core.toAvro -import net.corda.crypto.core.toCorda import net.corda.data.KeyValuePair import net.corda.data.KeyValuePairList import net.corda.data.chunking.Chunk diff --git a/components/chunking/chunk-db-write-impl/src/test/kotlin/net/corda/chunking/db/impl/ChunkWriteToDbProcessorSimpleTest.kt b/components/chunking/chunk-db-write-impl/src/test/kotlin/net/corda/chunking/db/impl/ChunkWriteToDbProcessorSimpleTest.kt index 94ffc47b39e..3a4b99abb25 100644 --- a/components/chunking/chunk-db-write-impl/src/test/kotlin/net/corda/chunking/db/impl/ChunkWriteToDbProcessorSimpleTest.kt +++ b/components/chunking/chunk-db-write-impl/src/test/kotlin/net/corda/chunking/db/impl/ChunkWriteToDbProcessorSimpleTest.kt @@ -4,8 +4,8 @@ import net.corda.chunking.RequestId import net.corda.chunking.db.impl.persistence.ChunkPersistence import net.corda.chunking.db.impl.persistence.StatusPublisher import net.corda.crypto.core.SecureHashImpl +import net.corda.crypto.core.avro.toAvro import net.corda.crypto.core.parseSecureHash -import net.corda.crypto.core.toAvro import net.corda.data.chunking.Chunk import net.corda.messaging.api.records.Record import net.corda.v5.base.exceptions.CordaRuntimeException diff --git a/components/crypto/crypto-client-hsm-impl/build.gradle b/components/crypto/crypto-client-hsm-impl/build.gradle index d65b6b2acd0..4f9b9e8af8e 100644 --- a/components/crypto/crypto-client-hsm-impl/build.gradle +++ b/components/crypto/crypto-client-hsm-impl/build.gradle @@ -20,6 +20,7 @@ dependencies { implementation project(":components:crypto:crypto-component-core-impl") implementation project(":libs:configuration:configuration-core") implementation project(":libs:crypto:crypto-impl") + implementation project(":libs:crypto:crypto-impl-utils") implementation project(":libs:messaging:messaging") implementation project(":libs:utilities") diff --git a/components/crypto/crypto-client-hsm-impl/src/main/kotlin/net/corda/crypto/client/hsm/impl/HSMRegistrationClientImpl.kt b/components/crypto/crypto-client-hsm-impl/src/main/kotlin/net/corda/crypto/client/hsm/impl/HSMRegistrationClientImpl.kt index 53325922b51..bfd1e268376 100644 --- a/components/crypto/crypto-client-hsm-impl/src/main/kotlin/net/corda/crypto/client/hsm/impl/HSMRegistrationClientImpl.kt +++ b/components/crypto/crypto-client-hsm-impl/src/main/kotlin/net/corda/crypto/client/hsm/impl/HSMRegistrationClientImpl.kt @@ -2,8 +2,8 @@ package net.corda.crypto.client.hsm.impl import net.corda.crypto.component.impl.retry import net.corda.crypto.component.impl.toClientException -import net.corda.crypto.impl.createWireRequestContext -import net.corda.crypto.impl.toWire +import net.corda.crypto.impl.utils.createWireRequestContext +import net.corda.crypto.impl.utils.toWire import net.corda.data.crypto.wire.CryptoNoContentValue import net.corda.data.crypto.wire.hsm.HSMAssociationInfo import net.corda.data.crypto.wire.hsm.registration.HSMRegistrationRequest diff --git a/components/crypto/crypto-client-impl/build.gradle b/components/crypto/crypto-client-impl/build.gradle index dc664b72e79..cd745a50d8b 100644 --- a/components/crypto/crypto-client-impl/build.gradle +++ b/components/crypto/crypto-client-impl/build.gradle @@ -20,7 +20,9 @@ dependencies { implementation project(":components:crypto:crypto-component-core-impl") implementation project(":libs:configuration:configuration-core") implementation project(':libs:crypto:cipher-suite-impl') + implementation project(':libs:crypto:crypto-impl-utils') implementation project(':libs:crypto:crypto-core') + implementation project(":libs:crypto:crypto-core-avro") implementation project(":libs:messaging:messaging") implementation project(':libs:platform-info') implementation project(":libs:utilities") diff --git a/components/crypto/crypto-client-impl/src/main/kotlin/net/corda/crypto/client/impl/CryptoOpsClientImpl.kt b/components/crypto/crypto-client-impl/src/main/kotlin/net/corda/crypto/client/impl/CryptoOpsClientImpl.kt index a131cc1a796..eb02b14f8e1 100644 --- a/components/crypto/crypto-client-impl/src/main/kotlin/net/corda/crypto/client/impl/CryptoOpsClientImpl.kt +++ b/components/crypto/crypto-client-impl/src/main/kotlin/net/corda/crypto/client/impl/CryptoOpsClientImpl.kt @@ -13,8 +13,8 @@ import net.corda.crypto.core.SecureHashImpl import net.corda.crypto.core.ShortHash import net.corda.crypto.core.bytes import net.corda.crypto.core.publicKeyIdFromBytes -import net.corda.crypto.impl.createWireRequestContext -import net.corda.crypto.impl.toWire +import net.corda.crypto.impl.utils.createWireRequestContext +import net.corda.crypto.impl.utils.toWire import net.corda.data.KeyValuePairList import net.corda.data.crypto.SecureHashes import net.corda.data.crypto.ShortHashes @@ -49,6 +49,7 @@ import java.nio.ByteBuffer import java.security.PublicKey import java.time.Duration import java.util.UUID +import net.corda.crypto.core.avro.toAvro @Suppress("TooManyFunctions") class CryptoOpsClientImpl( @@ -64,9 +65,6 @@ class CryptoOpsClientImpl( this.hashes.map { SecureHashImpl(it.algorithm, it.bytes.array()) } - - private fun SecureHash.toAvro(): net.corda.data.crypto.SecureHash = - net.corda.data.crypto.SecureHash(this.algorithm, ByteBuffer.wrap(bytes)) } fun getSupportedSchemes(tenantId: String, category: String): List { @@ -454,4 +452,4 @@ private fun PublicKey.fullId(keyEncodingService: KeyEncodingService, digestServi digestService.hash( keyEncodingService.encodeAsByteArray(this), DigestAlgorithmName.SHA2_256 - ) \ No newline at end of file + ) diff --git a/components/crypto/crypto-service-impl/build.gradle b/components/crypto/crypto-service-impl/build.gradle index e5323327cf6..3ab605a718f 100644 --- a/components/crypto/crypto-service-impl/build.gradle +++ b/components/crypto/crypto-service-impl/build.gradle @@ -32,6 +32,7 @@ dependencies { implementation project(":libs:configuration:configuration-core") implementation project(':libs:crypto:cipher-suite-impl') implementation project(':libs:crypto:crypto-config-impl') + implementation project(":libs:crypto:crypto-impl-utils") implementation project(':libs:crypto:crypto-flow') implementation project(':libs:flows:external-event-responses') implementation project(":libs:messaging:messaging") diff --git a/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/SigningKeyInfoExtensions.kt b/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/SigningKeyInfoExtensions.kt new file mode 100644 index 00000000000..df12f3f0f9b --- /dev/null +++ b/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/SigningKeyInfoExtensions.kt @@ -0,0 +1,20 @@ +package net.corda.crypto.service.impl + +import java.nio.ByteBuffer +import net.corda.crypto.cipher.suite.KeyEncodingService +import net.corda.crypto.core.SigningKeyInfo +import net.corda.data.crypto.wire.CryptoSigningKey + +fun SigningKeyInfo.toCryptoSigningKey(keyEncodingService: KeyEncodingService): CryptoSigningKey = CryptoSigningKey( + this.id.value, + this.tenantId, + this.category, + this.alias, + this.hsmAlias, + ByteBuffer.wrap(keyEncodingService.encodeAsByteArray(this.publicKey)), + this.schemeCodeName, + this.wrappingKeyAlias, + this.encodingVersion, + this.externalId, + this.timestamp +) diff --git a/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessor.kt b/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessor.kt index b2535615154..45e12e11fc8 100644 --- a/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessor.kt +++ b/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessor.kt @@ -11,8 +11,9 @@ import net.corda.crypto.core.KeyOrderBy import net.corda.crypto.core.SecureHashImpl import net.corda.crypto.core.ShortHash import net.corda.crypto.impl.retrying.CryptoRetryingExecutor -import net.corda.crypto.impl.toMap -import net.corda.crypto.impl.toSignatureSpec +import net.corda.crypto.impl.utils.toMap +import net.corda.crypto.impl.utils.toSignatureSpec +import net.corda.crypto.service.impl.toCryptoSigningKey import net.corda.data.crypto.SecureHashes import net.corda.data.crypto.ShortHashes import net.corda.data.crypto.wire.CryptoDerivedSharedSecret diff --git a/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessor.kt b/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessor.kt index 421504f789d..ee8f348b118 100644 --- a/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessor.kt +++ b/components/crypto/crypto-service-impl/src/main/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessor.kt @@ -7,8 +7,8 @@ import net.corda.crypto.core.SecureHashImpl import net.corda.crypto.core.ShortHash import net.corda.crypto.core.publicKeyIdFromBytes import net.corda.crypto.impl.retrying.CryptoRetryingExecutor -import net.corda.crypto.impl.toMap -import net.corda.crypto.impl.toSignatureSpec +import net.corda.crypto.impl.utils.toMap +import net.corda.crypto.impl.utils.toSignatureSpec import net.corda.crypto.service.CryptoExceptionCategorizer import net.corda.crypto.service.CryptoExceptionType import net.corda.data.KeyValuePairList @@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory import java.nio.ByteBuffer import java.time.Duration import java.time.Instant +import net.corda.crypto.service.impl.toCryptoSigningKey @Suppress("LongParameterList") class CryptoFlowOpsProcessor( diff --git a/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessorTests.kt b/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessorTests.kt index d94b157a291..bed80dc2fe8 100644 --- a/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessorTests.kt +++ b/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/bus/CryptoOpsBusProcessorTests.kt @@ -26,7 +26,7 @@ import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestInstance import java.time.Instant -import java.util.* +import java.util.UUID import java.util.concurrent.CompletableFuture import kotlin.test.assertEquals import kotlin.test.assertNotNull diff --git a/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessorTests.kt b/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessorTests.kt index 730ada4d7e2..72d1d03a3ee 100644 --- a/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessorTests.kt +++ b/components/crypto/crypto-service-impl/src/test/kotlin/net/corda/crypto/service/impl/rpc/CryptoFlowOpsProcessorTests.kt @@ -26,7 +26,6 @@ import net.corda.crypto.service.impl.infra.assertClose import net.corda.data.KeyValuePairList import net.corda.data.crypto.wire.CryptoResponseContext import net.corda.data.crypto.wire.CryptoSignatureWithKey -import net.corda.data.crypto.wire.CryptoSigningKey import net.corda.data.crypto.wire.CryptoSigningKeys import net.corda.data.crypto.wire.ops.flow.FlowOpsRequest import net.corda.data.crypto.wire.ops.flow.FlowOpsResponse @@ -54,7 +53,6 @@ import org.mockito.kotlin.doReturn import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.whenever -import java.nio.ByteBuffer import java.security.PublicKey import java.time.Instant import java.util.UUID @@ -481,8 +479,5 @@ class CryptoFlowOpsProcessorTests { } on { timestamp } doAnswer { Instant.now() } on { publicKey } doAnswer { key0 } - on { toCryptoSigningKey(any()) } doAnswer { mock { - on { publicKey } doAnswer { ByteBuffer.wrap(keyEncodingService.encodeAsByteArray(key0)) } - } } } -} \ No newline at end of file +} diff --git a/components/flow/flow-service/src/integrationTest/kotlin/net/corda/flow/testing/tests/ExternalEventAcceptanceTest.kt b/components/flow/flow-service/src/integrationTest/kotlin/net/corda/flow/testing/tests/ExternalEventAcceptanceTest.kt index 75f87613eae..74b0dcc2b09 100644 --- a/components/flow/flow-service/src/integrationTest/kotlin/net/corda/flow/testing/tests/ExternalEventAcceptanceTest.kt +++ b/components/flow/flow-service/src/integrationTest/kotlin/net/corda/flow/testing/tests/ExternalEventAcceptanceTest.kt @@ -1,12 +1,12 @@ package net.corda.flow.testing.tests import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.flow.event.external.ExternalEventResponseErrorType import net.corda.data.flow.output.FlowStates import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.EntityResponse import net.corda.data.persistence.FindEntities +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.fiber.FlowIORequest @@ -15,6 +15,7 @@ import net.corda.flow.state.FlowCheckpoint import net.corda.flow.testing.context.ALICE_FLOW_KEY_MAPPER import net.corda.flow.testing.context.FlowServiceTestBase import net.corda.flow.testing.context.flowResumedWithError +import net.corda.flow.utils.toAvro import net.corda.schema.configuration.FlowConfig import net.corda.v5.base.exceptions.CordaRuntimeException import org.junit.jupiter.api.BeforeEach @@ -48,7 +49,7 @@ class ExternalEventAcceptanceTest : FlowServiceTestBase() { val ANY_INPUT = EntityRequest( ALICE_HOLDING_IDENTITY, FindEntities("entity class name", listOf(BYTE_BUFFER)), - ExternalEventContext(REQUEST_ID, FLOW_ID1, KeyValuePairList(emptyList())) + ExternalEventContext(REQUEST_ID, FLOW_ID1, emptyMap()).toAvro() ) val ANY_RESPONSE = EntityResponse(listOf(BYTE_BUFFER), KeyValuePairList(emptyList()), null) const val STRING_INPUT = "this is an input string" diff --git a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/CreateSignatureExternalEventFactory.kt b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/CreateSignatureExternalEventFactory.kt index b3aac75344c..50cb1b7fa76 100644 --- a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/CreateSignatureExternalEventFactory.kt +++ b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/CreateSignatureExternalEventFactory.kt @@ -3,10 +3,11 @@ package net.corda.flow.application.crypto.external.events import net.corda.crypto.core.DigitalSignatureWithKey import net.corda.crypto.flow.CryptoFlowOpsTransformer import net.corda.data.crypto.wire.ops.flow.FlowOpsResponse -import net.corda.data.flow.event.external.ExternalEventContext +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.v5.base.annotations.CordaSerializable import net.corda.v5.crypto.SignatureSpec import org.osgi.service.component.annotations.Activate @@ -33,7 +34,7 @@ class CreateSignatureExternalEventFactory @Activate constructor( signatureSpec = parameters.signatureSpec, data = parameters.bytes, context = emptyMap(), - flowExternalEventContext = flowExternalEventContext + flowExternalEventContext = flowExternalEventContext.toAvro() ) return ExternalEventRecord(payload = flowOpsRequest) } diff --git a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/FilterMyKeysExternalEventFactory.kt b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/FilterMyKeysExternalEventFactory.kt index a80b02e19fa..8cc567bb784 100644 --- a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/FilterMyKeysExternalEventFactory.kt +++ b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/crypto/external/events/FilterMyKeysExternalEventFactory.kt @@ -2,10 +2,11 @@ package net.corda.flow.application.crypto.external.events import net.corda.crypto.flow.CryptoFlowOpsTransformer import net.corda.data.crypto.wire.ops.flow.FlowOpsResponse -import net.corda.data.flow.event.external.ExternalEventContext +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import org.osgi.service.component.annotations.Activate import org.osgi.service.component.annotations.Component import org.osgi.service.component.annotations.Reference @@ -28,7 +29,7 @@ class FilterMyKeysExternalEventFactory @Activate constructor( .createFilterMyKeys( tenantId = checkpoint.holdingIdentity.shortHash.value, candidateKeys = parameters, - flowExternalEventContext = flowExternalEventContext + flowExternalEventContext = flowExternalEventContext.toAvro() ) return ExternalEventRecord(payload = flowOpsRequest) } diff --git a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/AbstractPersistenceExternalEventFactory.kt b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/AbstractPersistenceExternalEventFactory.kt index d2bee129dbc..ff626df8740 100644 --- a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/AbstractPersistenceExternalEventFactory.kt +++ b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/AbstractPersistenceExternalEventFactory.kt @@ -1,11 +1,12 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.EntityResponse +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toAvro import java.nio.ByteBuffer @@ -25,7 +26,7 @@ abstract class AbstractPersistenceExternalEventFactory : payload = EntityRequest.newBuilder() .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) .setRequest(createRequest(parameters)) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .build() ) } @@ -33,4 +34,4 @@ abstract class AbstractPersistenceExternalEventFactory : override fun resumeWith(checkpoint: FlowCheckpoint, response: EntityResponse): List { return response.results } -} \ No newline at end of file +} diff --git a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactory.kt b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactory.kt index a66fc5a89e1..9ee36764c06 100644 --- a/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactory.kt +++ b/components/flow/flow-service/src/main/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactory.kt @@ -1,13 +1,14 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.EntityResponse import net.corda.data.persistence.FindAll +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.persistence.query.OffsetResultSetExecutor import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.utilities.toByteArrays import net.corda.v5.base.annotations.CordaSerializable import net.corda.virtualnode.toAvro @@ -27,7 +28,7 @@ class FindAllExternalEventFactory: ExternalEventFactory() val payload = "payload" - val externalEventContext = ExternalEventContext("request id", "flow id", KeyValuePairList(emptyList())) + val externalEventContext = ExternalEventContext("request id", "flow id", emptyMap()) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -45,7 +46,7 @@ class AbstractPersistenceExternalEventFactoryTest { EntityRequest( ALICE_X500_HOLDING_IDENTITY, payload, - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactoryTest.kt b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactoryTest.kt index c9f8163c85a..36be9c61996 100644 --- a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactoryTest.kt +++ b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindAllExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.FindAll import net.corda.flow.ALICE_X500_HOLDING_IDENTITY +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -18,7 +18,7 @@ class FindAllExternalEventFactoryTest { @Test fun `creates a record containing an EntityRequest with a FindAll payload`() { val checkpoint = mock() - val externalEventContext = ExternalEventContext("request id", "flow id", KeyValuePairList(emptyList())) + val externalEventContext = ExternalEventContext("request id", "flow id", emptyMap()) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -32,9 +32,9 @@ class FindAllExternalEventFactoryTest { EntityRequest( ALICE_X500_HOLDING_IDENTITY, FindAll(String::class.java.canonicalName, 0, 0), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) } -} \ No newline at end of file +} diff --git a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindExternalEventFactoryTest.kt b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindExternalEventFactoryTest.kt index ddd4ffe0d29..a1d0500ac97 100644 --- a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindExternalEventFactoryTest.kt +++ b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/FindExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.FindEntities import net.corda.flow.ALICE_X500_HOLDING_IDENTITY +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -19,7 +19,7 @@ class FindExternalEventFactoryTest { @Test fun `creates a record containing an EntityRequest with a FindEntities payload`() { val checkpoint = mock() - val externalEventContext = ExternalEventContext("request id", "flow id", KeyValuePairList(emptyList())) + val externalEventContext = ExternalEventContext("request id", "flow id", emptyMap()) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -33,9 +33,9 @@ class FindExternalEventFactoryTest { EntityRequest( ALICE_X500_HOLDING_IDENTITY, FindEntities(String::class.java.canonicalName, listOf(ByteBuffer.wrap(byteArrayOf(1)))), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) } -} \ No newline at end of file +} diff --git a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/MergeExternalEventFactoryTest.kt b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/MergeExternalEventFactoryTest.kt index 9412601268b..93398a1fd14 100644 --- a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/MergeExternalEventFactoryTest.kt +++ b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/MergeExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.MergeEntities import net.corda.flow.ALICE_X500_HOLDING_IDENTITY +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -19,7 +19,7 @@ class MergeExternalEventFactoryTest { @Test fun `creates a record containing an EntityRequest with a MergeEntities payload`() { val checkpoint = mock() - val externalEventContext = ExternalEventContext("request id", "flow id", KeyValuePairList(emptyList())) + val externalEventContext = ExternalEventContext("request id", "flow id", emptyMap()) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -33,9 +33,9 @@ class MergeExternalEventFactoryTest { EntityRequest( ALICE_X500_HOLDING_IDENTITY, MergeEntities(listOf(ByteBuffer.wrap(byteArrayOf(1)))), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) } -} \ No newline at end of file +} diff --git a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/NamedQueryExternalEventFactoryTest.kt b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/NamedQueryExternalEventFactoryTest.kt index b8767184ead..d5c685f8c0c 100644 --- a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/NamedQueryExternalEventFactoryTest.kt +++ b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/NamedQueryExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.FindWithNamedQuery import net.corda.flow.ALICE_X500_HOLDING_IDENTITY +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -18,7 +18,7 @@ class NamedQueryExternalEventFactoryTest { @Test fun `creates a record containing an EntityRequest with a FindWithNamedQuery payload`() { val checkpoint = mock() - val externalEventContext = ExternalEventContext("request id", "flow id", KeyValuePairList(emptyList())) + val externalEventContext = ExternalEventContext("request id", "flow id", emptyMap()) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -32,7 +32,7 @@ class NamedQueryExternalEventFactoryTest { EntityRequest( ALICE_X500_HOLDING_IDENTITY, FindWithNamedQuery("query", emptyMap(), 1, Int.MAX_VALUE, null), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/PersistExternalEventFactoryTest.kt b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/PersistExternalEventFactoryTest.kt index 7d9f1590126..876ccdc0004 100644 --- a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/PersistExternalEventFactoryTest.kt +++ b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/PersistExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.EntityRequest import net.corda.data.persistence.PersistEntities import net.corda.flow.ALICE_X500_HOLDING_IDENTITY +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -19,7 +19,7 @@ class PersistExternalEventFactoryTest { @Test fun `creates a record containing an EntityRequest with a PersistEntities payload`() { val checkpoint = mock() - val externalEventContext = ExternalEventContext("request id", "flow id", KeyValuePairList(emptyList())) + val externalEventContext = ExternalEventContext("request id", "flow id", emptyMap()) val dedupeId = "dedupeId" whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -33,9 +33,9 @@ class PersistExternalEventFactoryTest { EntityRequest( ALICE_X500_HOLDING_IDENTITY, PersistEntities(listOf(ByteBuffer.wrap(byteArrayOf(1)))), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) } -} \ No newline at end of file +} diff --git a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/RemoveExternalEventFactoryTest.kt b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/RemoveExternalEventFactoryTest.kt index ecbf90f55e7..89a3181f5e9 100644 --- a/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/RemoveExternalEventFactoryTest.kt +++ b/components/flow/flow-service/src/test/kotlin/net/corda/flow/application/persistence/external/events/RemoveExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.flow.application.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.persistence.DeleteEntities import net.corda.data.persistence.EntityRequest import net.corda.flow.ALICE_X500_HOLDING_IDENTITY +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -19,7 +19,7 @@ class RemoveExternalEventFactoryTest { @Test fun `creates a record containing an EntityRequest with a DeleteEntities payload`() { val checkpoint = mock() - val externalEventContext = ExternalEventContext("request id", "flow id", KeyValuePairList(emptyList())) + val externalEventContext = ExternalEventContext("request id", "flow id", emptyMap()) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -33,9 +33,9 @@ class RemoveExternalEventFactoryTest { EntityRequest( ALICE_X500_HOLDING_IDENTITY, DeleteEntities(listOf(ByteBuffer.wrap(byteArrayOf(1)))), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) } -} \ No newline at end of file +} diff --git a/components/flow/flow-service/src/test/kotlin/net/corda/flow/external/events/impl/factory/ExternalEventFactoryMapImplTest.kt b/components/flow/flow-service/src/test/kotlin/net/corda/flow/external/events/impl/factory/ExternalEventFactoryMapImplTest.kt index 4e5ef1c34e5..ed53c25be33 100644 --- a/components/flow/flow-service/src/test/kotlin/net/corda/flow/external/events/impl/factory/ExternalEventFactoryMapImplTest.kt +++ b/components/flow/flow-service/src/test/kotlin/net/corda/flow/external/events/impl/factory/ExternalEventFactoryMapImplTest.kt @@ -1,6 +1,6 @@ package net.corda.flow.external.events.impl.factory -import net.corda.data.flow.event.external.ExternalEventContext +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.pipeline.exceptions.FlowFatalException @@ -73,4 +73,4 @@ class ExternalEventFactoryMapImplTest { throw IllegalArgumentException("Not called") } } -} \ No newline at end of file +} diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/factory/TransactionMetadataFactoryImpl.kt b/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/factory/TransactionMetadataFactoryImpl.kt deleted file mode 100644 index 47fda745fd4..00000000000 --- a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/factory/TransactionMetadataFactoryImpl.kt +++ /dev/null @@ -1,56 +0,0 @@ -package net.corda.ledger.common.flow.impl.transaction.factory - -import net.corda.ledger.common.data.transaction.CordaPackageSummaryImpl -import net.corda.ledger.common.data.transaction.TransactionMetadataImpl -import net.corda.ledger.common.data.transaction.WireTransactionDigestSettings -import net.corda.ledger.common.flow.impl.transaction.getCpiSummary -import net.corda.ledger.common.flow.transaction.factory.TransactionMetadataFactory -import net.corda.libs.platform.PlatformInfoProvider -import net.corda.sandbox.type.UsedByFlow -import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext -import net.corda.v5.application.flows.FlowEngine -import net.corda.v5.ledger.common.transaction.TransactionMetadata -import net.corda.v5.serialization.SingletonSerializeAsToken -import org.osgi.service.component.annotations.Activate -import org.osgi.service.component.annotations.Component -import org.osgi.service.component.annotations.Reference -import org.osgi.service.component.annotations.ServiceScope - -@Component( - service = [TransactionMetadataFactory::class, UsedByFlow::class], - scope = ServiceScope.PROTOTYPE -) -class TransactionMetadataFactoryImpl @Activate constructor( - @Reference(service = CurrentSandboxGroupContext::class) - private val currentSandboxGroupContext: CurrentSandboxGroupContext, - @Reference(service = PlatformInfoProvider::class) - private val platformInfoProvider: PlatformInfoProvider, - @Reference(service = FlowEngine::class) - private val flowEngine: FlowEngine -) : TransactionMetadataFactory, UsedByFlow, SingletonSerializeAsToken { - override fun create(ledgerSpecificMetadata: Map): TransactionMetadata { - val metadata = mapOf( - TransactionMetadataImpl.DIGEST_SETTINGS_KEY to WireTransactionDigestSettings.defaultValues, - TransactionMetadataImpl.PLATFORM_VERSION_KEY to platformInfoProvider.activePlatformVersion, - TransactionMetadataImpl.CPI_METADATA_KEY to flowEngine.getCpiSummary(), - TransactionMetadataImpl.CPK_METADATA_KEY to getCpkSummaries(), - TransactionMetadataImpl.SCHEMA_VERSION_KEY to TransactionMetadataImpl.SCHEMA_VERSION - ) - return TransactionMetadataImpl(metadata + ledgerSpecificMetadata) - } - - private fun getCpkSummaries() = currentSandboxGroupContext - .get() - .sandboxGroup - .metadata - .values - .filter { it.isContractCpk() } - .map { cpk -> - CordaPackageSummaryImpl( - name = cpk.cpkId.name, - version = cpk.cpkId.version, - signerSummaryHash = cpk.cpkId.signerSummaryHash.toString(), - fileChecksum = cpk.fileChecksum.toString() - ) - } -} diff --git a/components/ledger/ledger-consensual-flow/build.gradle b/components/ledger/ledger-consensual-flow/build.gradle index 08887143774..20522600a89 100644 --- a/components/ledger/ledger-consensual-flow/build.gradle +++ b/components/ledger/ledger-consensual-flow/build.gradle @@ -23,11 +23,12 @@ dependencies { implementation 'net.corda:corda-ledger-consensual' implementation 'net.corda:corda-topic-schema' - implementation project(':components:ledger:ledger-common-flow-api') - implementation project(':components:ledger:ledger-common-flow') + implementation project(':libs:ledger:ledger-lib-common-flow-api') + implementation project(':libs:ledger:ledger-common-flow') implementation project(':libs:crypto:cipher-suite') implementation project(':libs:crypto:crypto-core') implementation project(':libs:flows:flow-api') + implementation project(':libs:flows:flow-utils') implementation project(':libs:ledger:ledger-consensual-data') implementation project(':libs:ledger:ledger-common-data') implementation project(":libs:serialization:json-validator") @@ -42,6 +43,7 @@ dependencies { testImplementation project(':libs:serialization:serialization-amqp') testImplementation project(':libs:serialization:serialization-kryo') testImplementation project(':testing:test-serialization') + testImplementation project(':libs:ledger:ledger-lib-common-flow') integrationTestImplementation project(':testing:group-policy-test-common') diff --git a/components/ledger/ledger-consensual-flow/src/main/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactory.kt b/components/ledger/ledger-consensual-flow/src/main/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactory.kt index a9263bcb055..61c22416360 100644 --- a/components/ledger/ledger-consensual-flow/src/main/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactory.kt +++ b/components/ledger/ledger-consensual-flow/src/main/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactory.kt @@ -1,12 +1,13 @@ package net.corda.ledger.consensual.flow.impl.persistence.external.events -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.persistence.EntityResponse +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toAvro import java.nio.ByteBuffer import java.time.Clock @@ -29,7 +30,7 @@ abstract class AbstractConsensualLedgerExternalEventFactory( .setTimestamp(clock.instant()) .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) .setRequest(createRequest(parameters)) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .setLedgerType(LedgerTypes.CONSENSUAL) .build() ) diff --git a/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactoryTest.kt b/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactoryTest.kt index 329d7f695c5..eead887dd8e 100644 --- a/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactoryTest.kt +++ b/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/AbstractConsensualLedgerExternalEventFactoryTest.kt @@ -1,12 +1,13 @@ package net.corda.ledger.consensual.flow.impl.persistence.external.events import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.identity.HoldingIdentity import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.persistence.EntityResponse +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -41,7 +42,7 @@ class AbstractConsensualLedgerExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -58,7 +59,7 @@ class AbstractConsensualLedgerExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, LedgerTypes.CONSENSUAL, payload, - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt b/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt index 89d78c6e023..a34067ffb9c 100644 --- a/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt +++ b/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.ledger.consensual.flow.impl.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.FindTransaction import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals @@ -25,7 +25,7 @@ class FindTransactionExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) val transactionId = "1234567890123456" val testClock = Clock.fixed(Instant.now(), ZoneId.of("UTC")) @@ -45,7 +45,7 @@ class FindTransactionExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, LedgerTypes.CONSENSUAL, FindTransaction(transactionId, TransactionStatus.VERIFIED.value), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt b/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt index b9e44e12eb3..3f488048b1b 100644 --- a/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt +++ b/components/ledger/ledger-consensual-flow/src/test/kotlin/net/corda/ledger/consensual/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.ledger.consensual.flow.impl.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.ledger.persistence.PersistTransaction +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals @@ -26,7 +26,7 @@ class PersistTransactionExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) val testClock = Clock.fixed(Instant.now(), ZoneId.of("UTC")) @@ -47,7 +47,7 @@ class PersistTransactionExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, LedgerTypes.CONSENSUAL, PersistTransaction(transaction, transactionStatus, emptyList()), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-consensual-flow/test.bndrun b/components/ledger/ledger-consensual-flow/test.bndrun index aed706f9c3b..af64fdfef94 100644 --- a/components/ledger/ledger-consensual-flow/test.bndrun +++ b/components/ledger/ledger-consensual-flow/test.bndrun @@ -18,6 +18,7 @@ -runrequires: \ bnd.identity;id='${project.archivesBaseName}-tests',\ bnd.identity;id='net.corda.ledger-common-flow',\ + bnd.identity;id='net.corda.ledger-lib-common-flow',\ bnd.identity;id='net.corda.crypto-serialization-impl',\ bnd.identity;id='junit-jupiter-engine',\ bnd.identity;id='junit-platform-launcher',\ diff --git a/components/ledger/ledger-utxo-flow/build.gradle b/components/ledger/ledger-utxo-flow/build.gradle index 56f0d1e542a..b7ac6fe557f 100644 --- a/components/ledger/ledger-utxo-flow/build.gradle +++ b/components/ledger/ledger-utxo-flow/build.gradle @@ -27,8 +27,8 @@ dependencies { implementation 'net.corda:corda-topic-schema' implementation libs.jackson.module.kotlin implementation project(':components:flow:flow-service') - implementation project(':components:ledger:ledger-common-flow-api') - implementation project(':components:ledger:ledger-common-flow') + implementation project(':libs:ledger:ledger-lib-common-flow-api') + implementation project(':libs:ledger:ledger-common-flow') implementation project(':components:ledger:notary-worker-selection') implementation project(':components:membership:group-policy') implementation project(':components:membership:membership-group-read') @@ -37,9 +37,11 @@ dependencies { implementation project(':libs:crypto:cipher-suite') implementation project(':libs:crypto:crypto-core') implementation project(':libs:flows:flow-api') + implementation project(':libs:flows:flow-utils') implementation project(':libs:ledger:ledger-common-data') implementation project(':libs:ledger:ledger-utxo-data') implementation project(':libs:ledger:ledger-utxo-transaction-verifier') + implementation project(':libs:ledger-lib-utxo-flow') implementation project(':libs:metrics') implementation project(':libs:platform-info') implementation project(':libs:sandbox') @@ -63,6 +65,7 @@ dependencies { testImplementation libs.jackson.module.kotlin testImplementation libs.jackson.datatype.jsr310 testImplementation project(':libs:crypto:merkle-impl') + testImplementation project(':libs:ledger:ledger-lib-common-flow') integrationTestImplementation project(':testing:sandboxes') integrationTestImplementation project(':testing:sandboxes-testkit') diff --git a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/tests/UtxoFilteredTransactionTest.kt b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/tests/UtxoFilteredTransactionTest.kt index 0ea72e179ce..c28ac8f825c 100644 --- a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/tests/UtxoFilteredTransactionTest.kt +++ b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/tests/UtxoFilteredTransactionTest.kt @@ -2,9 +2,9 @@ package net.corda.ledger.utxo.flow.impl.transaction.filtered.tests import net.corda.crypto.core.parseSecureHash import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowBetweenImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.data.transaction.UtxoOutputInfoComponent -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowBetweenImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.testkit.UtxoLedgerIntegrationTest import net.corda.ledger.utxo.testkit.UtxoStateClassExample import net.corda.ledger.utxo.testkit.createExample diff --git a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedLedgerTransactionKryoSerializationTest.kt b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedLedgerTransactionKryoSerializationTest.kt index e15fa60c209..cf81c7f6d5b 100644 --- a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedLedgerTransactionKryoSerializationTest.kt +++ b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedLedgerTransactionKryoSerializationTest.kt @@ -1,7 +1,7 @@ package net.corda.ledger.utxo.flow.impl.transaction.serializer.tests -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransactionImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoSignedLedgerTransactionImpl import net.corda.ledger.utxo.testkit.UtxoLedgerIntegrationTest import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Assertions.assertDoesNotThrow diff --git a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionAMQPSerializationTest.kt b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionAMQPSerializationTest.kt index 9860e2e9722..819b97d5d1b 100644 --- a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionAMQPSerializationTest.kt +++ b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionAMQPSerializationTest.kt @@ -17,9 +17,6 @@ class UtxoSignedTransactionAMQPSerializationTest : UtxoLedgerIntegrationTest() { val deserialized = serializationService.deserialize(serialised) - assertThat(deserialized.javaClass.name) - .isEqualTo("net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionImpl") - assertThat(deserialized) .isInstanceOf(UtxoSignedTransaction::class.java) .isEqualTo(utxoSignedTransaction) diff --git a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionKryoSerializationTest.kt b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionKryoSerializationTest.kt index 98fd95a85b6..975b4cb1d4c 100644 --- a/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionKryoSerializationTest.kt +++ b/components/ledger/ledger-utxo-flow/src/integrationTest/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/tests/UtxoSignedTransactionKryoSerializationTest.kt @@ -1,6 +1,6 @@ package net.corda.ledger.utxo.flow.impl.transaction.serializer.tests -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.testkit.UtxoLedgerIntegrationTest import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Assertions diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImpl.kt index d0da8c147f8..f3fa7365f08 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImpl.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImpl.kt @@ -4,6 +4,13 @@ import net.corda.flow.application.services.FlowCheckpointService import net.corda.flow.external.events.executor.ExternalEventExecutor import net.corda.flow.persistence.query.ResultSetFactory import net.corda.ledger.common.data.transaction.TransactionStatus +import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoSignedTransactionWithDependencies import net.corda.ledger.utxo.flow.impl.flows.finality.UtxoFinalityFlow import net.corda.ledger.utxo.flow.impl.flows.finality.UtxoReceiveFinalityFlow import net.corda.ledger.utxo.flow.impl.flows.transactionbuilder.ReceiveAndUpdateTransactionBuilderFlow @@ -14,17 +21,10 @@ import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.SendSignedT import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.SendWireTransactionFlow import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerStateQueryService import net.corda.ledger.utxo.flow.impl.persistence.VaultNamedParameterizedQueryImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoBaselinedTransactionBuilder -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionWithDependencies -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionBuilderImpl import net.corda.ledger.utxo.flow.impl.transaction.filtered.factory.UtxoFilteredTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService +import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoBaselinedTransactionBuilder import net.corda.sandbox.type.UsedByFlow import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext import net.corda.utilities.time.UTCClock diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImpl.kt index da7cd4005a0..80836cafe12 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImpl.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImpl.kt @@ -3,9 +3,9 @@ package net.corda.ledger.utxo.flow.impl.flows.backchain import net.corda.ledger.common.data.transaction.TransactionStatus.INVALID import net.corda.ledger.common.data.transaction.TransactionStatus.UNVERIFIED import net.corda.ledger.common.data.transaction.TransactionStatus.VERIFIED +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.flow.impl.flows.finality.getVisibleStateIndexes import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.sandbox.type.SandboxConstants.CORDA_SYSTEM_SERVICE import net.corda.sandbox.type.UsedByFlow import net.corda.utilities.trace diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/FinalityPayload.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/FinalityPayload.kt index 7ae9cf15b63..5f5a55eda73 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/FinalityPayload.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/FinalityPayload.kt @@ -1,6 +1,6 @@ package net.corda.ledger.utxo.flow.impl.flows.finality -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.v5.base.annotations.ConstructorForDeserialization import net.corda.v5.base.annotations.CordaSerializable import net.corda.v5.ledger.utxo.transaction.UtxoSignedTransaction diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlow.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlow.kt index 5cf25197525..815ae80e044 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlow.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlow.kt @@ -2,9 +2,9 @@ package net.corda.ledger.utxo.flow.impl.flows.finality import net.corda.flow.application.services.VersioningService import net.corda.flow.application.versioning.VersionedSendFlowFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.finality.v1.UtxoFinalityFlowV1 import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryDetails -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.libs.platform.PlatformVersion.CORDA_5_1 import net.corda.sandbox.CordaSystemFlow import net.corda.v5.application.flows.CordaInject diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowUtils.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowUtils.kt index 4d92d68f87c..e08cc7c5d9f 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowUtils.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowUtils.kt @@ -1,7 +1,7 @@ package net.corda.ledger.utxo.flow.impl.flows.finality import net.corda.flow.state.asFlowContext -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.utilities.MDC_LOGGED_PREFIX import net.corda.v5.application.flows.FlowEngine import net.corda.v5.base.annotations.Suspendable diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityBaseV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityBaseV1.kt index 6162e358ce9..1b781e8c88f 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityBaseV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityBaseV1.kt @@ -2,9 +2,9 @@ package net.corda.ledger.utxo.flow.impl.flows.finality.v1 import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.flow.flows.Payload +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.sandbox.CordaSystemFlow import net.corda.utilities.debug import net.corda.v5.application.crypto.DigitalSignatureAndMetadata diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1.kt index 69d13d7eceb..cf0c6dff88d 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1.kt @@ -4,6 +4,8 @@ import net.corda.crypto.core.fullId import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.flow.flows.Payload import net.corda.ledger.common.flow.transaction.TransactionMissingSignaturesException +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoSignedTransactionWithDependencies import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainSenderFlow import net.corda.ledger.utxo.flow.impl.flows.backchain.dependencies import net.corda.ledger.utxo.flow.impl.flows.finality.FinalityPayload @@ -12,8 +14,6 @@ import net.corda.ledger.utxo.flow.impl.flows.finality.getVisibleStateIndexes import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryDetails import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionWithDependencies import net.corda.sandbox.CordaSystemFlow import net.corda.utilities.debug import net.corda.utilities.trace diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1.kt index a86c80f9df9..93126f8fcb4 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1.kt @@ -4,6 +4,8 @@ import net.corda.flow.application.GroupParametersLookupInternal import net.corda.ledger.common.data.transaction.TransactionMetadataInternal import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.flow.flows.Payload +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory import net.corda.ledger.utxo.data.transaction.verifyFilteredTransactionAndSignatures import net.corda.ledger.utxo.flow.impl.flows.backchain.InvalidBackchainException import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainResolutionFlow @@ -14,8 +16,6 @@ import net.corda.ledger.utxo.flow.impl.flows.finality.getVisibleStateIndexes import net.corda.ledger.utxo.flow.impl.flows.finality.v1.FinalityNotarizationFailureType.Companion.toFinalityNotarizationFailureType import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParametersVerifier import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory import net.corda.membership.lib.SignedGroupParameters import net.corda.sandbox.CordaSystemFlow import net.corda.utilities.trace diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlow.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlow.kt index 59d0b61cdc3..9d192dadb23 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlow.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlow.kt @@ -2,6 +2,7 @@ package net.corda.ledger.utxo.flow.impl.flows.repair import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.flow.transaction.TransactionMissingSignaturesException +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.finality.getVisibleStateIndexes import net.corda.ledger.utxo.flow.impl.flows.repair.UtxoLedgerRepairFlow.RepairedTransactionResult.Invalid import net.corda.ledger.utxo.flow.impl.flows.repair.UtxoLedgerRepairFlow.RepairedTransactionResult.NotNotarized @@ -9,7 +10,6 @@ import net.corda.ledger.utxo.flow.impl.flows.repair.UtxoLedgerRepairFlow.Repaire import net.corda.ledger.utxo.flow.impl.flows.repair.UtxoLedgerRepairFlow.RepairedTransactionResult.Skipped import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.utilities.debug import net.corda.utilities.time.Clock import net.corda.utilities.time.UTCClock diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/ReceiveAndUpdateTransactionBuilderFlow.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/ReceiveAndUpdateTransactionBuilderFlow.kt index f3592ef259a..73c0f15d8b9 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/ReceiveAndUpdateTransactionBuilderFlow.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/ReceiveAndUpdateTransactionBuilderFlow.kt @@ -2,8 +2,8 @@ package net.corda.ledger.utxo.flow.impl.flows.transactionbuilder import net.corda.flow.application.services.VersioningService import net.corda.flow.application.versioning.VersionedReceiveFlowFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.flow.impl.flows.transactionbuilder.v1.ReceiveAndUpdateTransactionBuilderFlowV1 -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.sandbox.CordaSystemFlow import net.corda.v5.application.flows.CordaInject import net.corda.v5.application.flows.SubFlow diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/SendTransactionBuilderDiffFlow.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/SendTransactionBuilderDiffFlow.kt index e42fb97a1d9..b546093a18e 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/SendTransactionBuilderDiffFlow.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/SendTransactionBuilderDiffFlow.kt @@ -2,10 +2,10 @@ package net.corda.ledger.utxo.flow.impl.flows.transactionbuilder import net.corda.flow.application.services.VersioningService import net.corda.flow.application.versioning.VersionedSendFlowFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.flow.impl.flows.transactionbuilder.v1.SendTransactionBuilderDiffFlowV1 -import net.corda.ledger.utxo.flow.impl.transaction.UtxoBaselinedTransactionBuilder -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoBaselinedTransactionBuilder import net.corda.sandbox.CordaSystemFlow import net.corda.v5.application.flows.CordaInject import net.corda.v5.application.flows.SubFlow diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1.kt index 46a5364e7c5..94bc979878a 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1.kt @@ -1,9 +1,9 @@ package net.corda.ledger.utxo.flow.impl.flows.transactionbuilder.v1 +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.data.transaction.verifyFilteredTransactionAndSignatures import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainResolutionFlow import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.sandbox.CordaSystemFlow import net.corda.utilities.trace import net.corda.v5.application.flows.CordaInject diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1.kt index deb1d44bb36..2441c01f34b 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1.kt @@ -1,9 +1,9 @@ package net.corda.ledger.utxo.flow.impl.flows.transactionbuilder.v1 +import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainSenderFlow import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerStateQueryService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer import net.corda.sandbox.CordaSystemFlow import net.corda.utilities.trace import net.corda.v5.application.flows.CordaInject diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/TransactionBuilderPayload.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/TransactionBuilderPayload.kt index 34e98a5acf0..0c536aeff24 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/TransactionBuilderPayload.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/TransactionBuilderPayload.kt @@ -1,6 +1,6 @@ package net.corda.ledger.utxo.flow.impl.flows.transactionbuilder.v1 -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer import net.corda.v5.base.annotations.ConstructorForDeserialization import net.corda.v5.base.annotations.CordaSerializable import net.corda.v5.ledger.utxo.transaction.filtered.UtxoFilteredTransactionAndSignatures diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveSignedTransactionFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveSignedTransactionFlowV1.kt index b73c9abd0d3..d50e2d2da36 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveSignedTransactionFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveSignedTransactionFlowV1.kt @@ -2,12 +2,12 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1 import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.flow.flows.Payload +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.flow.impl.flows.finality.getVisibleStateIndexes import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.TransactionDependencyResolutionFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.UtxoTransactionPayload import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.sandbox.CordaSystemFlow import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.application.flows.CordaInject diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveWireTransactionFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveWireTransactionFlowV1.kt index 9c091528c11..ae3a4ba2fca 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveWireTransactionFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/ReceiveWireTransactionFlowV1.kt @@ -2,10 +2,10 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1 import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.flow.flows.Payload +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory import net.corda.ledger.utxo.data.transaction.WrappedUtxoWireTransaction import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.TransactionDependencyResolutionFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.UtxoTransactionPayload -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory import net.corda.sandbox.CordaSystemFlow import net.corda.v5.application.flows.CordaInject import net.corda.v5.application.flows.FlowEngine diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendSignedTransactionFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendSignedTransactionFlowV1.kt index c5b6f08b935..f50b70567b4 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendSignedTransactionFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendSignedTransactionFlowV1.kt @@ -1,7 +1,7 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1 +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.SendTransactionFlow -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.sandbox.CordaSystemFlow import net.corda.v5.application.flows.CordaInject import net.corda.v5.application.flows.FlowEngine diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendWireTransactionFlowV1.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendWireTransactionFlowV1.kt index 262516c27fc..7299ce75b3f 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendWireTransactionFlowV1.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/v1/SendWireTransactionFlowV1.kt @@ -1,7 +1,7 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1 +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.SendTransactionFlow -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.sandbox.CordaSystemFlow import net.corda.v5.application.flows.CordaInject import net.corda.v5.application.flows.FlowEngine diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceService.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceService.kt index fdbc4ff658e..5bd31d1ef93 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceService.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceService.kt @@ -1,7 +1,7 @@ package net.corda.ledger.utxo.flow.impl.persistence import net.corda.ledger.common.data.transaction.TransactionStatus -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.application.persistence.CordaPersistenceException import net.corda.v5.base.annotations.Suspendable diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImpl.kt index 28e01fa2ee2..dd57177ba2a 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImpl.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImpl.kt @@ -9,6 +9,11 @@ import net.corda.ledger.common.data.transaction.SignedTransactionContainer import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.data.transaction.TransactionStatus.Companion.toTransactionStatus import net.corda.ledger.common.data.transaction.filtered.FilteredTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoSignedLedgerTransactionImpl import net.corda.ledger.utxo.data.transaction.SignedLedgerTransactionContainer import net.corda.ledger.utxo.data.transaction.UtxoFilteredTransactionAndSignaturesImpl import net.corda.ledger.utxo.data.transaction.UtxoLedgerLastPersistedTimestamp @@ -42,11 +47,6 @@ import net.corda.ledger.utxo.flow.impl.persistence.external.events.PersistTransa import net.corda.ledger.utxo.flow.impl.persistence.external.events.PersistTransactionSignaturesParameters import net.corda.ledger.utxo.flow.impl.persistence.external.events.UpdateTransactionStatusExternalEventFactory import net.corda.ledger.utxo.flow.impl.persistence.external.events.UpdateTransactionStatusParameters -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionImpl import net.corda.ledger.utxo.flow.impl.transaction.filtered.factory.UtxoFilteredTransactionFactory import net.corda.metrics.CordaMetrics diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerStateQueryServiceImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerStateQueryServiceImpl.kt index b373e4f1f55..04546852a58 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerStateQueryServiceImpl.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerStateQueryServiceImpl.kt @@ -3,6 +3,7 @@ package net.corda.ledger.utxo.flow.impl.persistence import io.micrometer.core.instrument.Timer import net.corda.flow.external.events.executor.ExternalEventExecutor import net.corda.flow.fiber.metrics.recordSuspendable +import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService import net.corda.ledger.utxo.flow.impl.cache.StateAndRefCache import net.corda.ledger.utxo.flow.impl.persistence.LedgerPersistenceMetricOperationName.FindUnconsumedStatesByType import net.corda.ledger.utxo.flow.impl.persistence.LedgerPersistenceMetricOperationName.ResolveStateRefs diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactory.kt index 844ab79d850..78992ea388d 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactory.kt @@ -1,12 +1,13 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.persistence.EntityResponse +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toAvro import java.nio.ByteBuffer import java.time.Clock @@ -29,7 +30,7 @@ abstract class AbstractUtxoLedgerExternalEventFactory( .setTimestamp(clock.instant()) .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) .setRequest(createRequest(parameters)) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .setLedgerType(LedgerTypes.UTXO) .build() ) diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ExecuteCustomQueryExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ExecuteCustomQueryExternalEventFactory.kt index d8c08aa1a62..79fc7f477d2 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ExecuteCustomQueryExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ExecuteCustomQueryExternalEventFactory.kt @@ -1,14 +1,15 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.persistence.EntityResponse import net.corda.data.persistence.FindWithNamedQuery +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.persistence.query.StableResultSetExecutor import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.utilities.toByteBuffers import net.corda.v5.base.annotations.CordaSerializable import net.corda.virtualnode.toAvro @@ -41,7 +42,7 @@ class VaultNamedQueryExternalEventFactory( parameters.resumePoint?.let { ByteBuffer.wrap(it) } ) ) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .setLedgerType(LedgerTypes.UTXO) .build() ) diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindSignedGroupParametersExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindSignedGroupParametersExternalEventFactory.kt index 10c3bb51e68..d9a53b7aa2f 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindSignedGroupParametersExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindSignedGroupParametersExternalEventFactory.kt @@ -1,13 +1,14 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.FindSignedGroupParameters import net.corda.data.ledger.persistence.FindSignedGroupParametersResponse import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.membership.lib.GroupParametersFactory import net.corda.membership.lib.SignedGroupParameters import net.corda.v5.base.annotations.CordaSerializable @@ -44,7 +45,7 @@ class FindSignedGroupParametersExternalEventFactory( .setTimestamp(clock.instant()) .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) .setRequest(createRequest(parameters)) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .setLedgerType(LedgerTypes.UTXO) .build() ) diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactory.kt index 5fc65a5aaae..0ca4d40a5f3 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactory.kt @@ -1,13 +1,14 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.FindUnconsumedStatesByType import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.ledger.persistence.UtxoTransactionOutputs +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.data.transaction.UtxoVisibleTransactionOutputDto import net.corda.v5.base.annotations.CordaSerializable import net.corda.virtualnode.toAvro @@ -34,7 +35,7 @@ class FindUnconsumedStatesByTypeExternalEventFactory( .setTimestamp(clock.instant()) .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) .setRequest(createRequest(parameters)) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .setLedgerType(LedgerTypes.UTXO) .build() ) diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ResolveStateRefsExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ResolveStateRefsExternalEventFactory.kt index 50baad455e3..5708ca863ce 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ResolveStateRefsExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/ResolveStateRefsExternalEventFactory.kt @@ -2,14 +2,15 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events import net.corda.crypto.core.bytes import net.corda.data.crypto.SecureHash -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.ledger.persistence.ResolveStateRefs import net.corda.data.ledger.persistence.UtxoTransactionOutputs +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.data.transaction.UtxoVisibleTransactionOutputDto import net.corda.v5.base.annotations.CordaSerializable import net.corda.v5.ledger.utxo.StateRef @@ -38,7 +39,7 @@ class ResolveStateRefsExternalEventFactory( .setTimestamp(clock.instant()) .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) .setRequest(createRequest(parameters)) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .setLedgerType(LedgerTypes.UTXO) .build() ) diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryOsgiImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryOsgiImpl.kt new file mode 100644 index 00000000000..2d56c33b97c --- /dev/null +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryOsgiImpl.kt @@ -0,0 +1,63 @@ +package net.corda.ledger.utxo.flow.impl.transaction.factory.impl + +import net.corda.crypto.core.parseSecureHash +import net.corda.flow.application.GroupParametersLookupInternal +import net.corda.ledger.common.data.transaction.TransactionMetadataInternal +import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.impl.UtxoLedgerTransactionFactoryImpl +import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService +import net.corda.sandbox.type.SandboxConstants.CORDA_SYSTEM_SERVICE +import net.corda.sandbox.type.UsedByFlow +import net.corda.v5.application.serialization.SerializationService +import net.corda.v5.serialization.SingletonSerializeAsToken +import org.osgi.service.component.annotations.Activate +import org.osgi.service.component.annotations.Component +import org.osgi.service.component.annotations.Reference +import org.osgi.service.component.annotations.ServiceScope.PROTOTYPE + +@Component( + service = [UtxoLedgerTransactionFactory::class, UsedByFlow::class], + scope = PROTOTYPE, + property = [CORDA_SYSTEM_SERVICE], +) +class UtxoLedgerTransactionFactoryOsgiImpl( + delegate: UtxoLedgerTransactionFactory +) : UtxoLedgerTransactionFactory by delegate, UsedByFlow, SingletonSerializeAsToken { + + @Suppress("Unused") + @Activate + constructor( + @Reference(service = SerializationService::class) + serializationService: SerializationService, + @Reference(service = UtxoLedgerStateQueryService::class) + utxoLedgerStateQueryService: UtxoLedgerStateQueryService, + @Reference(service = UtxoLedgerGroupParametersPersistenceService::class) + utxoLedgerGroupParametersPersistenceService: UtxoLedgerGroupParametersPersistenceService, + @Reference(service = GroupParametersLookupInternal::class) + groupParametersLookup: GroupParametersLookupInternal + ) : this( + UtxoLedgerTransactionFactoryImpl( + serializationService, + utxoLedgerStateQueryService, + ) { wireTransaction -> + val membershipGroupParametersHashString = + requireNotNull((wireTransaction.metadata as TransactionMetadataInternal).getMembershipGroupParametersHash()) { + "Membership group parameters hash cannot be found in the transaction metadata." + } + val currentGroupParameters = groupParametersLookup.currentGroupParameters + val groupParameters = + if (currentGroupParameters.hash.toString() == membershipGroupParametersHashString) { + currentGroupParameters + } else { + val membershipGroupParametersHash = parseSecureHash(membershipGroupParametersHashString) + utxoLedgerGroupParametersPersistenceService.find(membershipGroupParametersHash) + } + requireNotNull(groupParameters) { + "Signed group parameters $membershipGroupParametersHashString related to the transaction " + + "${wireTransaction.id} cannot be accessed." + } + groupParameters + } + ) +} diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryOsgiImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryOsgiImpl.kt new file mode 100644 index 00000000000..eefc441bc8f --- /dev/null +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryOsgiImpl.kt @@ -0,0 +1,90 @@ +package net.corda.ledger.utxo.flow.impl.transaction.factory.impl + +import net.corda.flow.application.GroupParametersLookupInternal +import net.corda.ledger.common.data.transaction.TransactionMetadataImpl +import net.corda.ledger.common.data.transaction.factory.WireTransactionFactory +import net.corda.ledger.common.flow.transaction.PrivacySaltProviderService +import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal +import net.corda.ledger.common.flow.transaction.factory.TransactionMetadataFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.impl.UtxoSignedTransactionFactoryImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService +import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParametersVerifier +import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService +import net.corda.libs.json.validator.JsonValidator +import net.corda.sandbox.type.UsedByFlow +import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext +import net.corda.v5.application.marshalling.JsonMarshallingService +import net.corda.v5.application.serialization.SerializationService +import net.corda.v5.base.annotations.Suspendable +import net.corda.v5.serialization.SingletonSerializeAsToken +import org.osgi.service.component.annotations.Activate +import org.osgi.service.component.annotations.Component +import org.osgi.service.component.annotations.Reference +import org.osgi.service.component.annotations.ReferenceScope.PROTOTYPE_REQUIRED +import org.osgi.service.component.annotations.ServiceScope + +@Suppress("LongParameterList") +@Component(service = [UtxoSignedTransactionFactory::class, UsedByFlow::class], scope = ServiceScope.PROTOTYPE) +class UtxoSignedTransactionFactoryOsgiImpl( + delegate: UtxoSignedTransactionFactory +) : + UtxoSignedTransactionFactory by delegate, UsedByFlow, SingletonSerializeAsToken { + + @Suppress("Unused") + @Activate + constructor( + @Reference(service = CurrentSandboxGroupContext::class) + currentSandboxGroupContext: CurrentSandboxGroupContext, + @Reference(service = JsonMarshallingService::class, scope = PROTOTYPE_REQUIRED) + jsonMarshallingService: JsonMarshallingService, + @Reference(service = JsonValidator::class, scope = PROTOTYPE_REQUIRED) + jsonValidator: JsonValidator, + @Reference(service = SerializationService::class) + serializationService: SerializationService, + @Reference(service = TransactionSignatureServiceInternal::class) + transactionSignatureService: TransactionSignatureServiceInternal, + @Reference(service = TransactionMetadataFactory::class) + transactionMetadataFactory: TransactionMetadataFactory, + @Reference(service = WireTransactionFactory::class) + wireTransactionFactory: WireTransactionFactory, + @Reference(service = UtxoLedgerTransactionFactory::class) + utxoLedgerTransactionFactory: UtxoLedgerTransactionFactory, + @Reference(service = UtxoLedgerTransactionVerificationService::class) + utxoLedgerTransactionVerificationService: UtxoLedgerTransactionVerificationService, + @Reference(service = UtxoLedgerGroupParametersPersistenceService::class) + utxoLedgerGroupParametersPersistenceService: UtxoLedgerGroupParametersPersistenceService, + @Reference(service = GroupParametersLookupInternal::class) + groupParametersLookup: GroupParametersLookupInternal, + @Reference(service = SignedGroupParametersVerifier::class) + signedGroupParametersVerifier: SignedGroupParametersVerifier, + @Reference(service = NotarySignatureVerificationServiceInternal::class) + notarySignatureVerificationService: NotarySignatureVerificationServiceInternal, + @Reference(service = PrivacySaltProviderService::class) + privacySaltProviderService: PrivacySaltProviderService + ) : this( + UtxoSignedTransactionFactoryImpl( + jsonMarshallingService, + jsonValidator, + serializationService, + transactionSignatureService, + transactionMetadataFactory, + wireTransactionFactory, + utxoLedgerTransactionFactory, + utxoLedgerTransactionVerificationService, + notarySignatureVerificationService, + privacySaltProviderService, + getEvolvableTag = { tag -> currentSandboxGroupContext.get().sandboxGroup.getEvolvableTag(tag) }, + getExtraMetadata = @Suspendable { + val signedGroupParameters = groupParametersLookup.currentGroupParameters + signedGroupParametersVerifier.verifySignature(signedGroupParameters) + utxoLedgerGroupParametersPersistenceService.persistIfDoesNotExist(signedGroupParameters) + mapOf( + TransactionMetadataImpl.MEMBERSHIP_GROUP_PARAMETERS_HASH_KEY to signedGroupParameters.hash.toString() + ) + } + ) + ) +} diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/UtxoFilteredTransactionBuilderImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/UtxoFilteredTransactionBuilderImpl.kt index 6243352238e..6a90caa8a31 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/UtxoFilteredTransactionBuilderImpl.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/UtxoFilteredTransactionBuilderImpl.kt @@ -2,8 +2,8 @@ package net.corda.ledger.utxo.flow.impl.transaction.filtered import net.corda.ledger.common.data.transaction.filtered.ComponentGroupFilterParameters import net.corda.ledger.common.data.transaction.filtered.ComponentGroupFilterParameters.AuditProof.AuditProofPredicate +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.transaction.filtered.factory.UtxoFilteredTransactionFactory import net.corda.v5.base.annotations.Suspendable import net.corda.v5.ledger.utxo.Command diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactory.kt index aeeda268a33..6b4ffc241d1 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactory.kt @@ -1,7 +1,7 @@ package net.corda.ledger.utxo.flow.impl.transaction.filtered.factory import net.corda.ledger.common.data.transaction.filtered.FilteredTransaction -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionBuilderInternal import net.corda.v5.base.annotations.Suspendable import net.corda.v5.ledger.utxo.transaction.filtered.UtxoFilteredTransaction diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImpl.kt index b2338b64794..7e09a584901 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImpl.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImpl.kt @@ -4,11 +4,11 @@ import net.corda.ledger.common.data.transaction.filtered.ComponentGroupFilterPar import net.corda.ledger.common.data.transaction.filtered.ComponentGroupFilterParameters.AuditProof.AuditProofPredicate import net.corda.ledger.common.data.transaction.filtered.FilteredTransaction import net.corda.ledger.common.data.transaction.filtered.factory.FilteredTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup.METADATA import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup.NOTARY import net.corda.ledger.utxo.data.transaction.UtxoOutputInfoComponent -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionBuilderInternal import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionImpl import net.corda.sandbox.type.SandboxConstants diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoSignedTransactionSerializer.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoSignedTransactionSerializer.kt index cb75e7e83d6..91bda742069 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoSignedTransactionSerializer.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoSignedTransactionSerializer.kt @@ -2,10 +2,10 @@ package net.corda.ledger.utxo.flow.impl.transaction.serializer.amqp import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal import net.corda.sandbox.type.SandboxConstants.CORDA_UNINJECTABLE_SERVICE import net.corda.sandbox.type.UsedByFlow import net.corda.serialization.BaseProxySerializer diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializer.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializer.kt index 6f96d246041..924a4e8d9f6 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializer.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializer.kt @@ -1,6 +1,6 @@ package net.corda.ledger.utxo.flow.impl.transaction.serializer.amqp -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.sandbox.type.SandboxConstants.CORDA_UNINJECTABLE_SERVICE import net.corda.sandbox.type.UsedByFlow import net.corda.serialization.BaseProxySerializer diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedLedgerTransactionKryoSerializer.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedLedgerTransactionKryoSerializer.kt index 34632dabaa5..cac4e6e9ee6 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedLedgerTransactionKryoSerializer.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedLedgerTransactionKryoSerializer.kt @@ -1,9 +1,9 @@ package net.corda.ledger.utxo.flow.impl.transaction.serializer.kryo +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoSignedLedgerTransactionImpl import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.sandbox.type.SandboxConstants.CORDA_UNINJECTABLE_SERVICE import net.corda.sandbox.type.UsedByFlow import net.corda.serialization.checkpoint.CheckpointInput diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializer.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializer.kt index 9b5d6a6a93c..575a83d5d21 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializer.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializer.kt @@ -2,10 +2,10 @@ package net.corda.ledger.utxo.flow.impl.transaction.serializer.kryo import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal import net.corda.sandbox.type.SandboxConstants.CORDA_UNINJECTABLE_SERVICE import net.corda.sandbox.type.UsedByFlow import net.corda.serialization.checkpoint.CheckpointInput diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceOsgiImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceOsgiImpl.kt new file mode 100644 index 00000000000..35646c9b40e --- /dev/null +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceOsgiImpl.kt @@ -0,0 +1,38 @@ +package net.corda.ledger.utxo.flow.impl.transaction.verifier + +import net.corda.ledger.common.flow.transaction.TransactionSignatureVerificationServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal +import net.corda.sandbox.type.UsedByFlow +import net.corda.sandbox.type.UsedByVerification +import net.corda.v5.ledger.utxo.NotarySignatureVerificationService +import net.corda.v5.serialization.SingletonSerializeAsToken +import org.osgi.service.component.annotations.Activate +import org.osgi.service.component.annotations.Component +import org.osgi.service.component.annotations.Reference +import org.osgi.service.component.annotations.ServiceScope.PROTOTYPE + +@Component( + service = [ + NotarySignatureVerificationService::class, + NotarySignatureVerificationServiceInternal::class, + UsedByFlow::class, + UsedByVerification::class + ], + scope = PROTOTYPE +) +class NotarySignatureVerificationServiceOsgiImpl( + delegate: NotarySignatureVerificationServiceImpl, +) : NotarySignatureVerificationService, + NotarySignatureVerificationServiceInternal by delegate, + UsedByFlow, + UsedByVerification, + SingletonSerializeAsToken { + + @Suppress("Unused") + @Activate + constructor( + @Reference(service = TransactionSignatureVerificationServiceInternal::class) + transactionSignatureService: TransactionSignatureVerificationServiceInternal + ) : this(NotarySignatureVerificationServiceImpl(transactionSignatureService)) +} diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/external/events/TransactionVerificationExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/TransactionVerificationExternalEventFactory.kt similarity index 94% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/external/events/TransactionVerificationExternalEventFactory.kt rename to components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/TransactionVerificationExternalEventFactory.kt index 19b8d98e3fd..7939eb5c905 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/external/events/TransactionVerificationExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/TransactionVerificationExternalEventFactory.kt @@ -1,9 +1,10 @@ -package net.corda.ledger.utxo.flow.impl.transaction.verifier.external.events +package net.corda.ledger.utxo.flow.impl.transaction.verifier -import net.corda.data.flow.event.external.ExternalEventContext +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.data.transaction.TransactionVerificationResult import net.corda.ledger.utxo.data.transaction.TransactionVerificationStatus import net.corda.v5.base.annotations.CordaSerializable @@ -38,7 +39,7 @@ class TransactionVerificationExternalEventFactory( .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) .setTransaction(ByteBuffer.wrap(parameters.transaction)) .setCpkMetadata(parameters.cpkMetadata.map(CordaPackageSummary::toAvro)) - .setFlowExternalEventContext(flowExternalEventContext) + .setFlowExternalEventContext(flowExternalEventContext.toAvro()) .build() ) } diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilder.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoBaselinedTransactionBuilder.kt similarity index 94% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilder.kt rename to components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoBaselinedTransactionBuilder.kt index 2c255954691..d2f19c9a23f 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilder.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoBaselinedTransactionBuilder.kt @@ -1,7 +1,11 @@ -package net.corda.ledger.utxo.flow.impl.transaction - -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowBetweenImpl -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowUntilImpl +package net.corda.ledger.utxo.flow.impl.transaction.verifier + +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowBetweenImpl +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowUntilImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderData +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.v5.base.annotations.Suspendable import net.corda.v5.base.types.MemberX500Name import net.corda.v5.ledger.utxo.Command diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImpl.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImpl.kt index d2d220326b5..1cfeac40231 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImpl.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImpl.kt @@ -4,12 +4,11 @@ import io.micrometer.core.instrument.Timer import net.corda.flow.external.events.executor.ExternalEventExecutor import net.corda.flow.fiber.metrics.recordSuspendable import net.corda.ledger.common.data.transaction.TransactionMetadataInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.data.transaction.TransactionVerificationStatus import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionContainer import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParametersVerifier -import net.corda.ledger.utxo.flow.impl.transaction.verifier.external.events.TransactionVerificationExternalEventFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.external.events.TransactionVerificationParameters import net.corda.membership.lib.SignedGroupParameters import net.corda.metrics.CordaMetrics import net.corda.sandbox.type.SandboxConstants.CORDA_SYSTEM_SERVICE diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactory.kt index dd4852c3155..da647fe0844 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactory.kt @@ -1,12 +1,13 @@ package net.corda.ledger.utxo.impl.token.selection.factories -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.utxo.token.selection.data.TokenClaimRelease import net.corda.data.ledger.utxo.token.selection.data.TokenClaimReleaseAck import net.corda.data.ledger.utxo.token.selection.event.TokenPoolCacheEvent +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.impl.token.selection.services.TokenClaimCheckpointService import net.corda.schema.Schemas import org.osgi.service.component.annotations.Activate @@ -31,7 +32,7 @@ class ClaimReleaseExternalEventFactory @Activate constructor( val claimRelease = TokenClaimRelease().apply { this.poolKey = poolKey this.claimId = parameters.claimId - this.requestContext = flowExternalEventContext + this.requestContext = flowExternalEventContext.toAvro() this.usedTokenStateRefs = parameters.usedTokens.map { it.toString() } } diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactory.kt index 49f7d7616d2..d7a3abb9535 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactory.kt @@ -1,14 +1,15 @@ package net.corda.ledger.utxo.impl.token.selection.factories -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.utxo.token.selection.data.TokenAmount import net.corda.data.ledger.utxo.token.selection.data.TokenBalanceQuery import net.corda.data.ledger.utxo.token.selection.data.TokenBalanceQueryResult import net.corda.data.ledger.utxo.token.selection.event.TokenPoolCacheEvent import net.corda.data.ledger.utxo.token.selection.key.TokenPoolCacheKey +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.impl.token.selection.impl.TokenBalanceImpl import net.corda.schema.Schemas import net.corda.v5.ledger.utxo.token.selection.TokenBalance @@ -39,7 +40,7 @@ class TokenBalanceQueryExternalEventFactory @Activate constructor() : val balanceQuery = TokenBalanceQuery().apply { this.poolKey = key - this.requestContext = flowExternalEventContext + this.requestContext = flowExternalEventContext.toAvro() this.ownerHash = parameters.ownerHash?.toString() this.tagRegex = parameters.tagRegex } diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactory.kt b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactory.kt index a386ccd8f19..9fcf5b0a69e 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactory.kt +++ b/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactory.kt @@ -1,16 +1,17 @@ package net.corda.ledger.utxo.impl.token.selection.factories -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.utxo.token.selection.data.TokenAmount import net.corda.data.ledger.utxo.token.selection.data.TokenClaimQuery import net.corda.data.ledger.utxo.token.selection.data.TokenClaimQueryResult import net.corda.data.ledger.utxo.token.selection.data.TokenClaimResultStatus import net.corda.data.ledger.utxo.token.selection.event.TokenPoolCacheEvent import net.corda.data.ledger.utxo.token.selection.key.TokenPoolCacheKey +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint import net.corda.flow.token.query.TokenClaimCriteriaParameters +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.impl.token.selection.services.TokenClaimCheckpointService import net.corda.schema.Schemas import net.corda.v5.ledger.utxo.token.selection.Strategy @@ -46,7 +47,7 @@ class TokenClaimQueryExternalEventFactory @Activate constructor( val claimQuery = TokenClaimQuery().apply { this.poolKey = key - this.requestContext = flowExternalEventContext + this.requestContext = flowExternalEventContext.toAvro() this.ownerHash = criteria.ownerHash?.toString() this.tagRegex = criteria.tagRegex this.targetAmount = TokenAmount( diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImplTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImplTest.kt index 6aacd9ca5bd..e64f39add21 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImplTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/UtxoLedgerServiceImplTest.kt @@ -1,8 +1,8 @@ package net.corda.ledger.utxo.flow.impl import net.corda.ledger.common.testkit.publicKeyExample -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionWithDependencies +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoSignedTransactionWithDependencies import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.UtxoStateClassExample diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImplTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImplTest.kt index a39bf1d7e0f..a8fc9ca2ee6 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImplTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/TransactionBackchainVerifierImplTest.kt @@ -5,11 +5,11 @@ import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.data.transaction.TransactionStatus.UNVERIFIED import net.corda.ledger.common.data.transaction.TransactionStatus.VERIFIED import net.corda.ledger.common.flow.transaction.TransactionMissingSignaturesException +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.data.transaction.TransactionVerificationStatus import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction import net.corda.ledger.utxo.flow.impl.transaction.verifier.TransactionVerificationException -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.testkit.getExampleInvalidStateAndRefImpl import net.corda.ledger.utxo.testkit.getExampleStateAndRefImpl import net.corda.v5.base.exceptions.CordaRuntimeException diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/v1/TransactionBackchainReceiverFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/v1/TransactionBackchainReceiverFlowV1Test.kt index 4456bb33a53..8f505413aa1 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/v1/TransactionBackchainReceiverFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/backchain/v1/TransactionBackchainReceiverFlowV1Test.kt @@ -6,6 +6,7 @@ import net.corda.ledger.common.data.transaction.TransactionMetadataInternal import net.corda.ledger.common.data.transaction.TransactionStatus.INVALID import net.corda.ledger.common.data.transaction.TransactionStatus.UNVERIFIED import net.corda.ledger.common.data.transaction.TransactionStatus.VERIFIED +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction import net.corda.ledger.utxo.flow.impl.UtxoLedgerMetricRecorder import net.corda.ledger.utxo.flow.impl.flows.backchain.InvalidBackchainException import net.corda.ledger.utxo.flow.impl.flows.backchain.TopologicalSort @@ -13,7 +14,6 @@ import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParam import net.corda.ledger.utxo.flow.impl.persistence.TransactionExistenceStatus import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction import net.corda.libs.configuration.SmartConfig import net.corda.membership.lib.SignedGroupParameters import net.corda.schema.configuration.ConfigKeys diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/common/SendTransactionFlowTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/common/SendTransactionFlowTest.kt index a581c24f34c..c2bff167bcd 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/common/SendTransactionFlowTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/common/SendTransactionFlowTest.kt @@ -3,11 +3,11 @@ package net.corda.ledger.utxo.flow.impl.flows.common import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.flow.flows.Payload +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainSenderFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.SendTransactionFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.UtxoTransactionPayload import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.application.flows.FlowEngine diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowVersionedFlowFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowVersionedFlowFactoryTest.kt index bd285192ecd..fb710ea2885 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowVersionedFlowFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/UtxoFinalityFlowVersionedFlowFactoryTest.kt @@ -1,8 +1,8 @@ package net.corda.ledger.utxo.flow.impl.flows.finality +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.finality.v1.UtxoFinalityFlowV1 import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryDetails -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.libs.platform.PlatformVersion.CORDA_5_1 import net.corda.v5.base.exceptions.CordaRuntimeException import net.corda.v5.ledger.notary.plugin.api.PluggableNotaryClientFlow diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1Test.kt index 971bae19eb0..be755b40df0 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoFinalityFlowV1Test.kt @@ -11,14 +11,14 @@ import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.flow.flows.Payload import net.corda.ledger.common.flow.transaction.TransactionMissingSignaturesException import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.data.transaction.TransactionVerificationStatus import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainSenderFlow import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryDetails import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.transaction.verifier.TransactionVerificationException -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.getUtxoStateExample import net.corda.ledger.utxo.testkit.notaryX500Name diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1Test.kt index 81b7cbbf33d..acb4d31639f 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/finality/v1/UtxoReceiveFinalityFlowV1Test.kt @@ -12,6 +12,9 @@ import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.flow.flows.Payload import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.data.state.StateAndRefImpl import net.corda.ledger.utxo.data.state.TransactionStateImpl import net.corda.ledger.utxo.data.transaction.TransactionVerificationStatus @@ -25,10 +28,7 @@ import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParam import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService import net.corda.ledger.utxo.flow.impl.persistence.external.events.FindUnconsumedStatesByTypeExternalEventFactoryTest.TestContractState -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory import net.corda.ledger.utxo.flow.impl.transaction.verifier.TransactionVerificationException -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.anotherNotaryX500Name import net.corda.ledger.utxo.testkit.getExampleInvalidStateAndRefImpl diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlowTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlowTest.kt index fa4437cff9d..48a9759bf3a 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlowTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/repair/UtxoLedgerRepairFlowTest.kt @@ -4,10 +4,10 @@ import net.corda.ledger.common.data.transaction.TransactionStatus.INVALID import net.corda.ledger.common.data.transaction.TransactionStatus.UNVERIFIED import net.corda.ledger.common.data.transaction.TransactionStatus.VERIFIED import net.corda.ledger.common.flow.transaction.TransactionMissingSignaturesException +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryDetails import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.impl.token.selection.impl.ALICE_X500_NAME import net.corda.ledger.utxo.impl.token.selection.impl.BOB_X500_NAME import net.corda.utilities.minutes diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1Test.kt index 5c25f8f5642..57a88e9360f 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/ReceiveAndUpdateTransactionBuilderFlowV1Test.kt @@ -4,12 +4,12 @@ import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.testkit.anotherPublicKeyExample import net.corda.ledger.common.testkit.getSignatureWithMetadataExample import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowUntilImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainResolutionFlow import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowUntilImpl -import net.corda.ledger.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.UtxoStateClassExample diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1Test.kt index a6e23ab203f..c6a73a46135 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactionbuilder/v1/SendTransactionBuilderDiffFlowV1Test.kt @@ -3,14 +3,14 @@ package net.corda.ledger.utxo.flow.impl.flows.transactionbuilder.v1 import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.testkit.anotherPublicKeyExample import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowUntilImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.flow.impl.flows.backchain.TransactionBackchainSenderFlow import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerStateQueryService -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowUntilImpl -import net.corda.ledger.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag -import net.corda.ledger.utxo.flow.impl.transaction.UtxoBaselinedTransactionBuilder -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoBaselinedTransactionBuilder import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.anotherNotaryX500Name import net.corda.ledger.utxo.testkit.notaryX500Name diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveSignedTransactionFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveSignedTransactionFlowV1Test.kt index da967582914..9a6f905d5af 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveSignedTransactionFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveSignedTransactionFlowV1Test.kt @@ -2,12 +2,12 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.flow.flows.Payload +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.TransactionDependencyResolutionFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.UtxoTransactionPayload import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1.ReceiveSignedTransactionFlowV1 import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.v5.application.flows.FlowEngine diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveWireTransactionFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveWireTransactionFlowV1Test.kt index 4abff011d46..8b117f3ae4b 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveWireTransactionFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/ReceiveWireTransactionFlowV1Test.kt @@ -3,11 +3,11 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.flow.flows.Payload import net.corda.ledger.common.testkit.getWireTransactionExample +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.impl.UtxoLedgerTransactionFactoryImpl import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.TransactionDependencyResolutionFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.UtxoTransactionPayload import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1.ReceiveWireTransactionFlowV1 -import net.corda.ledger.utxo.flow.impl.transaction.factory.impl.UtxoLedgerTransactionFactoryImpl import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.ledger.utxo.testkit.utxoTransactionMetadataExample diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendSignedTransactionFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendSignedTransactionFlowV1Test.kt index 739f04f169e..7e7aab0a84d 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendSignedTransactionFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendSignedTransactionFlowV1Test.kt @@ -1,9 +1,9 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission import net.corda.crypto.core.SecureHashImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.SendTransactionFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1.SendSignedTransactionFlowV1 -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.v5.application.flows.FlowEngine import net.corda.v5.application.messaging.FlowSession diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendWireTransactionFlowV1Test.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendWireTransactionFlowV1Test.kt index a79de1f9566..42f21c6230a 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendWireTransactionFlowV1Test.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/flows/transactiontransmission/SendWireTransactionFlowV1Test.kt @@ -2,9 +2,9 @@ package net.corda.ledger.utxo.flow.impl.flows.transactiontransmission import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.data.transaction.WireTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.common.SendTransactionFlow import net.corda.ledger.utxo.flow.impl.flows.transactiontransmission.v1.SendWireTransactionFlowV1 -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.v5.application.flows.FlowEngine import net.corda.v5.application.messaging.FlowSession diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImplTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImplTest.kt index 229ee99a98b..aa294504e2d 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImplTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerPersistenceServiceImplTest.kt @@ -14,6 +14,12 @@ import net.corda.ledger.common.data.transaction.TransactionStatus.VERIFIED import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.data.transaction.filtered.FilteredTransaction import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoSignedLedgerTransactionImpl import net.corda.ledger.utxo.data.transaction.SignedLedgerTransactionContainer import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup import net.corda.ledger.utxo.data.transaction.UtxoFilteredTransactionAndSignaturesImpl @@ -30,14 +36,8 @@ import net.corda.ledger.utxo.flow.impl.persistence.external.events.FindTransacti import net.corda.ledger.utxo.flow.impl.persistence.external.events.PersistFilteredTransactionsExternalEventFactory import net.corda.ledger.utxo.flow.impl.persistence.external.events.PersistTransactionExternalEventFactory import net.corda.ledger.utxo.flow.impl.persistence.external.events.PersistTransactionIfDoesNotExistExternalEventFactory -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedLedgerTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionImpl import net.corda.ledger.utxo.flow.impl.transaction.filtered.factory.UtxoFilteredTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext import net.corda.sandboxgroupcontext.SandboxGroupContext diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactoryTest.kt index 823fe2db7e0..f33f740cc6f 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/AbstractUtxoLedgerExternalEventFactoryTest.kt @@ -1,12 +1,13 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.identity.HoldingIdentity import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.persistence.EntityResponse +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -41,7 +42,7 @@ class AbstractUtxoLedgerExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) whenever(checkpoint.holdingIdentity).thenReturn(ALICE_X500_HOLDING_IDENTITY.toCorda()) @@ -58,7 +59,7 @@ class AbstractUtxoLedgerExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, LedgerTypes.UTXO, payload, - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt index 105f4b8f5ca..257db39a4f5 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindTransactionExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.FindTransaction import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals @@ -25,7 +25,7 @@ class FindTransactionExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) val transactionId = "1234567890123456" val testClock = Clock.fixed(Instant.now(), ZoneId.of("UTC")) @@ -45,7 +45,7 @@ class FindTransactionExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, LedgerTypes.UTXO, FindTransaction(transactionId, TransactionStatus.VERIFIED.value), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactoryTest.kt index 8793350e739..5dd4eb12c4a 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/FindUnconsumedStatesByTypeExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.FindUnconsumedStatesByType import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.v5.ledger.utxo.ContractState import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals @@ -33,7 +33,7 @@ class FindUnconsumedStatesByTypeExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) val testClock = Clock.fixed(Instant.now(), ZoneId.of("UTC")) @@ -52,7 +52,7 @@ class FindUnconsumedStatesByTypeExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, LedgerTypes.UTXO, FindUnconsumedStatesByType(stateClass.canonicalName), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt index 4331a638a4b..d153abf1c2b 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/persistence/external/events/PersistTransactionExternalEventFactoryTest.kt @@ -1,11 +1,11 @@ package net.corda.ledger.utxo.flow.impl.persistence.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.persistence.LedgerPersistenceRequest import net.corda.data.ledger.persistence.LedgerTypes import net.corda.data.ledger.persistence.PersistTransaction +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.common.data.transaction.TransactionStatus import net.corda.virtualnode.toCorda import org.junit.jupiter.api.Assertions.assertEquals @@ -26,7 +26,7 @@ class PersistTransactionExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) val testClock = Clock.fixed(Instant.now(), ZoneId.of("UTC")) @@ -48,7 +48,7 @@ class PersistTransactionExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, LedgerTypes.UTXO, PersistTransaction(transaction, transactionStatus.value, visibleStatesIndexes), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderDiffTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderDiffTest.kt index 0bd02f9b52b..f57e1112e8f 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderDiffTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderDiffTest.kt @@ -3,6 +3,10 @@ package net.corda.ledger.utxo.flow.impl.transaction import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.testkit.anotherPublicKeyExample import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderContainer +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoBaselinedTransactionBuilder import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.UtxoStateClassExample diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderTest.kt index d9578a79d9d..32661f3d057 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoBaselinedTransactionBuilderTest.kt @@ -1,5 +1,6 @@ package net.corda.ledger.utxo.flow.impl.transaction +import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoBaselinedTransactionBuilder import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.anotherNotaryX500Name import net.corda.ledger.utxo.testkit.notaryX500Name diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoLedgerTransactionImplTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoLedgerTransactionImplTest.kt index 303b1c15491..7b546934a9c 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoLedgerTransactionImplTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoLedgerTransactionImplTest.kt @@ -1,6 +1,7 @@ package net.corda.ledger.utxo.flow.impl.transaction import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.UtxoStateClassExample diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImplTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImplTest.kt index 285c3c964c3..184746e38a8 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImplTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/filtered/factory/UtxoFilteredTransactionFactoryImplTest.kt @@ -3,9 +3,9 @@ package net.corda.ledger.utxo.flow.impl.transaction.filtered.factory import net.corda.ledger.common.data.transaction.filtered.ComponentGroupFilterParameters import net.corda.ledger.common.data.transaction.filtered.factory.FilteredTransactionFactory import net.corda.ledger.common.testkit.publicKeyExample +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowBetweenImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowBetweenImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionBuilderImpl import net.corda.ledger.utxo.flow.impl.transaction.filtered.UtxoFilteredTransactionBuilderInternal import net.corda.ledger.utxo.test.UtxoLedgerTest diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializerTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializerTest.kt index 7ec5c17f8c4..00123a4205c 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializerTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/amqp/UtxoTransactionBuilderSerializerTest.kt @@ -1,6 +1,6 @@ package net.corda.ledger.utxo.flow.impl.transaction.serializer.amqp -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl import net.corda.v5.base.exceptions.CordaRuntimeException import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.jupiter.api.Test diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializerTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializerTest.kt index 7cbada73904..ed0b48d5494 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializerTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/serializer/kryo/UtxoSignedTransactionKryoSerializerTest.kt @@ -5,7 +5,7 @@ import net.corda.crypto.core.DigitalSignatureWithKeyId import net.corda.kryoserialization.testkit.createCheckpointSerializer import net.corda.ledger.common.data.transaction.PrivacySaltImpl import net.corda.ledger.common.data.transaction.WireTransaction -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.crypto.DigitalSignature diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImplTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImplTest.kt index 2e70ff66d52..0aba19b677c 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImplTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationServiceImplTest.kt @@ -11,7 +11,6 @@ import net.corda.ledger.utxo.data.transaction.TransactionVerificationStatus import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService import net.corda.ledger.utxo.flow.impl.persistence.external.events.ALICE_X500_HOLDING_IDENTITY -import net.corda.ledger.utxo.flow.impl.transaction.verifier.external.events.TransactionVerificationExternalEventFactory import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.membership.lib.SignedGroupParameters import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/external/events/TransactionVerificationExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/external/events/TransactionVerificationExternalEventFactoryTest.kt index f863114b3a7..8a0c86f2c27 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/external/events/TransactionVerificationExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/external/events/TransactionVerificationExternalEventFactoryTest.kt @@ -1,10 +1,13 @@ package net.corda.ledger.utxo.flow.impl.transaction.verifier.external.events -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.common.data.transaction.CordaPackageSummaryImpl import net.corda.ledger.utxo.flow.impl.persistence.external.events.ALICE_X500_HOLDING_IDENTITY +import net.corda.ledger.utxo.flow.impl.transaction.verifier.TransactionVerificationExternalEventFactory +import net.corda.ledger.utxo.flow.impl.transaction.verifier.TransactionVerificationParameters +import net.corda.ledger.utxo.flow.impl.transaction.verifier.toAvro import net.corda.ledger.utxo.verification.TransactionVerificationRequest import net.corda.v5.ledger.common.transaction.CordaPackageSummary import net.corda.virtualnode.toCorda @@ -40,7 +43,7 @@ class TransactionVerificationExternalEventFactoryTest { val externalEventContext = ExternalEventContext( "request id", "flow id", - KeyValuePairList(emptyList()) + emptyMap() ) val testClock = Clock.fixed(Instant.now(), ZoneId.of("UTC")) @@ -59,7 +62,7 @@ class TransactionVerificationExternalEventFactoryTest { ALICE_X500_HOLDING_IDENTITY, ByteBuffer.wrap(transaction), cpkMetadata.map(CordaPackageSummary::toAvro), - externalEventContext + externalEventContext.toAvro() ), externalEventRecord.payload ) diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactoryTest.kt index 88e11b6f52c..e58148b7ca8 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/ClaimReleaseExternalEventFactoryTest.kt @@ -1,10 +1,11 @@ package net.corda.ledger.utxo.impl.token.selection.factories -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.utxo.token.selection.data.TokenClaimRelease import net.corda.data.ledger.utxo.token.selection.event.TokenPoolCacheEvent +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.impl.token.selection.impl.PoolKey import net.corda.ledger.utxo.impl.token.selection.impl.toStateRef import net.corda.ledger.utxo.impl.token.selection.services.TokenClaimCheckpointService @@ -22,7 +23,7 @@ class ClaimReleaseExternalEventFactoryTest { val avroPoolKey = poolKey.toTokenPoolCacheKey() val checkpoint = mock() val tokenClaimCheckpointService = mock() - val flowExternalEventContext = ExternalEventContext() + val flowExternalEventContext = ExternalEventContext("", "", emptyMap()) val parameters = ClaimReleaseParameters("c1", poolKey, listOf(stateRef)) val result = ClaimReleaseExternalEventFactory(tokenClaimCheckpointService).createExternalEvent( @@ -34,7 +35,7 @@ class ClaimReleaseExternalEventFactoryTest { val expectedReleaseEvent = TokenClaimRelease().apply { this.claimId = "c1" this.poolKey = avroPoolKey - this.requestContext = flowExternalEventContext + this.requestContext = flowExternalEventContext.toAvro() this.usedTokenStateRefs = listOf(stateRef.toString()) } diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactoryTest.kt index d599138f986..a5870429991 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenBalanceQueryExternalEventFactoryTest.kt @@ -1,14 +1,14 @@ package net.corda.ledger.utxo.token.selection.impl.factories -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.utxo.token.selection.data.TokenAmount import net.corda.data.ledger.utxo.token.selection.data.TokenBalanceQuery import net.corda.data.ledger.utxo.token.selection.data.TokenBalanceQueryResult import net.corda.data.ledger.utxo.token.selection.event.TokenPoolCacheEvent import net.corda.data.ledger.utxo.token.selection.key.TokenPoolCacheKey +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.impl.token.selection.factories.TokenBalanceQueryExternalEventFactory import net.corda.ledger.utxo.impl.token.selection.impl.ALICE_X500_HOLDING_ID import net.corda.ledger.utxo.impl.token.selection.impl.BOB_X500_NAME @@ -42,13 +42,13 @@ class TokenBalanceQueryExternalEventFactoryTest { @Test fun `createExternalEvent should return balance query event record`() { - val flowExternalEventContext = ExternalEventContext("r1", "f1", KeyValuePairList()) + val flowExternalEventContext = ExternalEventContext("r1", "f1", emptyMap()) val parameters = TokenBalanceCriteria(tokenType, issuerHash, notaryX500Name, symbol) val expectedBalanceQuery = TokenBalanceQuery().apply { this.poolKey = key - this.requestContext = flowExternalEventContext + this.requestContext = flowExternalEventContext.toAvro() } val expectedExternalEventRecord = ExternalEventRecord( diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactoryTest.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactoryTest.kt index 33315fedf6a..98c56f604c5 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactoryTest.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/impl/token/selection/factories/TokenClaimQueryExternalEventFactoryTest.kt @@ -1,7 +1,5 @@ package net.corda.ledger.utxo.impl.token.selection.impl.factories -import net.corda.data.KeyValuePairList -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.ledger.utxo.token.selection.data.Token import net.corda.data.ledger.utxo.token.selection.data.TokenAmount import net.corda.data.ledger.utxo.token.selection.data.TokenClaimQuery @@ -9,9 +7,11 @@ import net.corda.data.ledger.utxo.token.selection.data.TokenClaimQueryResult import net.corda.data.ledger.utxo.token.selection.data.TokenClaimResultStatus import net.corda.data.ledger.utxo.token.selection.event.TokenPoolCacheEvent import net.corda.data.ledger.utxo.token.selection.key.TokenPoolCacheKey +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint import net.corda.flow.token.query.TokenClaimCriteriaParameters +import net.corda.flow.utils.toAvro import net.corda.ledger.utxo.impl.token.selection.factories.TokenClaimFactory import net.corda.ledger.utxo.impl.token.selection.factories.TokenClaimQueryExternalEventFactory import net.corda.ledger.utxo.impl.token.selection.impl.ALICE_X500_HOLDING_ID @@ -59,7 +59,7 @@ class TokenClaimQueryExternalEventFactoryTest { amount.scale(), ByteBuffer.wrap(amount.unscaledValue().toByteArray()) ) - val flowExternalEventContext = ExternalEventContext("r1", "f1", KeyValuePairList()) + val flowExternalEventContext = ExternalEventContext("r1", "f1", emptyMap()) val parameters = TokenClaimCriteriaParameters( dedupeId, @@ -72,7 +72,7 @@ class TokenClaimQueryExternalEventFactoryTest { val expectedClaimQuery = TokenClaimQuery().apply { this.poolKey = key - this.requestContext = flowExternalEventContext + this.requestContext = flowExternalEventContext.toAvro() this.ownerHash = ownerHash.toString() this.tagRegex = tagRegex this.targetAmount = tokenAmount diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/serialization/DigitalSignatureAndMetadataJsonSerializationTests.kt b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/serialization/DigitalSignatureAndMetadataJsonSerializationTests.kt index ab3d433f5f9..a71696b45aa 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/serialization/DigitalSignatureAndMetadataJsonSerializationTests.kt +++ b/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/serialization/DigitalSignatureAndMetadataJsonSerializationTests.kt @@ -22,8 +22,8 @@ import net.corda.crypto.merkle.impl.MerkleProofProviderImpl import net.corda.ledger.common.testkit.anotherPublicKeyExample import net.corda.ledger.common.testkit.getSignatureWithMetadataExample import net.corda.ledger.common.testkit.publicKeyExample -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.getUtxoStateExample diff --git a/components/ledger/ledger-verification/src/main/kotlin/net/corda/ledger/verification/metrics/VerificationMetricsFactory.kt b/components/ledger/ledger-verification/src/main/kotlin/net/corda/ledger/verification/metrics/VerificationMetricsFactory.kt new file mode 100644 index 00000000000..ccc406a029f --- /dev/null +++ b/components/ledger/ledger-verification/src/main/kotlin/net/corda/ledger/verification/metrics/VerificationMetricsFactory.kt @@ -0,0 +1,28 @@ +package net.corda.ledger.verification.metrics + +import io.micrometer.core.instrument.Timer +import net.corda.ledger.utxo.transaction.verifier.ContractVerificationMetricFactory +import net.corda.metrics.CordaMetrics +import net.corda.virtualnode.HoldingIdentity + +class VerificationMetricsFactory(val holdingIdentity: HoldingIdentity) : ContractVerificationMetricFactory { + override fun getContractVerificationTimeMetric() = + CordaMetrics.Metric.Ledger.ContractVerificationTime + .builder() + .forVirtualNode(holdingIdentity.shortHash.toString()) + .build() + + override fun getContractVerificationContractCountMetric() = + CordaMetrics.Metric.Ledger.ContractVerificationContractCount + .builder() + .forVirtualNode(holdingIdentity.shortHash.toString()) + .build() + + override fun getContractVerificationContractTime(className: String): Timer { + return CordaMetrics.Metric.Ledger.ContractVerificationContractTime + .builder() + .forVirtualNode(holdingIdentity.shortHash.toString()) + .withTag(CordaMetrics.Tag.LedgerContractName, className) + .build() + } +} diff --git a/components/ledger/ledger-verification/src/main/kotlin/net/corda/ledger/verification/processor/impl/VerificationRequestHandlerImpl.kt b/components/ledger/ledger-verification/src/main/kotlin/net/corda/ledger/verification/processor/impl/VerificationRequestHandlerImpl.kt index c31d5c9cd71..b213ae4d3ff 100644 --- a/components/ledger/ledger-verification/src/main/kotlin/net/corda/ledger/verification/processor/impl/VerificationRequestHandlerImpl.kt +++ b/components/ledger/ledger-verification/src/main/kotlin/net/corda/ledger/verification/processor/impl/VerificationRequestHandlerImpl.kt @@ -7,6 +7,7 @@ import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionContainer import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionImpl import net.corda.ledger.utxo.data.transaction.WrappedUtxoWireTransaction import net.corda.ledger.utxo.transaction.verifier.UtxoLedgerTransactionVerifier +import net.corda.ledger.verification.metrics.VerificationMetricsFactory import net.corda.ledger.verification.processor.VerificationRequestHandler import net.corda.ledger.verification.sandbox.impl.getSerializationService import net.corda.messaging.api.records.Record @@ -42,8 +43,8 @@ class VerificationRequestHandlerImpl(private val responseFactory: ExternalEventR UtxoLedgerTransactionVerifier( transactionFactory, transaction, - sandbox.virtualNodeContext.holdingIdentity, - injectorService + injectorService, + VerificationMetricsFactory(sandbox.virtualNodeContext.holdingIdentity), ).verify() responseFactory.success( diff --git a/components/membership/membership-client-impl/build.gradle b/components/membership/membership-client-impl/build.gradle index 89c03b9f675..e9b254f4c27 100644 --- a/components/membership/membership-client-impl/build.gradle +++ b/components/membership/membership-client-impl/build.gradle @@ -30,6 +30,7 @@ dependencies { implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' testImplementation project(":libs:crypto:crypto-impl") + testImplementation project(":libs:crypto:crypto-impl-utils") testImplementation project(":libs:membership:membership-impl") testImplementation project(":testing:layered-property-map-testkit") testImplementation project(":testing:test-utilities") diff --git a/components/membership/membership-client-impl/src/test/kotlin/net/corda/membership/impl/client/MemberResourceClientTest.kt b/components/membership/membership-client-impl/src/test/kotlin/net/corda/membership/impl/client/MemberResourceClientTest.kt index f514592c89f..f6e11be77f7 100644 --- a/components/membership/membership-client-impl/src/test/kotlin/net/corda/membership/impl/client/MemberResourceClientTest.kt +++ b/components/membership/membership-client-impl/src/test/kotlin/net/corda/membership/impl/client/MemberResourceClientTest.kt @@ -6,7 +6,7 @@ import net.corda.avro.serialization.CordaAvroSerializer import net.corda.configuration.read.ConfigChangedEvent import net.corda.configuration.read.ConfigurationReadService import net.corda.crypto.core.ShortHash -import net.corda.crypto.impl.toWire +import net.corda.crypto.impl.utils.toWire import net.corda.data.KeyValuePair import net.corda.data.KeyValuePairList import net.corda.data.crypto.wire.CryptoSignatureSpec diff --git a/components/membership/membership-group-read-impl/build.gradle b/components/membership/membership-group-read-impl/build.gradle index 19dce0f0f05..479c09c6a06 100644 --- a/components/membership/membership-group-read-impl/build.gradle +++ b/components/membership/membership-group-read-impl/build.gradle @@ -54,6 +54,7 @@ dependencies { testImplementation project(":libs:crypto:crypto-impl") testImplementation project(":libs:membership:membership-impl") + testImplementation project(":libs:layered-property-map-avro") testImplementation project(":testing:layered-property-map-testkit") testImplementation project(":testing:test-utilities") diff --git a/components/membership/membership-group-read-impl/src/test/kotlin/net/corda/membership/impl/read/subscription/MemberListProcessorTest.kt b/components/membership/membership-group-read-impl/src/test/kotlin/net/corda/membership/impl/read/subscription/MemberListProcessorTest.kt index bec5f971863..6d24b493fa1 100644 --- a/components/membership/membership-group-read-impl/src/test/kotlin/net/corda/membership/impl/read/subscription/MemberListProcessorTest.kt +++ b/components/membership/membership-group-read-impl/src/test/kotlin/net/corda/membership/impl/read/subscription/MemberListProcessorTest.kt @@ -10,8 +10,8 @@ import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey import net.corda.data.membership.PersistentMemberInfo import net.corda.data.membership.SignedData +import net.corda.layeredpropertymap.avro.toAvro import net.corda.layeredpropertymap.testkit.LayeredPropertyMapMocks -import net.corda.layeredpropertymap.toAvro import net.corda.membership.impl.read.cache.MembershipGroupReadCache import net.corda.membership.lib.EndpointInfoFactory import net.corda.membership.lib.MemberInfoExtension.Companion.GROUP_ID diff --git a/components/membership/membership-p2p/build.gradle b/components/membership/membership-p2p/build.gradle index e5ce3eb8586..5b961d7d0b4 100644 --- a/components/membership/membership-p2p/build.gradle +++ b/components/membership/membership-p2p/build.gradle @@ -20,7 +20,9 @@ dependencies { implementation 'net.corda:corda-config-schema' implementation project(':libs:crypto:crypto-core') + implementation project(':libs:crypto:crypto-core-avro') implementation project(':libs:layered-property-map') + implementation project(':libs:layered-property-map-avro') implementation project(':libs:membership:membership-common') implementation project(':libs:messaging:messaging') implementation project(':libs:p2p-messaging') diff --git a/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactory.kt b/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactory.kt index 7d07b3e5a9b..a6aff58597e 100644 --- a/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactory.kt +++ b/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactory.kt @@ -2,8 +2,8 @@ package net.corda.membership.p2p.helpers import net.corda.crypto.cipher.suite.KeyEncodingService import net.corda.crypto.core.DigitalSignatureWithKey +import net.corda.crypto.core.avro.toAvro import net.corda.crypto.core.bytes -import net.corda.crypto.core.toAvro import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey import net.corda.data.membership.SignedData diff --git a/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGenerator.kt b/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGenerator.kt index ab7bd6b8176..af7be8a2160 100644 --- a/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGenerator.kt +++ b/components/membership/membership-p2p/src/main/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGenerator.kt @@ -4,7 +4,7 @@ import net.corda.avro.serialization.CordaAvroSerializationFactory import net.corda.avro.serialization.CordaAvroSerializer import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider import net.corda.data.KeyValuePairList -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.membership.lib.SelfSignedMemberInfo import net.corda.v5.crypto.DigestAlgorithmName import net.corda.v5.crypto.merkle.HashDigestConstants.HASH_DIGEST_PROVIDER_LEAF_PREFIX_OPTION diff --git a/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactoryTest.kt b/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactoryTest.kt index b6111a5029c..fc7bdbb9b89 100644 --- a/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactoryTest.kt +++ b/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MembershipPackageFactoryTest.kt @@ -13,7 +13,7 @@ import net.corda.data.membership.SignedData import net.corda.data.membership.SignedMemberInfo import net.corda.data.membership.p2p.DistributionMetaData import net.corda.data.membership.p2p.DistributionType -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.membership.lib.InternalGroupParameters import net.corda.membership.lib.MemberInfoExtension import net.corda.membership.lib.SelfSignedMemberInfo diff --git a/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGeneratorTest.kt b/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGeneratorTest.kt index b1d91855606..3b5a08d621d 100644 --- a/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGeneratorTest.kt +++ b/components/membership/membership-p2p/src/test/kotlin/net/corda/membership/p2p/helpers/MerkleTreeGeneratorTest.kt @@ -6,7 +6,7 @@ import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider import net.corda.data.KeyValuePairList import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.membership.lib.SelfSignedMemberInfo import net.corda.v5.base.types.LayeredPropertyMap import net.corda.v5.base.types.MemberX500Name diff --git a/components/membership/membership-persistence-client-impl/build.gradle b/components/membership/membership-persistence-client-impl/build.gradle index b5fb77691d6..48ee5fccb14 100644 --- a/components/membership/membership-persistence-client-impl/build.gradle +++ b/components/membership/membership-persistence-client-impl/build.gradle @@ -22,6 +22,7 @@ dependencies { implementation project(':libs:crypto:cipher-suite') implementation project(':libs:layered-property-map') + implementation project(':libs:layered-property-map-avro') implementation project(':libs:lifecycle:lifecycle') implementation project(':libs:membership:membership-common') implementation project(':libs:messaging:messaging') diff --git a/components/membership/membership-persistence-client-impl/src/main/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImpl.kt b/components/membership/membership-persistence-client-impl/src/main/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImpl.kt index c9c0edfc4b4..480366843d9 100644 --- a/components/membership/membership-persistence-client-impl/src/main/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImpl.kt +++ b/components/membership/membership-persistence-client-impl/src/main/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImpl.kt @@ -43,7 +43,7 @@ import net.corda.data.membership.db.response.query.StaticNetworkInfoQueryRespons import net.corda.data.membership.db.response.query.UpdateMemberAndRegistrationRequestResponse import net.corda.data.membership.p2p.MembershipRegistrationRequest import net.corda.data.membership.preauth.PreAuthToken -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.lifecycle.LifecycleCoordinatorFactory import net.corda.lifecycle.LifecycleCoordinatorName import net.corda.membership.lib.GroupParametersFactory diff --git a/components/membership/membership-persistence-client-impl/src/test/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImplTest.kt b/components/membership/membership-persistence-client-impl/src/test/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImplTest.kt index 25a31b10e8f..2a6631c5baf 100644 --- a/components/membership/membership-persistence-client-impl/src/test/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImplTest.kt +++ b/components/membership/membership-persistence-client-impl/src/test/kotlin/net/corda/membership/impl/persistence/client/MembershipPersistenceClientImplTest.kt @@ -50,7 +50,7 @@ import net.corda.data.membership.db.response.query.PersistenceFailedResponse import net.corda.data.membership.db.response.query.StaticNetworkInfoQueryResponse import net.corda.data.membership.db.response.query.UpdateMemberAndRegistrationRequestResponse import net.corda.data.membership.preauth.PreAuthToken -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.libs.configuration.SmartConfigFactory import net.corda.lifecycle.LifecycleCoordinator import net.corda.lifecycle.LifecycleCoordinatorFactory diff --git a/components/membership/registration-impl/build.gradle b/components/membership/registration-impl/build.gradle index 1b6769aeb02..c25b3525a30 100644 --- a/components/membership/registration-impl/build.gradle +++ b/components/membership/registration-impl/build.gradle @@ -31,6 +31,7 @@ dependencies { implementation project(":libs:configuration:configuration-core") implementation project(':libs:crypto:cipher-suite') implementation project(":libs:crypto:crypto-core") + implementation project(":libs:layered-property-map-avro") implementation project(":libs:lifecycle:lifecycle") implementation project(":libs:membership:membership-impl") implementation project(":libs:membership:schema-validation") @@ -72,6 +73,7 @@ dependencies { testImplementation project(":libs:crypto:cipher-suite-impl") testImplementation project(":libs:crypto:crypto-impl") + testImplementation project(":libs:crypto:crypto-impl-utils") testImplementation project(":testing:layered-property-map-testkit") testImplementation project(":testing:test-utilities") diff --git a/components/membership/registration-impl/src/main/kotlin/net/corda/membership/impl/registration/staticnetwork/StaticMemberRegistrationService.kt b/components/membership/registration-impl/src/main/kotlin/net/corda/membership/impl/registration/staticnetwork/StaticMemberRegistrationService.kt index 6975a132dfe..0bef2c973e8 100644 --- a/components/membership/registration-impl/src/main/kotlin/net/corda/membership/impl/registration/staticnetwork/StaticMemberRegistrationService.kt +++ b/components/membership/registration-impl/src/main/kotlin/net/corda/membership/impl/registration/staticnetwork/StaticMemberRegistrationService.kt @@ -18,7 +18,7 @@ import net.corda.data.membership.StaticNetworkInfo import net.corda.data.membership.common.v2.RegistrationStatus import net.corda.data.p2p.HostedIdentityEntry import net.corda.data.p2p.HostedIdentitySessionKeyAndCert -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.libs.platform.PlatformInfoProvider import net.corda.lifecycle.LifecycleCoordinatorFactory import net.corda.lifecycle.LifecycleStatus diff --git a/components/membership/registration-impl/src/test/kotlin/net/corda/membership/impl/registration/dynamic/mgm/MGMRegistrationMemberInfoHandlerTest.kt b/components/membership/registration-impl/src/test/kotlin/net/corda/membership/impl/registration/dynamic/mgm/MGMRegistrationMemberInfoHandlerTest.kt index 34f655d22b8..785f80a222e 100644 --- a/components/membership/registration-impl/src/test/kotlin/net/corda/membership/impl/registration/dynamic/mgm/MGMRegistrationMemberInfoHandlerTest.kt +++ b/components/membership/registration-impl/src/test/kotlin/net/corda/membership/impl/registration/dynamic/mgm/MGMRegistrationMemberInfoHandlerTest.kt @@ -8,7 +8,7 @@ import net.corda.crypto.client.CryptoOpsClient import net.corda.crypto.core.CryptoConsts.Categories.PRE_AUTH import net.corda.crypto.core.CryptoConsts.Categories.SESSION_INIT import net.corda.crypto.core.ShortHash -import net.corda.crypto.impl.toMap +import net.corda.crypto.impl.utils.toMap import net.corda.data.KeyValuePairList import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey diff --git a/components/membership/synchronisation-impl/build.gradle b/components/membership/synchronisation-impl/build.gradle index 5b52f41204e..f48d9ecbc90 100644 --- a/components/membership/synchronisation-impl/build.gradle +++ b/components/membership/synchronisation-impl/build.gradle @@ -31,6 +31,7 @@ dependencies { implementation project(':components:virtual-node:virtual-node-info-read-service') implementation project(':libs:crypto:crypto-core') + implementation project(':libs:crypto:crypto-core-avro') implementation project(":libs:lifecycle:lifecycle") implementation project(":libs:messaging:messaging") implementation project(':libs:p2p-messaging') @@ -47,6 +48,7 @@ dependencies { integrationTestImplementation project(':components:membership:membership-group-read') integrationTestImplementation project(':components:membership:membership-p2p') integrationTestImplementation project(':testing:db-message-bus-testkit') + integrationTestImplementation project(':libs:layered-property-map-avro') integrationTestRuntimeOnly project(':components:configuration:configuration-read-service-impl') integrationTestRuntimeOnly project(':components:crypto:crypto-client-impl') integrationTestRuntimeOnly project(':components:crypto:crypto-hes-impl') diff --git a/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/SynchronisationIntegrationTest.kt b/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/SynchronisationIntegrationTest.kt index 4be3d17226d..015278d5e23 100644 --- a/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/SynchronisationIntegrationTest.kt +++ b/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/SynchronisationIntegrationTest.kt @@ -11,14 +11,13 @@ import net.corda.crypto.cipher.suite.KeyEncodingService import net.corda.crypto.cipher.suite.SignatureSpecs import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider import net.corda.crypto.client.CryptoOpsClient +import net.corda.crypto.core.avro.toAvro import net.corda.crypto.core.bytes -import net.corda.crypto.core.toAvro import net.corda.crypto.hes.StableKeyPairDecryptor import net.corda.data.KeyValuePair import net.corda.data.KeyValuePairList import net.corda.data.config.Configuration import net.corda.data.config.ConfigurationSchemaVersion -import net.corda.data.crypto.SecureHash import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey import net.corda.data.identity.HoldingIdentity @@ -37,7 +36,7 @@ import net.corda.data.p2p.app.AuthenticatedMessageHeader import net.corda.data.p2p.app.MembershipStatusFilter import net.corda.data.sync.BloomFilter import net.corda.db.messagebus.testkit.DBSetup -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.libs.configuration.SmartConfigFactory import net.corda.lifecycle.LifecycleCoordinatorFactory import net.corda.lifecycle.LifecycleCoordinatorName @@ -119,6 +118,7 @@ import java.time.Instant import java.time.temporal.ChronoUnit import java.util.UUID import java.util.concurrent.CompletableFuture +import net.corda.data.crypto.SecureHash as AvroSecureHash @ExtendWith(ServiceExtension::class, DBSetup::class) class SynchronisationIntegrationTest { @@ -427,7 +427,7 @@ class SynchronisationIntegrationTest { ) val requesterHash = merkleTreeGenerator.generateTreeUsingMembers(listOf(requesterInfo)).root val byteBuffer = ByteBuffer.wrap("123".toByteArray()) - val secureHash = SecureHash("algorithm", byteBuffer) + val secureHash = AvroSecureHash("algorithm", byteBuffer) val syncRequest = MembershipSyncRequest( DistributionMetaData( diff --git a/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/dummy/TestMembershipQueryClient.kt b/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/dummy/TestMembershipQueryClient.kt index 619c49f152e..206e812b099 100644 --- a/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/dummy/TestMembershipQueryClient.kt +++ b/components/membership/synchronisation-impl/src/integrationTest/kotlin/net/corda/membership/impl/synchronisation/dummy/TestMembershipQueryClient.kt @@ -10,7 +10,7 @@ import net.corda.data.membership.common.ApprovalRuleDetails import net.corda.data.membership.common.ApprovalRuleType import net.corda.data.membership.common.RegistrationRequestDetails import net.corda.data.membership.common.v2.RegistrationStatus -import net.corda.layeredpropertymap.toAvro +import net.corda.layeredpropertymap.avro.toAvro import net.corda.lifecycle.LifecycleCoordinatorFactory import net.corda.lifecycle.LifecycleCoordinatorName import net.corda.lifecycle.LifecycleStatus diff --git a/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImpl.kt b/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImpl.kt index 61f62975834..0cd733c6ff3 100644 --- a/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImpl.kt +++ b/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImpl.kt @@ -6,9 +6,9 @@ import net.corda.configuration.read.ConfigurationReadService import net.corda.crypto.cipher.suite.KeyEncodingService import net.corda.crypto.cipher.suite.SignatureVerificationService import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider +import net.corda.crypto.core.avro.toAvro +import net.corda.crypto.core.avro.toCorda import net.corda.crypto.core.bytes -import net.corda.crypto.core.toAvro -import net.corda.crypto.core.toCorda import net.corda.data.membership.command.synchronisation.member.ProcessMembershipUpdates import net.corda.data.membership.p2p.DistributionMetaData import net.corda.data.membership.p2p.MembershipPackage diff --git a/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImpl.kt b/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImpl.kt index bed9e85e60a..d76468f6e37 100644 --- a/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImpl.kt +++ b/components/membership/synchronisation-impl/src/main/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImpl.kt @@ -6,7 +6,7 @@ import net.corda.configuration.read.ConfigurationReadService import net.corda.crypto.cipher.suite.CipherSchemeMetadata import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider import net.corda.crypto.client.CryptoOpsClient -import net.corda.crypto.core.toCorda +import net.corda.crypto.core.avro.toCorda import net.corda.data.membership.command.synchronisation.mgm.ProcessSyncRequest import net.corda.data.membership.p2p.DistributionType import net.corda.data.membership.p2p.MembershipPackage diff --git a/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImplTest.kt b/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImplTest.kt index 23c6bb8536e..fbc0144f438 100644 --- a/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImplTest.kt +++ b/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MemberSynchronisationServiceImplTest.kt @@ -3,8 +3,7 @@ package net.corda.membership.impl.synchronisation import com.typesafe.config.ConfigFactory import net.corda.configuration.read.ConfigChangedEvent import net.corda.configuration.read.ConfigurationReadService -import net.corda.crypto.core.toCorda -import net.corda.data.crypto.SecureHash +import net.corda.crypto.core.avro.toCorda import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey import net.corda.data.membership.PersistentMemberInfo @@ -96,6 +95,7 @@ import java.security.PublicKey import java.time.Instant import java.util.concurrent.CompletableFuture import kotlin.test.assertFailsWith +import net.corda.data.crypto.SecureHash as AvroSecureHash import net.corda.data.membership.SignedGroupParameters as AvroGroupParameters class MemberSynchronisationServiceImplTest { @@ -195,7 +195,7 @@ class MemberSynchronisationServiceImplTest { on { memberContext } doReturn signedMemberContext on { mgmContext } doReturn signedMgmContext } - private val hash = SecureHash("algo", ByteBuffer.wrap(byteArrayOf(1, 2, 3))) + private val hash = AvroSecureHash("algo", ByteBuffer.wrap(byteArrayOf(1, 2, 3))) private val signedMemberships: SignedMemberships = mock { on { memberships } doReturn listOf(signedMemberInfo) on { hashCheck } doReturn hash @@ -538,7 +538,7 @@ class MemberSynchronisationServiceImplTest { fun `processMembershipUpdates asks for synchronization when hashes are misaligned`() { postConfigChangedEvent() synchronisationService.start() - whenever(signedMemberships.hashCheck) doReturn SecureHash("algo", ByteBuffer.wrap(byteArrayOf(4, 5, 6))) + whenever(signedMemberships.hashCheck) doReturn AvroSecureHash("algo", ByteBuffer.wrap(byteArrayOf(4, 5, 6))) val published = synchronisationService.processMembershipUpdates(updates) @@ -556,7 +556,7 @@ class MemberSynchronisationServiceImplTest { fun `processMembershipUpdates create the correct sync request when hashes are misaligned`() { postConfigChangedEvent() synchronisationService.start() - whenever(signedMemberships.hashCheck) doReturn SecureHash("algo", ByteBuffer.wrap(byteArrayOf(4, 5, 6))) + whenever(signedMemberships.hashCheck) doReturn AvroSecureHash("algo", ByteBuffer.wrap(byteArrayOf(4, 5, 6))) synchronisationService.processMembershipUpdates(updates) diff --git a/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImplTest.kt b/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImplTest.kt index ae29fc4e913..c8911bdbcce 100644 --- a/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImplTest.kt +++ b/components/membership/synchronisation-impl/src/test/kotlin/net/corda/membership/impl/synchronisation/MgmSynchronisationServiceImplTest.kt @@ -3,7 +3,7 @@ package net.corda.membership.impl.synchronisation import net.corda.configuration.read.ConfigChangedEvent import net.corda.configuration.read.ConfigurationReadService import net.corda.crypto.client.CryptoOpsClient -import net.corda.crypto.core.toCorda +import net.corda.crypto.core.avro.toCorda import net.corda.data.crypto.SecureHash import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey diff --git a/components/uniqueness/uniqueness-checker-client-service-impl/build.gradle b/components/uniqueness/uniqueness-checker-client-service-impl/build.gradle index 365bae2561a..1b72c42efd2 100644 --- a/components/uniqueness/uniqueness-checker-client-service-impl/build.gradle +++ b/components/uniqueness/uniqueness-checker-client-service-impl/build.gradle @@ -19,9 +19,10 @@ dependencies { implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' implementation project(':components:crypto:crypto-client') - implementation project(':components:ledger:ledger-common-flow-api') + implementation project(':libs:ledger:ledger-lib-common-flow-api') implementation project(':libs:crypto:merkle-impl') implementation project(':libs:flows:flow-api') + implementation project(':libs:flows:flow-utils') implementation project(':libs:membership:membership-common') implementation project(':libs:metrics') implementation project(':libs:sandbox-types') diff --git a/components/uniqueness/uniqueness-checker-client-service-impl/src/main/kotlin/net/corda/uniqueness/client/impl/UniquenessCheckClientExternalEventFactory.kt b/components/uniqueness/uniqueness-checker-client-service-impl/src/main/kotlin/net/corda/uniqueness/client/impl/UniquenessCheckClientExternalEventFactory.kt index 578fd6cefaa..be36e6719c6 100644 --- a/components/uniqueness/uniqueness-checker-client-service-impl/src/main/kotlin/net/corda/uniqueness/client/impl/UniquenessCheckClientExternalEventFactory.kt +++ b/components/uniqueness/uniqueness-checker-client-service-impl/src/main/kotlin/net/corda/uniqueness/client/impl/UniquenessCheckClientExternalEventFactory.kt @@ -1,6 +1,5 @@ package net.corda.uniqueness.client.impl -import net.corda.data.flow.event.external.ExternalEventContext import net.corda.data.uniqueness.UniquenessCheckRequestAvro import net.corda.data.uniqueness.UniquenessCheckResponseAvro import net.corda.data.uniqueness.UniquenessCheckResultInputStateConflictAvro @@ -13,9 +12,11 @@ import net.corda.data.uniqueness.UniquenessCheckResultSuccessAvro import net.corda.data.uniqueness.UniquenessCheckResultTimeWindowBeforeLowerBoundAvro import net.corda.data.uniqueness.UniquenessCheckResultTimeWindowOutOfBoundsAvro import net.corda.data.uniqueness.UniquenessCheckResultUnhandledExceptionAvro +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.factory.ExternalEventFactory import net.corda.flow.external.events.factory.ExternalEventRecord import net.corda.flow.state.FlowCheckpoint +import net.corda.flow.utils.toAvro import net.corda.uniqueness.datamodel.common.toStateRef import net.corda.uniqueness.datamodel.impl.UniquenessCheckErrorInputStateConflictImpl import net.corda.uniqueness.datamodel.impl.UniquenessCheckErrorInputStateUnknownImpl @@ -62,7 +63,7 @@ class UniquenessCheckExternalEventFactory : checkpoint: FlowCheckpoint ) = UniquenessCheckRequestAvro.newBuilder() .setHoldingIdentity(checkpoint.holdingIdentity.toAvro()) - .setFlowExternalEventContext(context) + .setFlowExternalEventContext(context.toAvro()) .setTxId(params.txId) .setOriginatorX500Name(params.originatorX500Name) .setInputStates(params.inputStates) diff --git a/components/virtual-node/cpi-upload-rest-service/build.gradle b/components/virtual-node/cpi-upload-rest-service/build.gradle index a58c3b85929..71716167edd 100644 --- a/components/virtual-node/cpi-upload-rest-service/build.gradle +++ b/components/virtual-node/cpi-upload-rest-service/build.gradle @@ -25,6 +25,7 @@ dependencies { implementation 'net.corda:corda-base' implementation 'net.corda:corda-config-schema' implementation 'net.corda:corda-crypto' + implementation project(':libs:crypto:crypto-core-avro') implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' implementation 'net.corda:corda-avro-schema' implementation 'net.corda:corda-topic-schema' diff --git a/components/virtual-node/cpi-upload-rest-service/src/main/kotlin/net/corda/cpi/upload/endpoints/v1/CpiUploadRestResourceImpl.kt b/components/virtual-node/cpi-upload-rest-service/src/main/kotlin/net/corda/cpi/upload/endpoints/v1/CpiUploadRestResourceImpl.kt index 16232f556aa..e1615749824 100644 --- a/components/virtual-node/cpi-upload-rest-service/src/main/kotlin/net/corda/cpi/upload/endpoints/v1/CpiUploadRestResourceImpl.kt +++ b/components/virtual-node/cpi-upload-rest-service/src/main/kotlin/net/corda/cpi/upload/endpoints/v1/CpiUploadRestResourceImpl.kt @@ -4,7 +4,7 @@ import net.corda.chunking.Constants.Companion.CHUNK_FILENAME_KEY import net.corda.cpi.upload.endpoints.common.CpiUploadRestResourceHandler import net.corda.cpi.upload.endpoints.service.CpiUploadService import net.corda.cpiinfo.read.CpiInfoReadService -import net.corda.crypto.core.toCorda +import net.corda.crypto.core.avro.toCorda import net.corda.data.chunking.UploadStatus import net.corda.libs.configuration.validation.ConfigurationValidationException import net.corda.libs.cpiupload.DuplicateCpiUploadException diff --git a/components/virtual-node/cpk-read-service-impl/build.gradle b/components/virtual-node/cpk-read-service-impl/build.gradle index fb02de2fd38..137c244bbb3 100644 --- a/components/virtual-node/cpk-read-service-impl/build.gradle +++ b/components/virtual-node/cpk-read-service-impl/build.gradle @@ -20,6 +20,7 @@ dependencies { implementation project(":libs:configuration:configuration-core") implementation project(":libs:chunking:chunking-core") implementation project(":libs:crypto:crypto-core") + implementation project(":libs:crypto:crypto-core-avro") implementation project(":libs:lifecycle:lifecycle") implementation project(":libs:messaging:messaging") implementation project(':libs:metrics') diff --git a/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/CpkChunksKafkaReader.kt b/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/CpkChunksKafkaReader.kt index 0cffd175512..24019992e87 100644 --- a/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/CpkChunksKafkaReader.kt +++ b/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/CpkChunksKafkaReader.kt @@ -1,6 +1,5 @@ package net.corda.cpk.read.impl.services -import net.corda.crypto.core.toCorda import net.corda.cpk.read.impl.services.cache.CpkChunkIdsCache import net.corda.cpk.read.impl.services.persistence.CpkChunksFileManager import net.corda.data.chunking.Chunk @@ -15,6 +14,7 @@ import org.slf4j.LoggerFactory import java.nio.file.Files import java.nio.file.Path import java.util.SortedSet +import net.corda.crypto.core.avro.toCorda // TODO should be enough for now to keep it simple and not replace/ delete CPK chunks? class CpkChunksKafkaReader( diff --git a/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImpl.kt b/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImpl.kt index 60341f57a57..505c2c762d8 100644 --- a/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImpl.kt +++ b/components/virtual-node/cpk-read-service-impl/src/main/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImpl.kt @@ -1,6 +1,5 @@ package net.corda.cpk.read.impl.services.persistence -import net.corda.crypto.core.toCorda import net.corda.data.chunking.Chunk import net.corda.data.chunking.CpkChunkId import net.corda.libs.packaging.setReadOnly @@ -22,6 +21,7 @@ import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE import java.nio.file.attribute.PosixFilePermissions.asFileAttribute import java.util.SortedSet import java.util.function.Consumer +import net.corda.crypto.core.avro.toCorda /** * Creates resources on disk, that something needs to remove on shutdown. diff --git a/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/Helpers.kt b/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/Helpers.kt index 7b50058dee2..c0a07b37ca3 100644 --- a/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/Helpers.kt +++ b/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/Helpers.kt @@ -1,10 +1,10 @@ package net.corda.cpk.read.impl -import net.corda.crypto.core.toAvro import net.corda.data.chunking.Chunk import net.corda.data.chunking.CpkChunkId import net.corda.v5.crypto.SecureHash import java.nio.ByteBuffer +import net.corda.crypto.core.avro.toAvro object Helpers { @@ -23,4 +23,4 @@ object Helpers { ByteBuffer.wrap(bytes), null ) -} \ No newline at end of file +} diff --git a/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImplTest.kt b/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImplTest.kt index eb0c5975227..83730d9a806 100644 --- a/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImplTest.kt +++ b/components/virtual-node/cpk-read-service-impl/src/test/kotlin/net/corda/cpk/read/impl/services/persistence/CpkChunksFileManagerImplTest.kt @@ -7,7 +7,6 @@ import net.corda.cpk.read.impl.services.persistence.CpkChunksFileManagerImpl.Com import net.corda.cpk.read.impl.services.persistence.CpkChunksFileManagerImpl.Companion.toCpkFileName import net.corda.cpk.read.impl.services.persistence.CpkChunksFileManagerImpl.Companion.toFileName import net.corda.crypto.core.parseSecureHash -import net.corda.crypto.core.toCorda import net.corda.data.chunking.CpkChunkId import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Condition @@ -24,6 +23,7 @@ import java.nio.file.StandardOpenOption.CREATE_NEW import java.nio.file.StandardOpenOption.WRITE import java.nio.file.attribute.PosixFilePermission import java.nio.file.attribute.PosixFilePermission.OWNER_READ +import net.corda.crypto.core.avro.toCorda class CpkChunksFileManagerImplTest { private lateinit var commonCpkCacheDir: Path diff --git a/components/virtual-node/cpk-write-service-impl/build.gradle b/components/virtual-node/cpk-write-service-impl/build.gradle index 969ea729242..6c88f5fb2e6 100644 --- a/components/virtual-node/cpk-write-service-impl/build.gradle +++ b/components/virtual-node/cpk-write-service-impl/build.gradle @@ -25,6 +25,7 @@ dependencies { implementation project(':libs:chunking:chunking-core') implementation project(":libs:configuration:configuration-core") implementation project(":libs:crypto:crypto-core") + implementation project(":libs:crypto:crypto-core-avro") implementation project(':libs:db:db-orm') implementation project(":libs:lifecycle:lifecycle") implementation project(":libs:messaging:messaging") diff --git a/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/CpkWriteServiceImpl.kt b/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/CpkWriteServiceImpl.kt index 0f3809604e7..3dc534ce343 100644 --- a/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/CpkWriteServiceImpl.kt +++ b/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/CpkWriteServiceImpl.kt @@ -2,7 +2,6 @@ package net.corda.cpk.write.impl import net.corda.chunking.ChunkWriterFactory import net.corda.chunking.Constants.Companion.CHUNK_FILENAME_KEY -import net.corda.crypto.core.toAvro import net.corda.configuration.read.ConfigChangedEvent import net.corda.configuration.read.ConfigurationReadService import net.corda.cpk.write.CpkWriteService @@ -51,6 +50,7 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import java.io.ByteArrayInputStream import java.time.Duration +import net.corda.crypto.core.avro.toAvro // TODO at some later point consider deleting CPKs blobs in the database by nulling their blob values and pass the null value to Kafka @Suppress("TooManyFunctions") diff --git a/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImpl.kt b/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImpl.kt index 45c4c32c2ca..5bbf2f85224 100644 --- a/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImpl.kt +++ b/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImpl.kt @@ -1,6 +1,5 @@ package net.corda.cpk.write.impl.services.kafka.impl -import net.corda.crypto.core.toCorda import net.corda.cpk.write.impl.services.kafka.CpkChecksumsCache import net.corda.cpk.write.impl.services.kafka.impl.CpkChecksumsCacheImpl.CacheSynchronizer import net.corda.data.chunking.Chunk @@ -17,6 +16,7 @@ import net.corda.v5.crypto.SecureHash import org.slf4j.LoggerFactory import java.nio.ByteBuffer import java.util.Collections +import net.corda.crypto.core.avro.toCorda /** * This cache will get updated everytime a zero chunk is pushed to Kafka and gets picked up by [CacheSynchronizer]. diff --git a/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisher.kt b/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisher.kt index 896714e3cd8..04d337aeba0 100644 --- a/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisher.kt +++ b/components/virtual-node/cpk-write-service-impl/src/main/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisher.kt @@ -1,6 +1,5 @@ package net.corda.cpk.write.impl.services.kafka.impl -import net.corda.crypto.core.toCorda import net.corda.cpk.write.impl.services.kafka.CpkChunksPublisher import net.corda.data.chunking.Chunk import net.corda.data.chunking.CpkChunkId @@ -10,6 +9,7 @@ import net.corda.utilities.concurrent.getOrThrow import net.corda.utilities.debug import org.slf4j.LoggerFactory import java.time.Duration +import net.corda.crypto.core.avro.toCorda class KafkaCpkChunksPublisher( private val publisher: Publisher, @@ -36,4 +36,4 @@ class KafkaCpkChunksPublisher( override fun close() { publisher.close() } -} \ No newline at end of file +} diff --git a/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImplTest.kt b/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImplTest.kt index 4c75ee494d0..ad1cbd46675 100644 --- a/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImplTest.kt +++ b/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/CpkChecksumsCacheImplTest.kt @@ -1,7 +1,6 @@ package net.corda.cpk.write.impl.services.kafka.impl import net.corda.crypto.core.SecureHashImpl -import net.corda.crypto.core.toAvro import net.corda.data.chunking.Chunk import net.corda.data.chunking.CpkChunkId import net.corda.messaging.api.records.Record @@ -15,6 +14,7 @@ import org.junit.jupiter.api.Test import org.mockito.kotlin.mock import java.nio.ByteBuffer import java.security.MessageDigest +import net.corda.crypto.core.avro.toAvro class CpkChecksumsCacheImplTest { private lateinit var cpkChecksumCache: CpkChecksumsCacheImpl @@ -89,4 +89,4 @@ class CpkChecksumsCacheImplTest { assertFalse(cpkChecksum in cpkChecksumCache.getCachedCpkIds()) } -} \ No newline at end of file +} diff --git a/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisherTest.kt b/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisherTest.kt index 0d348b60681..56aebb25204 100644 --- a/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisherTest.kt +++ b/components/virtual-node/cpk-write-service-impl/src/test/kotlin/net/corda/cpk/write/impl/services/kafka/impl/KafkaCpkChunksPublisherTest.kt @@ -2,7 +2,6 @@ package net.corda.cpk.write.impl.services.kafka.impl import net.corda.cpk.write.impl.services.kafka.CpkChunksPublisher import net.corda.crypto.core.SecureHashImpl -import net.corda.crypto.core.toAvro import net.corda.data.chunking.Chunk import net.corda.data.chunking.CpkChunkId import net.corda.messaging.api.publisher.Publisher @@ -14,6 +13,7 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.whenever import java.security.MessageDigest import java.util.concurrent.CompletableFuture +import net.corda.crypto.core.avro.toAvro class KafkaCpkChunksPublisherTest { private lateinit var kafkaCpkChunksPublisher: CpkChunksPublisher @@ -41,4 +41,4 @@ class KafkaCpkChunksPublisherTest { kafkaCpkChunksPublisher.put(cpkChunkId, cpkChunk) } -} \ No newline at end of file +} diff --git a/libs/application/application-impl/build.gradle b/libs/application/application-impl/build.gradle index 47dce8d21ba..0007e13f4d8 100644 --- a/libs/application/application-impl/build.gradle +++ b/libs/application/application-impl/build.gradle @@ -14,8 +14,10 @@ dependencies { implementation 'net.corda:corda-base' implementation "net.corda:corda-application" - implementation project(":libs:virtual-node:sandbox-group-context") api project(":libs:serialization:json-serializers") + implementation project(':libs:crypto:cipher-suite') + implementation project(':libs:crypto:crypto-core') + implementation project(':libs:sandbox-types') implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' implementation libs.jackson.module.kotlin diff --git a/libs/chunking/chunking-core/build.gradle b/libs/chunking/chunking-core/build.gradle index a273bc28976..d0364e2b928 100644 --- a/libs/chunking/chunking-core/build.gradle +++ b/libs/chunking/chunking-core/build.gradle @@ -19,6 +19,7 @@ dependencies { implementation project(":libs:configuration:configuration-core") implementation project(':libs:crypto:crypto-core') + implementation project(':libs:crypto:crypto-core-avro') implementation project(':libs:utilities') testImplementation "com.google.jimfs:jimfs:$jimfsVersion" diff --git a/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImpl.kt b/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImpl.kt index eb428fe2f34..cf32e1f4149 100644 --- a/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImpl.kt +++ b/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImpl.kt @@ -2,7 +2,7 @@ package net.corda.chunking.impl import java.nio.ByteBuffer import net.corda.chunking.ChunkBuilderService -import net.corda.crypto.core.toAvro +import net.corda.crypto.core.avro.toAvro import net.corda.data.KeyValuePairList import net.corda.data.chunking.Chunk import net.corda.v5.crypto.SecureHash @@ -40,4 +40,4 @@ class ChunkBuilderServiceImpl : ChunkBuilderService { .setOffset(offset) .build() -} \ No newline at end of file +} diff --git a/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkReaderImpl.kt b/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkReaderImpl.kt index b259340aaf5..28fa0d0f76c 100644 --- a/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkReaderImpl.kt +++ b/libs/chunking/chunking-core/src/main/kotlin/net/corda/chunking/impl/ChunkReaderImpl.kt @@ -6,7 +6,6 @@ import net.corda.chunking.ChunksCombined import net.corda.chunking.Constants.Companion.SECURE_HASH_VALIDATION_ERROR import net.corda.chunking.RequestId import net.corda.crypto.core.SecureHashImpl -import net.corda.crypto.core.toCorda import net.corda.data.KeyValuePairList import net.corda.data.chunking.Chunk import net.corda.utilities.posixOptional @@ -19,6 +18,7 @@ import java.nio.file.StandardOpenOption.WRITE import java.nio.file.attribute.PosixFilePermission.OWNER_READ import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE import java.nio.file.attribute.PosixFilePermissions.asFileAttribute +import net.corda.crypto.core.avro.toCorda /** * Receives binary chunks and reassembles full binary under [destDir] and executes completed @@ -100,4 +100,4 @@ internal class ChunkReaderImpl(private val destDir: Path) : ChunkReader { } this.chunksCombinedCallback = chunksCombinedCallback } -} \ No newline at end of file +} diff --git a/libs/chunking/chunking-core/src/test/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImplTest.kt b/libs/chunking/chunking-core/src/test/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImplTest.kt index cbad6e0f548..a45cfdf617a 100644 --- a/libs/chunking/chunking-core/src/test/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImplTest.kt +++ b/libs/chunking/chunking-core/src/test/kotlin/net/corda/chunking/impl/ChunkBuilderServiceImplTest.kt @@ -3,7 +3,7 @@ package net.corda.chunking.impl import java.nio.ByteBuffer import net.corda.chunking.Checksum import net.corda.chunking.Constants.Companion.CHUNK_FILENAME_KEY -import net.corda.crypto.core.toAvro +import net.corda.crypto.core.avro.toAvro import net.corda.data.KeyValuePair import net.corda.data.KeyValuePairList import net.corda.v5.crypto.SecureHash @@ -60,4 +60,4 @@ class ChunkBuilderServiceImplTest { assertThat(chunk.properties.items.find { it.key == offsetIndex }?.value).isEqualTo(offset.toString()) assertThat(chunk.offset).isEqualTo(offset) } -} \ No newline at end of file +} diff --git a/libs/crypto/cipher-suite-impl/src/main/kotlin/net/corda/cipher/suite/impl/DigestServiceImpl.kt b/libs/crypto/cipher-suite-impl/src/main/kotlin/net/corda/cipher/suite/impl/DigestServiceImpl.kt index 9fd2512792e..6a00ad660a3 100644 --- a/libs/crypto/cipher-suite-impl/src/main/kotlin/net/corda/cipher/suite/impl/DigestServiceImpl.kt +++ b/libs/crypto/cipher-suite-impl/src/main/kotlin/net/corda/cipher/suite/impl/DigestServiceImpl.kt @@ -100,4 +100,4 @@ class DigestServiceImpl @Activate constructor( } } ?: setOf()) } -} \ No newline at end of file +} diff --git a/libs/crypto/crypto-core-avro/build.gradle b/libs/crypto/crypto-core-avro/build.gradle new file mode 100644 index 00000000000..618bc578a97 --- /dev/null +++ b/libs/crypto/crypto-core-avro/build.gradle @@ -0,0 +1,16 @@ +plugins { + id 'corda.common-publishing' + id 'corda.common-library' +} + +description 'Crypto core avro' + +dependencies { + compileOnly 'org.osgi:osgi.annotation' + + implementation platform("net.corda:corda-api:$cordaApiVersion") + implementation "net.corda:corda-avro-schema" + implementation project(':libs:crypto:crypto-core') + + implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' +} diff --git a/libs/crypto/crypto-core-avro/src/main/java/net/corda/crypto/core/avro/package-info.java b/libs/crypto/crypto-core-avro/src/main/java/net/corda/crypto/core/avro/package-info.java new file mode 100644 index 00000000000..cfc5bb3c68f --- /dev/null +++ b/libs/crypto/crypto-core-avro/src/main/java/net/corda/crypto/core/avro/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.crypto.core.avro; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/crypto/crypto-core-avro/src/main/kotlin/net/corda/crypto/core/avro/SecureHashExtension.kt b/libs/crypto/crypto-core-avro/src/main/kotlin/net/corda/crypto/core/avro/SecureHashExtension.kt new file mode 100644 index 00000000000..08e8d33f703 --- /dev/null +++ b/libs/crypto/crypto-core-avro/src/main/kotlin/net/corda/crypto/core/avro/SecureHashExtension.kt @@ -0,0 +1,13 @@ +package net.corda.crypto.core.avro + +import java.nio.ByteBuffer +import net.corda.crypto.core.SecureHashImpl +import net.corda.crypto.core.bytes +import net.corda.v5.crypto.SecureHash +import net.corda.data.crypto.SecureHash as AvroSecureHash + +fun AvroSecureHash.toCorda(): SecureHash = + SecureHashImpl(this.algorithm, this.bytes.array()) + +fun SecureHash.toAvro(): AvroSecureHash = + AvroSecureHash(this.algorithm, ByteBuffer.wrap(bytes)) diff --git a/libs/crypto/crypto-core/build.gradle b/libs/crypto/crypto-core/build.gradle index 4118e4f4135..07a9e78a573 100644 --- a/libs/crypto/crypto-core/build.gradle +++ b/libs/crypto/crypto-core/build.gradle @@ -11,7 +11,6 @@ dependencies { implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' implementation platform("net.corda:corda-api:$cordaApiVersion") - implementation "net.corda:corda-avro-schema" api project(':libs:base-internal') implementation project(':libs:crypto:crypto-utils') diff --git a/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/SigningKeyInfo.kt b/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/SigningKeyInfo.kt index 08fff655ca5..f602cae12f5 100644 --- a/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/SigningKeyInfo.kt +++ b/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/SigningKeyInfo.kt @@ -1,9 +1,6 @@ package net.corda.crypto.core -import net.corda.crypto.cipher.suite.KeyEncodingService -import net.corda.data.crypto.wire.CryptoSigningKey import net.corda.v5.crypto.SecureHash -import java.nio.ByteBuffer import java.security.PublicKey import java.time.Instant @@ -74,18 +71,4 @@ data class SigningKeyInfo( result = 31 * result + status.hashCode() return result } - - fun toCryptoSigningKey(keyEncodingService: KeyEncodingService): CryptoSigningKey = CryptoSigningKey( - this.id.value, - this.tenantId, - this.category, - this.alias, - this.hsmAlias, - ByteBuffer.wrap(keyEncodingService.encodeAsByteArray(this.publicKey)), - this.schemeCodeName, - this.wrappingKeyAlias, - this.encodingVersion, - this.externalId, - this.timestamp - ) -} \ No newline at end of file +} diff --git a/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/Utils.kt b/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/Utils.kt index fc50776ce58..21165a28112 100644 --- a/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/Utils.kt +++ b/libs/crypto/crypto-core/src/main/kotlin/net/corda/crypto/core/Utils.kt @@ -1,13 +1,4 @@ package net.corda.crypto.core -import net.corda.data.crypto.SecureHash as AvroSecureHash -import net.corda.v5.crypto.SecureHash -import java.nio.ByteBuffer - -fun SecureHash.toAvro(): AvroSecureHash = - AvroSecureHash(this.algorithm, ByteBuffer.wrap(bytes)) - -fun AvroSecureHash.toCorda(): SecureHash = - SecureHashImpl(this.algorithm, this.bytes.array()) fun concatByteArrays(vararg concat: ByteArray): ByteArray { if (concat.isEmpty()) { @@ -39,4 +30,4 @@ fun Long.toByteArray(): ByteArray { (this shr 8).toByte(), this.toByte() ) -} \ No newline at end of file +} diff --git a/libs/crypto/crypto-flow/build.gradle b/libs/crypto/crypto-flow/build.gradle index 6057142ea67..3b81fe89792 100644 --- a/libs/crypto/crypto-flow/build.gradle +++ b/libs/crypto/crypto-flow/build.gradle @@ -17,6 +17,7 @@ dependencies { api project(':libs:crypto:cipher-suite') implementation project(":libs:crypto:cipher-suite-impl") + implementation project(":libs:crypto:crypto-impl-utils") } diff --git a/libs/crypto/crypto-flow/src/main/kotlin/net/corda/crypto/flow/impl/CryptoFlowOpsTransformerImpl.kt b/libs/crypto/crypto-flow/src/main/kotlin/net/corda/crypto/flow/impl/CryptoFlowOpsTransformerImpl.kt index 87705ec22e9..8df5f1e3580 100644 --- a/libs/crypto/crypto-flow/src/main/kotlin/net/corda/crypto/flow/impl/CryptoFlowOpsTransformerImpl.kt +++ b/libs/crypto/crypto-flow/src/main/kotlin/net/corda/crypto/flow/impl/CryptoFlowOpsTransformerImpl.kt @@ -2,15 +2,15 @@ package net.corda.crypto.flow.impl import net.corda.crypto.cipher.suite.AlgorithmParameterSpecEncodingService import net.corda.crypto.cipher.suite.KeyEncodingService -import net.corda.crypto.core.bytes import net.corda.crypto.core.DigitalSignatureWithKey +import net.corda.crypto.core.bytes import net.corda.crypto.flow.CryptoFlowOpsTransformer import net.corda.crypto.flow.CryptoFlowOpsTransformer.Companion.REQUEST_OP_KEY import net.corda.crypto.flow.CryptoFlowOpsTransformer.Companion.REQUEST_TTL_KEY import net.corda.crypto.flow.CryptoFlowOpsTransformer.Companion.RESPONSE_ERROR_KEY import net.corda.crypto.flow.CryptoFlowOpsTransformer.Companion.RESPONSE_TOPIC -import net.corda.crypto.impl.createWireRequestContext -import net.corda.crypto.impl.toWire +import net.corda.crypto.impl.utils.createWireRequestContext +import net.corda.crypto.impl.utils.toWire import net.corda.data.KeyValuePair import net.corda.data.KeyValuePairList import net.corda.data.crypto.SecureHashes diff --git a/libs/crypto/crypto-impl-utils/build.gradle b/libs/crypto/crypto-impl-utils/build.gradle new file mode 100644 index 00000000000..41184aa5a7c --- /dev/null +++ b/libs/crypto/crypto-impl-utils/build.gradle @@ -0,0 +1,40 @@ +plugins { + id 'corda.common-publishing' + id 'corda.common-library' +} + +description 'Common crypto implementation' + +dependencies { + implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' + implementation platform("net.corda:corda-api:$cordaApiVersion") + implementation "net.corda:corda-crypto" + implementation project(':libs:crypto:cipher-suite') + + implementation project(':libs:layered-property-map') + implementation project(":libs:metrics") + + implementation "net.corda:corda-avro-schema" + + testImplementation project(':libs:utilities') +} + +tasks.named('jar', Jar) { + bundle { + bnd """\ +Import-Package:\ + org.bouncycastle.jcajce.provider.config,\ + org.bouncycastle.jcajce.provider.digest,\ + org.bouncycastle.jcajce.provider.drbg,\ + org.bouncycastle.jcajce.provider.keystore,\ + org.bouncycastle.jcajce.provider.keystore.bc,\ + org.bouncycastle.jcajce.provider.keystore.bcfks,\ + org.bouncycastle.jcajce.provider.keystore.pkcs12,\ + org.bouncycastle.jcajce.provider.keystore.util,\ + org.bouncycastle.jcajce.provider.symmetric,\ + org.bouncycastle.jcajce.provider.symmetric.util,\ + org.bouncycastle.jcajce.provider.util,\ + * +""" + } +} diff --git a/libs/crypto/crypto-impl-utils/src/main/java/net/corda/crypto/impl/utils/package-info.java b/libs/crypto/crypto-impl-utils/src/main/java/net/corda/crypto/impl/utils/package-info.java new file mode 100644 index 00000000000..57e823b96ba --- /dev/null +++ b/libs/crypto/crypto-impl-utils/src/main/java/net/corda/crypto/impl/utils/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.crypto.impl.utils; + +import org.osgi.annotation.bundle.Export; \ No newline at end of file diff --git a/libs/crypto/crypto-impl/src/main/kotlin/net/corda/crypto/impl/WireUtils.kt b/libs/crypto/crypto-impl-utils/src/main/kotlin/net/corda/crypto/impl/utils/WireUtils.kt similarity index 98% rename from libs/crypto/crypto-impl/src/main/kotlin/net/corda/crypto/impl/WireUtils.kt rename to libs/crypto/crypto-impl-utils/src/main/kotlin/net/corda/crypto/impl/utils/WireUtils.kt index 1e26c0601a7..efc03a47c5c 100644 --- a/libs/crypto/crypto-impl/src/main/kotlin/net/corda/crypto/impl/WireUtils.kt +++ b/libs/crypto/crypto-impl-utils/src/main/kotlin/net/corda/crypto/impl/utils/WireUtils.kt @@ -1,6 +1,6 @@ @file:JvmName("WireUtils") -package net.corda.crypto.impl +package net.corda.crypto.impl.utils import net.corda.crypto.cipher.suite.AlgorithmParameterSpecEncodingService import net.corda.crypto.cipher.suite.CustomSignatureSpec @@ -19,6 +19,7 @@ import java.nio.ByteBuffer import java.security.spec.AlgorithmParameterSpec import java.time.Duration import java.time.Instant +import java.util.Collections.emptyList val emptyKeyValuePairList = KeyValuePairList(emptyList()) diff --git a/libs/crypto/crypto-impl/src/test/kotlin/net/corda/crypto/impl/WireUtilsTests.kt b/libs/crypto/crypto-impl-utils/src/test/kotlin/net/corda/crypto/impl/utils/WireUtilsTests.kt similarity index 99% rename from libs/crypto/crypto-impl/src/test/kotlin/net/corda/crypto/impl/WireUtilsTests.kt rename to libs/crypto/crypto-impl-utils/src/test/kotlin/net/corda/crypto/impl/utils/WireUtilsTests.kt index 515c28f0836..5e3b29f2c7e 100644 --- a/libs/crypto/crypto-impl/src/test/kotlin/net/corda/crypto/impl/WireUtilsTests.kt +++ b/libs/crypto/crypto-impl-utils/src/test/kotlin/net/corda/crypto/impl/utils/WireUtilsTests.kt @@ -1,4 +1,4 @@ -package net.corda.crypto.impl +package net.corda.crypto.impl.utils import net.corda.crypto.cipher.suite.AlgorithmParameterSpecEncodingService import net.corda.crypto.cipher.suite.CustomSignatureSpec diff --git a/libs/crypto/crypto-impl/build.gradle b/libs/crypto/crypto-impl/build.gradle index cb3ce680293..5482536de6a 100644 --- a/libs/crypto/crypto-impl/build.gradle +++ b/libs/crypto/crypto-impl/build.gradle @@ -19,7 +19,6 @@ dependencies { implementation project(":libs:utilities") implementation 'net.corda:corda-application' - implementation "net.corda:corda-avro-schema" implementation "net.corda:corda-config-schema" implementation "net.corda:corda-serialization" implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' diff --git a/libs/flows/flow-api/build.gradle b/libs/flows/flow-api/build.gradle index d92dc040251..5d24c535775 100644 --- a/libs/flows/flow-api/build.gradle +++ b/libs/flows/flow-api/build.gradle @@ -5,11 +5,7 @@ plugins { dependencies { compileOnly 'org.osgi:org.osgi.service.component.annotations' - implementation platform("net.corda:corda-api:$cordaApiVersion") implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' - implementation "net.corda:corda-application" - implementation "net.corda:corda-base" - implementation "net.corda:corda-avro-schema" implementation project(":libs:sandbox") implementation project(":libs:sandbox-types") compileOnly 'org.osgi:osgi.core' @@ -22,7 +18,6 @@ dependencies { implementation project(":libs:messaging:messaging") implementation project(":libs:metrics") implementation project(":libs:serialization:serialization-checkpoint-api") - implementation project(':libs:virtual-node:virtual-node-info') } description 'Flow API Library' diff --git a/libs/flows/flow-api/src/main/java/net/corda/flow/external/events/package-info.java b/libs/flows/flow-api/src/main/java/net/corda/flow/external/events/package-info.java new file mode 100644 index 00000000000..93c4800642b --- /dev/null +++ b/libs/flows/flow-api/src/main/java/net/corda/flow/external/events/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.flow.external.events; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/flows/flow-api/src/main/kotlin/net/corda/flow/external/events/ExternalEventContext.kt b/libs/flows/flow-api/src/main/kotlin/net/corda/flow/external/events/ExternalEventContext.kt new file mode 100644 index 00000000000..c1e3712137a --- /dev/null +++ b/libs/flows/flow-api/src/main/kotlin/net/corda/flow/external/events/ExternalEventContext.kt @@ -0,0 +1,7 @@ +package net.corda.flow.external.events + +data class ExternalEventContext( + val requestId: String, + val flowId: String, + val parameters: Map +) diff --git a/libs/flows/flow-api/src/main/kotlin/net/corda/flow/external/events/factory/ExternalEventFactory.kt b/libs/flows/flow-api/src/main/kotlin/net/corda/flow/external/events/factory/ExternalEventFactory.kt index d4e1f66217c..26bbe044703 100644 --- a/libs/flows/flow-api/src/main/kotlin/net/corda/flow/external/events/factory/ExternalEventFactory.kt +++ b/libs/flows/flow-api/src/main/kotlin/net/corda/flow/external/events/factory/ExternalEventFactory.kt @@ -1,6 +1,6 @@ package net.corda.flow.external.events.factory -import net.corda.data.flow.event.external.ExternalEventContext +import net.corda.flow.external.events.ExternalEventContext import net.corda.flow.external.events.executor.ExternalEventExecutor import net.corda.flow.state.FlowCheckpoint @@ -63,4 +63,4 @@ interface ExternalEventFactory { * @return A [RESUME] to resume the flow with. */ fun resumeWith(checkpoint: FlowCheckpoint, response: RESPONSE): RESUME -} \ No newline at end of file +} diff --git a/libs/flows/flow-utils/build.gradle b/libs/flows/flow-utils/build.gradle index cb0c846969f..ce6335000aa 100644 --- a/libs/flows/flow-utils/build.gradle +++ b/libs/flows/flow-utils/build.gradle @@ -9,6 +9,7 @@ dependencies { implementation platform("net.corda:corda-api:$cordaApiVersion") implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' implementation "net.corda:corda-base" + implementation project(':libs:flows:flow-api') api "net.corda:corda-avro-schema" } diff --git a/libs/flows/flow-utils/src/main/kotlin/net/corda/flow/utils/ExternalEventExtensions.kt b/libs/flows/flow-utils/src/main/kotlin/net/corda/flow/utils/ExternalEventExtensions.kt new file mode 100644 index 00000000000..4e7f20b7cd0 --- /dev/null +++ b/libs/flows/flow-utils/src/main/kotlin/net/corda/flow/utils/ExternalEventExtensions.kt @@ -0,0 +1,11 @@ +package net.corda.flow.utils + +import net.corda.flow.external.events.ExternalEventContext +import net.corda.data.flow.event.external.ExternalEventContext as AvroExternalEventContext + +fun ExternalEventContext.toAvro() = AvroExternalEventContext.newBuilder() + .setFlowId(this.flowId) + .setRequestId(this.requestId) + .setContextProperties( + keyValuePairListOf(this.parameters) + ).build() diff --git a/libs/layered-property-map-avro/build.gradle b/libs/layered-property-map-avro/build.gradle new file mode 100644 index 00000000000..c2a55a83d6e --- /dev/null +++ b/libs/layered-property-map-avro/build.gradle @@ -0,0 +1,19 @@ +plugins { + id 'corda.common-publishing' + id 'corda.common-library' +} + +description 'Layered property map avro' + +ext.cordaEnableFormatting = true + +dependencies { + compileOnly "org.osgi:osgi.annotation" + + implementation platform("net.corda:corda-api:$cordaApiVersion") + implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' + implementation "net.corda:corda-avro-schema" + implementation "net.corda:corda-base" + testImplementation project(':libs:crypto:crypto-core') + testImplementation project(':libs:layered-property-map') +} \ No newline at end of file diff --git a/libs/layered-property-map-avro/src/main/java/net/corda/layeredpropertymap/avro/package-info.java b/libs/layered-property-map-avro/src/main/java/net/corda/layeredpropertymap/avro/package-info.java new file mode 100644 index 00000000000..0bcc027fe56 --- /dev/null +++ b/libs/layered-property-map-avro/src/main/java/net/corda/layeredpropertymap/avro/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.layeredpropertymap.avro; + +import org.osgi.annotation.bundle.Export; \ No newline at end of file diff --git a/libs/layered-property-map/src/main/kotlin/net/corda/layeredpropertymap/LayeredPropertyMapUtils.kt b/libs/layered-property-map-avro/src/main/kotlin/net/corda/layeredpropertymap/avro/LayeredPropertyMapUtils.kt similarity index 89% rename from libs/layered-property-map/src/main/kotlin/net/corda/layeredpropertymap/LayeredPropertyMapUtils.kt rename to libs/layered-property-map-avro/src/main/kotlin/net/corda/layeredpropertymap/avro/LayeredPropertyMapUtils.kt index b7ab1baac55..60b79448404 100644 --- a/libs/layered-property-map/src/main/kotlin/net/corda/layeredpropertymap/LayeredPropertyMapUtils.kt +++ b/libs/layered-property-map-avro/src/main/kotlin/net/corda/layeredpropertymap/avro/LayeredPropertyMapUtils.kt @@ -1,4 +1,4 @@ -package net.corda.layeredpropertymap +package net.corda.layeredpropertymap.avro import net.corda.data.KeyValuePair import net.corda.data.KeyValuePairList diff --git a/libs/layered-property-map-avro/src/test/kotlin/net/corda/layeredpropertymap/avro/Dummies.kt b/libs/layered-property-map-avro/src/test/kotlin/net/corda/layeredpropertymap/avro/Dummies.kt new file mode 100644 index 00000000000..c35dbaa563f --- /dev/null +++ b/libs/layered-property-map-avro/src/test/kotlin/net/corda/layeredpropertymap/avro/Dummies.kt @@ -0,0 +1,46 @@ +package net.corda.layeredpropertymap.avro + +import net.corda.layeredpropertymap.ConversionContext +import net.corda.layeredpropertymap.CustomPropertyConverter +import kotlin.test.assertFalse +import kotlin.test.assertTrue + +data class DummyObjectWithNumberAndText(val number: Int, val text: String) + +class DummyConverter : CustomPropertyConverter { + override val type: Class + get() = DummyObjectWithNumberAndText::class.java + + override fun convert(context: ConversionContext): DummyObjectWithNumberAndText { + return DummyObjectWithNumberAndText( + context.value("number")?.toInt() ?: throw NullPointerException(), + context.value("text") ?: throw NullPointerException() + ) + } +} + +data class DummyEndpointInfo(val url: String, val protocolVersion: Int) + +class DummyEndpointInfoConverter : CustomPropertyConverter { + companion object { + private const val URL_KEY = "url" + private const val PROTOCOL_VERSION_KEY = "protocolVersion" + } + + override val type: Class + get() = DummyEndpointInfo::class.java + + override fun convert(context: ConversionContext): DummyEndpointInfo { + if (context.key.isEmpty()) { + assertTrue(context.isListItem) + } else { + assertFalse(context.isListItem) + } + return DummyEndpointInfo( + context.value(URL_KEY) + ?: throw IllegalArgumentException("$URL_KEY cannot be null."), + context.value(PROTOCOL_VERSION_KEY)?.toInt() + ?: throw IllegalArgumentException("$PROTOCOL_VERSION_KEY cannot be null.") + ) + } +} diff --git a/libs/layered-property-map/src/test/kotlin/net/corda/layeredpropertymap/LayeredPropertyMapUtilsTests.kt b/libs/layered-property-map-avro/src/test/kotlin/net/corda/layeredpropertymap/avro/LayeredPropertyMapUtilsTests.kt similarity index 97% rename from libs/layered-property-map/src/test/kotlin/net/corda/layeredpropertymap/LayeredPropertyMapUtilsTests.kt rename to libs/layered-property-map-avro/src/test/kotlin/net/corda/layeredpropertymap/avro/LayeredPropertyMapUtilsTests.kt index 5ad87c27530..357a2f20733 100644 --- a/libs/layered-property-map/src/test/kotlin/net/corda/layeredpropertymap/LayeredPropertyMapUtilsTests.kt +++ b/libs/layered-property-map-avro/src/test/kotlin/net/corda/layeredpropertymap/avro/LayeredPropertyMapUtilsTests.kt @@ -1,4 +1,4 @@ -package net.corda.layeredpropertymap +package net.corda.layeredpropertymap.avro import net.corda.layeredpropertymap.impl.LayeredPropertyMapImpl import net.corda.layeredpropertymap.impl.PropertyConverter diff --git a/libs/layered-property-map/build.gradle b/libs/layered-property-map/build.gradle index 3b6210caaa8..1caebc4f135 100644 --- a/libs/layered-property-map/build.gradle +++ b/libs/layered-property-map/build.gradle @@ -15,7 +15,6 @@ dependencies { api "org.osgi:org.osgi.service.component:$osgiServiceComponentVersion" implementation platform("net.corda:corda-api:$cordaApiVersion") implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' - implementation "net.corda:corda-avro-schema" implementation "net.corda:corda-base" implementation "net.corda:corda-serialization" implementation project(':libs:crypto:cipher-suite') diff --git a/libs/ledger-lib-persistence/src/main/kotlin/net/corda/ledger/libs/persistence/utxo/impl/UtxoPersistenceServiceImpl.kt b/libs/ledger-lib-persistence/src/main/kotlin/net/corda/ledger/libs/persistence/utxo/impl/UtxoPersistenceServiceImpl.kt index 567835159b1..d48a88775dc 100644 --- a/libs/ledger-lib-persistence/src/main/kotlin/net/corda/ledger/libs/persistence/utxo/impl/UtxoPersistenceServiceImpl.kt +++ b/libs/ledger-lib-persistence/src/main/kotlin/net/corda/ledger/libs/persistence/utxo/impl/UtxoPersistenceServiceImpl.kt @@ -18,6 +18,7 @@ import net.corda.ledger.common.data.transaction.filtered.factory.FilteredTransac import net.corda.ledger.common.data.transaction.getComponentGroupMerkleTreeDigestProvider import net.corda.ledger.common.data.transaction.getRootMerkleTreeDigestProvider import net.corda.ledger.libs.persistence.common.InconsistentLedgerStateException +import net.corda.ledger.libs.persistence.json.ContractStateVaultJsonFactoryRegistry import net.corda.ledger.libs.persistence.json.DefaultContractStateVaultJsonFactory import net.corda.ledger.libs.persistence.utxo.CustomRepresentation import net.corda.ledger.libs.persistence.utxo.SignedGroupParameters @@ -64,7 +65,7 @@ class UtxoPersistenceServiceImpl( private val repository: UtxoRepository, private val serializationService: SerializationService, private val sandboxDigestService: DigestService, - private val factoryStorage: net.corda.ledger.libs.persistence.json.ContractStateVaultJsonFactoryRegistry, + private val factoryStorage: ContractStateVaultJsonFactoryRegistry, private val defaultContractStateVaultJsonFactory: DefaultContractStateVaultJsonFactory, private val jsonMarshallingService: JsonMarshallingService, private val jsonValidator: JsonValidator, diff --git a/libs/ledger-lib-utxo-flow/build.gradle b/libs/ledger-lib-utxo-flow/build.gradle new file mode 100644 index 00000000000..b7ed7a80be0 --- /dev/null +++ b/libs/ledger-lib-utxo-flow/build.gradle @@ -0,0 +1,34 @@ + plugins { + id 'corda.common-publishing' + id 'corda.common-library' +} + +description 'Corda Ledger UXTO Flow library' + +ext.cordaEnableFormatting = true + +dependencies { + compileOnly 'org.osgi:osgi.annotation' + + implementation project(':libs:ledger:ledger-common-data') + implementation project(':libs:ledger:ledger-lib-common-flow-api') + implementation project(':libs:ledger:ledger-lib-common-flow') + implementation project(':libs:ledger:ledger-utxo-data') + implementation project(':libs:ledger:ledger-utxo-transaction-verifier') + implementation project(':libs:serialization:json-validator') + implementation project(':libs:serialization:json-validator-lib') + + implementation 'net.corda:corda-ledger-utxo' + implementation 'net.corda:corda-base' + + implementation 'org.jetbrains.kotlin:kotlin-stdlib' + + testImplementation project(':components:ledger:ledger-utxo-flow') + testImplementation project(':testing:test-serialization') + testImplementation project(':testing:kryo-serialization-testkit') + testImplementation project(':libs:serialization:serialization-internal') + testImplementation project(':libs:serialization:serialization-amqp') + testImplementation project(':libs:serialization:serialization-kryo') + testImplementation project(':testing:ledger:ledger-utxo-base-test') + +} diff --git a/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/persistence/package-info.java b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/persistence/package-info.java new file mode 100644 index 00000000000..93eb1fe1024 --- /dev/null +++ b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/persistence/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.lib.utxo.flow.impl.persistence; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/timewindow/package-info.java b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/timewindow/package-info.java new file mode 100644 index 00000000000..d2d7d9d11d9 --- /dev/null +++ b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/timewindow/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.lib.utxo.flow.impl.timewindow; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/package-info.java b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/package-info.java new file mode 100644 index 00000000000..b98eadeaff4 --- /dev/null +++ b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.lib.utxo.flow.impl.transaction.factory.impl; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/package-info.java b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/package-info.java new file mode 100644 index 00000000000..0fb5bcf5fc7 --- /dev/null +++ b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.lib.utxo.flow.impl.transaction.factory; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/package-info.java b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/package-info.java new file mode 100644 index 00000000000..a2a14add6b4 --- /dev/null +++ b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.lib.utxo.flow.impl.transaction; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/package-info.java b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/package-info.java new file mode 100644 index 00000000000..bf54c5862e2 --- /dev/null +++ b/libs/ledger-lib-utxo-flow/src/main/java/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier; + +import org.osgi.annotation.bundle.Export; diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerStateQueryService.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/persistence/UtxoLedgerStateQueryService.kt similarity index 95% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerStateQueryService.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/persistence/UtxoLedgerStateQueryService.kt index 3d971c56f1f..b837477caa0 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/persistence/UtxoLedgerStateQueryService.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/persistence/UtxoLedgerStateQueryService.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.persistence +package net.corda.ledger.lib.utxo.flow.impl.persistence import net.corda.v5.application.persistence.CordaPersistenceException import net.corda.v5.base.annotations.Suspendable diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/timewindow/TimeWindowBetweenImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/timewindow/TimeWindowBetweenImpl.kt similarity index 93% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/timewindow/TimeWindowBetweenImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/timewindow/TimeWindowBetweenImpl.kt index df4d0ee5406..b4f3c151558 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/timewindow/TimeWindowBetweenImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/timewindow/TimeWindowBetweenImpl.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.timewindow +package net.corda.ledger.lib.utxo.flow.impl.timewindow import net.corda.v5.ledger.utxo.TimeWindow import java.time.Instant diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/timewindow/TimeWindowUntilImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/timewindow/TimeWindowUntilImpl.kt similarity index 95% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/timewindow/TimeWindowUntilImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/timewindow/TimeWindowUntilImpl.kt index 03a68764a95..f4f4750c17b 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/timewindow/TimeWindowUntilImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/timewindow/TimeWindowUntilImpl.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.timewindow +package net.corda.ledger.lib.utxo.flow.impl.timewindow import net.corda.v5.ledger.utxo.TimeWindow import java.time.Instant diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/ContractStateAndEncumbranceTag.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/ContractStateAndEncumbranceTag.kt similarity index 94% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/ContractStateAndEncumbranceTag.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/ContractStateAndEncumbranceTag.kt index 7286a247b44..f4a16739288 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/ContractStateAndEncumbranceTag.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/ContractStateAndEncumbranceTag.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.ledger.utxo.data.state.EncumbranceGroupImpl import net.corda.ledger.utxo.data.state.TransactionStateImpl diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedLedgerTransaction.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedLedgerTransaction.kt similarity index 93% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedLedgerTransaction.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedLedgerTransaction.kt index 6af1773093e..2ead3228520 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedLedgerTransaction.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedLedgerTransaction.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal import net.corda.v5.ledger.utxo.transaction.UtxoLedgerTransaction diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionImpl.kt similarity index 97% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionImpl.kt index e7917f81a32..4e82748744c 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionImpl.kt @@ -1,12 +1,12 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.flow.transaction.TransactionMissingSignaturesException import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal import net.corda.ledger.utxo.data.transaction.WrappedUtxoWireTransaction import net.corda.ledger.utxo.data.transaction.verifier.verifyMetadata -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.application.serialization.SerializationService import net.corda.v5.base.annotations.Suspendable diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionInternal.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionInternal.kt similarity index 98% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionInternal.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionInternal.kt index f74363e8c7e..ee86773f3ab 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionInternal.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionInternal.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.ledger.common.data.transaction.SignedTransactionContainer import net.corda.ledger.common.data.transaction.WireTransaction diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderContainer.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderContainer.kt similarity index 93% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderContainer.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderContainer.kt index 8da5c35f644..0ba2c42e86a 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderContainer.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderContainer.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.v5.base.annotations.CordaSerializable import net.corda.v5.base.types.MemberX500Name diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderData.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderData.kt similarity index 93% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderData.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderData.kt index d25a1933916..16c86c80e38 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderData.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderData.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.v5.base.types.MemberX500Name import net.corda.v5.crypto.SecureHash diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImpl.kt similarity index 96% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImpl.kt index b15e3da9389..d1afbf44f64 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImpl.kt @@ -1,9 +1,9 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowBetweenImpl -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowUntilImpl -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoTransactionBuilderVerifier +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowBetweenImpl +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowUntilImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoTransactionBuilderVerifier import net.corda.v5.base.annotations.Suspendable import net.corda.v5.base.types.MemberX500Name import net.corda.v5.ledger.common.NotaryLookup diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderInternal.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderInternal.kt similarity index 93% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderInternal.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderInternal.kt index ce4891532e0..46c01eac60c 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderInternal.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderInternal.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.v5.ledger.utxo.transaction.UtxoTransactionBuilder diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/UtxoLedgerTransactionFactory.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/UtxoLedgerTransactionFactory.kt similarity index 95% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/UtxoLedgerTransactionFactory.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/UtxoLedgerTransactionFactory.kt index 4582cdab3a3..9bc33f5e2b0 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/UtxoLedgerTransactionFactory.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/UtxoLedgerTransactionFactory.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction.factory +package net.corda.ledger.lib.utxo.flow.impl.transaction.factory import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/UtxoSignedTransactionFactory.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/UtxoSignedTransactionFactory.kt similarity index 71% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/UtxoSignedTransactionFactory.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/UtxoSignedTransactionFactory.kt index 6097cae50c3..ed142396ef1 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/UtxoSignedTransactionFactory.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/UtxoSignedTransactionFactory.kt @@ -1,8 +1,8 @@ -package net.corda.ledger.utxo.flow.impl.transaction.factory +package net.corda.ledger.lib.utxo.flow.impl.transaction.factory import net.corda.ledger.common.data.transaction.WireTransaction -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.base.annotations.Suspendable import java.security.PublicKey diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryImpl.kt similarity index 53% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryImpl.kt index 6ca872bddb4..5b9e5aa1f0e 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/UtxoLedgerTransactionFactoryImpl.kt @@ -1,45 +1,24 @@ -package net.corda.ledger.utxo.flow.impl.transaction.factory.impl +package net.corda.ledger.lib.utxo.flow.impl.transaction.factory.impl -import net.corda.crypto.core.parseSecureHash -import net.corda.flow.application.GroupParametersLookupInternal -import net.corda.ledger.common.data.transaction.TransactionMetadataInternal import net.corda.ledger.common.data.transaction.WireTransaction +import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionImpl import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal import net.corda.ledger.utxo.data.transaction.UtxoVisibleTransactionOutputDto import net.corda.ledger.utxo.data.transaction.WrappedUtxoWireTransaction -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerStateQueryService -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.sandbox.type.SandboxConstants.CORDA_SYSTEM_SERVICE -import net.corda.sandbox.type.UsedByFlow import net.corda.v5.application.serialization.SerializationService import net.corda.v5.base.annotations.Suspendable import net.corda.v5.base.exceptions.CordaRuntimeException import net.corda.v5.ledger.utxo.ContractState import net.corda.v5.ledger.utxo.StateAndRef import net.corda.v5.membership.GroupParameters -import net.corda.v5.serialization.SingletonSerializeAsToken -import org.osgi.service.component.annotations.Activate -import org.osgi.service.component.annotations.Component -import org.osgi.service.component.annotations.Reference -import org.osgi.service.component.annotations.ServiceScope.PROTOTYPE -@Component( - service = [UtxoLedgerTransactionFactory::class, UsedByFlow::class], - scope = PROTOTYPE, - property = [CORDA_SYSTEM_SERVICE], -) -class UtxoLedgerTransactionFactoryImpl @Activate constructor( - @Reference(service = SerializationService::class) +class UtxoLedgerTransactionFactoryImpl( private val serializationService: SerializationService, - @Reference(service = UtxoLedgerStateQueryService::class) private val utxoLedgerStateQueryService: UtxoLedgerStateQueryService, - @Reference(service = UtxoLedgerGroupParametersPersistenceService::class) - private val utxoLedgerGroupParametersPersistenceService: UtxoLedgerGroupParametersPersistenceService, - @Reference(service = GroupParametersLookupInternal::class) - private val groupParametersLookup: GroupParametersLookupInternal -) : UtxoLedgerTransactionFactory, UsedByFlow, SingletonSerializeAsToken { + private val getGroupParameters: (wireTransaction: WireTransaction) -> GroupParameters? +) : UtxoLedgerTransactionFactory { @Suspendable override fun create( @@ -97,24 +76,4 @@ class UtxoLedgerTransactionFactoryImpl @Activate constructor( getGroupParameters(wireTransaction) ) } - - private fun getGroupParameters(wireTransaction: WireTransaction): GroupParameters { - val membershipGroupParametersHashString = - requireNotNull((wireTransaction.metadata as TransactionMetadataInternal).getMembershipGroupParametersHash()) { - "Membership group parameters hash cannot be found in the transaction metadata." - } - val currentGroupParameters = groupParametersLookup.currentGroupParameters - val groupParameters = - if (currentGroupParameters.hash.toString() == membershipGroupParametersHashString) { - currentGroupParameters - } else { - val membershipGroupParametersHash = parseSecureHash(membershipGroupParametersHashString) - utxoLedgerGroupParametersPersistenceService.find(membershipGroupParametersHash) - } - requireNotNull(groupParameters) { - "Signed group parameters $membershipGroupParametersHashString related to the transaction " + - "${wireTransaction.id} cannot be accessed." - } - return groupParameters - } } diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryImpl.kt similarity index 63% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryImpl.kt index 1fe00a418bf..2aac9da5da6 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/factory/impl/UtxoSignedTransactionFactoryImpl.kt @@ -1,85 +1,56 @@ -package net.corda.ledger.utxo.flow.impl.transaction.factory.impl +package net.corda.ledger.lib.utxo.flow.impl.transaction.factory.impl -import net.corda.flow.application.GroupParametersLookupInternal import net.corda.ledger.common.data.transaction.TransactionMetadataImpl import net.corda.ledger.common.data.transaction.WireTransaction import net.corda.ledger.common.data.transaction.factory.WireTransactionFactory import net.corda.ledger.common.flow.transaction.PrivacySaltProviderService import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal import net.corda.ledger.common.flow.transaction.factory.TransactionMetadataFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionImpl import net.corda.ledger.utxo.data.transaction.UtxoOutputInfoComponent import net.corda.ledger.utxo.data.transaction.UtxoTransactionMetadata import net.corda.ledger.utxo.data.transaction.utxoComponentGroupStructure import net.corda.ledger.utxo.data.transaction.verifier.verifyMetadata -import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParametersVerifier -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.libs.json.validator.JsonValidator -import net.corda.membership.lib.SignedGroupParameters -import net.corda.sandbox.type.UsedByFlow -import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.application.marshalling.JsonMarshallingService import net.corda.v5.application.serialization.SerializationService import net.corda.v5.base.annotations.Suspendable import net.corda.v5.ledger.common.transaction.TransactionMetadata -import net.corda.v5.serialization.SingletonSerializeAsToken -import org.osgi.service.component.annotations.Activate -import org.osgi.service.component.annotations.Component -import org.osgi.service.component.annotations.Reference -import org.osgi.service.component.annotations.ReferenceScope.PROTOTYPE_REQUIRED -import org.osgi.service.component.annotations.ServiceScope import java.security.PublicKey // TODO impl impl in package name @Suppress("LongParameterList") -@Component(service = [UtxoSignedTransactionFactory::class, UsedByFlow::class], scope = ServiceScope.PROTOTYPE) -class UtxoSignedTransactionFactoryImpl @Activate constructor( - @Reference(service = CurrentSandboxGroupContext::class) - private val currentSandboxGroupContext: CurrentSandboxGroupContext, - @Reference(service = JsonMarshallingService::class, scope = PROTOTYPE_REQUIRED) +class UtxoSignedTransactionFactoryImpl( private val jsonMarshallingService: JsonMarshallingService, - @Reference(service = JsonValidator::class, scope = PROTOTYPE_REQUIRED) private val jsonValidator: JsonValidator, - @Reference(service = SerializationService::class) private val serializationService: SerializationService, - @Reference(service = TransactionSignatureServiceInternal::class) private val transactionSignatureService: TransactionSignatureServiceInternal, - @Reference(service = TransactionMetadataFactory::class) private val transactionMetadataFactory: TransactionMetadataFactory, - @Reference(service = WireTransactionFactory::class) private val wireTransactionFactory: WireTransactionFactory, - @Reference(service = UtxoLedgerTransactionFactory::class) private val utxoLedgerTransactionFactory: UtxoLedgerTransactionFactory, - @Reference(service = UtxoLedgerTransactionVerificationService::class) private val utxoLedgerTransactionVerificationService: UtxoLedgerTransactionVerificationService, - @Reference(service = UtxoLedgerGroupParametersPersistenceService::class) - private val utxoLedgerGroupParametersPersistenceService: UtxoLedgerGroupParametersPersistenceService, - @Reference(service = GroupParametersLookupInternal::class) - private val groupParametersLookup: GroupParametersLookupInternal, - @Reference(service = SignedGroupParametersVerifier::class) - private val signedGroupParametersVerifier: SignedGroupParametersVerifier, - @Reference(service = NotarySignatureVerificationServiceInternal::class) private val notarySignatureVerificationService: NotarySignatureVerificationServiceInternal, - @Reference(service = PrivacySaltProviderService::class) - private val privacySaltProviderService: PrivacySaltProviderService -) : UtxoSignedTransactionFactory, UsedByFlow, SingletonSerializeAsToken { + private val privacySaltProviderService: PrivacySaltProviderService, + private val getEvolvableTag: (klass: Class<*>) -> String, + private val getExtraMetadata: () -> Map +) : UtxoSignedTransactionFactory { @Suspendable override fun create( utxoTransactionBuilder: UtxoTransactionBuilderInternal, signatories: Iterable ): UtxoSignedTransactionInternal { - val utxoMetadata = utxoMetadata() + val utxoMetadata = utxoMetadata() + getExtraMetadata() val metadata = transactionMetadataFactory.create(utxoMetadata) verifyMetadata(metadata) @@ -120,22 +91,13 @@ class UtxoSignedTransactionFactoryImpl @Activate constructor( ) @Suspendable - private fun utxoMetadata() = mapOf( + private fun utxoMetadata() = mapOf( TransactionMetadataImpl.LEDGER_MODEL_KEY to UtxoLedgerTransactionImpl::class.java.name, TransactionMetadataImpl.LEDGER_VERSION_KEY to UtxoTransactionMetadata.LEDGER_VERSION, TransactionMetadataImpl.TRANSACTION_SUBTYPE_KEY to UtxoTransactionMetadata.TransactionSubtype.GENERAL, TransactionMetadataImpl.COMPONENT_GROUPS_KEY to utxoComponentGroupStructure, - TransactionMetadataImpl.MEMBERSHIP_GROUP_PARAMETERS_HASH_KEY to getAndPersistCurrentMgmGroupParameters().hash.toString() ) - @Suspendable - private fun getAndPersistCurrentMgmGroupParameters(): SignedGroupParameters { - val signedGroupParameters = groupParametersLookup.currentGroupParameters - signedGroupParametersVerifier.verifySignature(signedGroupParameters) - utxoLedgerGroupParametersPersistenceService.persistIfDoesNotExist(signedGroupParameters) - return signedGroupParameters - } - private fun serializeMetadata(metadata: TransactionMetadata): ByteArray { return jsonValidator.canonicalize(jsonMarshallingService.format(metadata)).toByteArray() } @@ -145,8 +107,6 @@ class UtxoSignedTransactionFactoryImpl @Activate constructor( utxoTransactionBuilder: UtxoTransactionBuilderInternal, metadataBytes: ByteArray ): List> { - val currentSandboxGroup = currentSandboxGroupContext.get().sandboxGroup - val notaryGroup = listOf( utxoTransactionBuilder.notaryName, utxoTransactionBuilder.notaryKey, @@ -171,13 +131,13 @@ class UtxoSignedTransactionFactoryImpl @Activate constructor( it.encumbranceGroup?.size, utxoTransactionBuilder.notaryName!!, utxoTransactionBuilder.notaryKey!!, - currentSandboxGroup.getEvolvableTag(it.contractStateType), - currentSandboxGroup.getEvolvableTag(it.contractType) + getEvolvableTag(it.contractStateType), + getEvolvableTag(it.contractType) ) } val commandsInfo = utxoTransactionBuilder.commands.map { - listOf(currentSandboxGroup.getEvolvableTag(it.javaClass)) + listOf(getEvolvableTag(it.javaClass)) } return UtxoComponentGroup.values().sorted().map { componentGroupIndex -> diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImpl.kt similarity index 75% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImpl.kt index 703821a2b00..92ca68cb9c0 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImpl.kt @@ -1,8 +1,6 @@ -package net.corda.ledger.utxo.flow.impl.transaction.verifier +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier import net.corda.ledger.common.flow.transaction.TransactionSignatureVerificationServiceInternal -import net.corda.sandbox.type.UsedByFlow -import net.corda.sandbox.type.UsedByVerification import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.crypto.CompositeKey import net.corda.v5.crypto.KeyUtils @@ -10,30 +8,11 @@ import net.corda.v5.crypto.SecureHash import net.corda.v5.ledger.common.transaction.TransactionSignatureException import net.corda.v5.ledger.common.transaction.TransactionWithMetadata import net.corda.v5.ledger.utxo.NotarySignatureVerificationService -import net.corda.v5.serialization.SingletonSerializeAsToken -import org.osgi.service.component.annotations.Activate -import org.osgi.service.component.annotations.Component -import org.osgi.service.component.annotations.Reference -import org.osgi.service.component.annotations.ServiceScope.PROTOTYPE import java.security.PublicKey -@Component( - service = [ - NotarySignatureVerificationService::class, - NotarySignatureVerificationServiceInternal::class, - UsedByFlow::class, - UsedByVerification::class - ], - scope = PROTOTYPE -) -class NotarySignatureVerificationServiceImpl @Activate constructor( - @Reference(service = TransactionSignatureVerificationServiceInternal::class) +class NotarySignatureVerificationServiceImpl( private val transactionSignatureService: TransactionSignatureVerificationServiceInternal -) : NotarySignatureVerificationService, - NotarySignatureVerificationServiceInternal, - UsedByFlow, - UsedByVerification, - SingletonSerializeAsToken { +) : NotarySignatureVerificationService, NotarySignatureVerificationServiceInternal { override fun verifyNotarySignatures( transaction: TransactionWithMetadata, notaryKey: PublicKey, diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceInternal.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceInternal.kt similarity index 88% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceInternal.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceInternal.kt index df7d8d5ae94..b6df836bd35 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceInternal.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceInternal.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction.verifier +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier import net.corda.v5.crypto.SecureHash import net.corda.v5.ledger.utxo.NotarySignatureVerificationService diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationService.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationService.kt similarity index 89% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationService.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationService.kt index aadb279ed19..a721a90f21e 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationService.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoLedgerTransactionVerificationService.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction.verifier +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier import net.corda.v5.base.annotations.Suspendable import net.corda.v5.ledger.utxo.transaction.UtxoLedgerTransaction diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedLedgerTransactionImpl.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoSignedLedgerTransactionImpl.kt similarity index 90% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedLedgerTransactionImpl.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoSignedLedgerTransactionImpl.kt index 487aa4e5499..fd24f608069 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedLedgerTransactionImpl.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoSignedLedgerTransactionImpl.kt @@ -1,5 +1,7 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedLedgerTransaction +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal import net.corda.v5.base.types.MemberX500Name import net.corda.v5.crypto.SecureHash diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionWithDependencies.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoSignedTransactionWithDependencies.kt similarity index 87% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionWithDependencies.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoSignedTransactionWithDependencies.kt index 643846a6bf4..6f6638dd58c 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionWithDependencies.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoSignedTransactionWithDependencies.kt @@ -1,5 +1,6 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.base.annotations.Suspendable import net.corda.v5.ledger.utxo.transaction.filtered.UtxoFilteredTransactionAndSignatures diff --git a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifier.kt b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifier.kt similarity index 93% rename from components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifier.kt rename to libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifier.kt index b8ae7745714..8fde52279dd 100644 --- a/components/ledger/ledger-utxo-flow/src/main/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifier.kt +++ b/libs/ledger-lib-utxo-flow/src/main/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifier.kt @@ -1,6 +1,6 @@ -package net.corda.ledger.utxo.flow.impl.transaction.verifier +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.transaction.verifier.UtxoTransactionVerifier import net.corda.v5.ledger.utxo.transaction.UtxoTransactionBuilder diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionImplTest.kt b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionImplTest.kt similarity index 97% rename from components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionImplTest.kt rename to libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionImplTest.kt index 2b5f8e4c78f..1435eeeeb5a 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoSignedTransactionImplTest.kt +++ b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoSignedTransactionImplTest.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.crypto.impl.CompositeKeyProviderImpl import net.corda.ledger.common.testkit.anotherPublicKeyExample diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImplAppendTest.kt b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImplAppendTest.kt similarity index 98% rename from components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImplAppendTest.kt rename to libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImplAppendTest.kt index da7d9c31a26..15c25d9e8f3 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImplAppendTest.kt +++ b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImplAppendTest.kt @@ -1,9 +1,9 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.testkit.anotherPublicKeyExample import net.corda.ledger.common.testkit.publicKeyExample -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowUntilImpl +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowUntilImpl import net.corda.ledger.utxo.test.UtxoLedgerTest import net.corda.ledger.utxo.testkit.UtxoCommandExample import net.corda.ledger.utxo.testkit.UtxoStateClassExample diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImplTest.kt b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImplTest.kt similarity index 99% rename from components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImplTest.kt rename to libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImplTest.kt index 8474863ce6f..cc655cf72ad 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/UtxoTransactionBuilderImplTest.kt +++ b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/UtxoTransactionBuilderImplTest.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction +package net.corda.ledger.lib.utxo.flow.impl.transaction import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.data.transaction.CordaPackageSummaryImpl diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImplTest.kt b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImplTest.kt similarity index 98% rename from components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImplTest.kt rename to libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImplTest.kt index a2dd65738bb..d24e49a0f02 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImplTest.kt +++ b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/NotarySignatureVerificationServiceImplTest.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.utxo.flow.impl.transaction.verifier +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier import net.corda.crypto.cipher.suite.SignatureSpecImpl import net.corda.crypto.core.DigitalSignatureWithKeyId diff --git a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifierTest.kt b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifierTest.kt similarity index 96% rename from components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifierTest.kt rename to libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifierTest.kt index b749f2c1c4d..4a57e4dd27e 100644 --- a/components/ledger/ledger-utxo-flow/src/test/kotlin/net/corda/ledger/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifierTest.kt +++ b/libs/ledger-lib-utxo-flow/src/test/kotlin/net/corda/ledger/lib/utxo/flow/impl/transaction/verifier/UtxoTransactionBuilderVerifierTest.kt @@ -1,8 +1,8 @@ -package net.corda.ledger.utxo.flow.impl.transaction.verifier +package net.corda.ledger.lib.utxo.flow.impl.transaction.verifier import net.corda.ledger.common.testkit.publicKeyExample -import net.corda.ledger.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.ContractStateAndEncumbranceTag +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal import net.corda.ledger.utxo.testkit.notaryX500Name import net.corda.v5.ledger.utxo.Command import net.corda.v5.ledger.utxo.ContractState diff --git a/libs/ledger/ledger-common-data/build.gradle b/libs/ledger/ledger-common-data/build.gradle index 0e211a71854..32199478747 100644 --- a/libs/ledger/ledger-common-data/build.gradle +++ b/libs/ledger/ledger-common-data/build.gradle @@ -19,7 +19,6 @@ dependencies { implementation libs.jackson.annotations - api project(':libs:base-internal') implementation project(':libs:crypto:crypto-core') implementation project(':libs:sandbox-types') implementation project(':libs:serialization:json-validator-lib') diff --git a/components/ledger/ledger-common-flow/build.gradle b/libs/ledger/ledger-common-flow/build.gradle similarity index 93% rename from components/ledger/ledger-common-flow/build.gradle rename to libs/ledger/ledger-common-flow/build.gradle index 77612449869..c1b0bc924dd 100644 --- a/components/ledger/ledger-common-flow/build.gradle +++ b/libs/ledger/ledger-common-flow/build.gradle @@ -22,11 +22,12 @@ dependencies { implementation 'net.corda:corda-ledger-common' - implementation project(':components:ledger:ledger-common-flow-api') + implementation project(':libs:ledger:ledger-lib-common-flow-api') implementation project(':libs:flows:flow-api') - implementation project(':libs:layered-property-map') implementation project(':libs:ledger:ledger-common-data') + implementation project(':libs:ledger:ledger-lib-common-flow') + implementation project(':libs:ledger:ledger-lib-common-flow-api') implementation project(':libs:serialization:serialization-checkpoint-api') implementation project(':libs:serialization:serialization-internal') implementation project(':libs:crypto:crypto-core') @@ -36,8 +37,6 @@ dependencies { implementation project(':libs:platform-info') implementation project(':libs:virtual-node:sandbox-group-context') - runtimeOnly project(":libs:web:web-impl") - testImplementation project(':libs:membership:membership-common') testImplementation project(':libs:serialization:serialization-kryo') testImplementation project(':testing:kryo-serialization-testkit') diff --git a/components/ledger/ledger-common-flow-api/detekt-baseline.xml b/libs/ledger/ledger-common-flow/detekt-baseline.xml similarity index 100% rename from components/ledger/ledger-common-flow-api/detekt-baseline.xml rename to libs/ledger/ledger-common-flow/detekt-baseline.xml diff --git a/components/ledger/ledger-common-flow/src/integrationTest/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/tests/WireTransactionKryoSerializationTest.kt b/libs/ledger/ledger-common-flow/src/integrationTest/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/tests/WireTransactionKryoSerializationTest.kt similarity index 100% rename from components/ledger/ledger-common-flow/src/integrationTest/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/tests/WireTransactionKryoSerializationTest.kt rename to libs/ledger/ledger-common-flow/src/integrationTest/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/tests/WireTransactionKryoSerializationTest.kt diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.FlowEngine.kt b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.FlowEngine.kt similarity index 100% rename from components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.FlowEngine.kt rename to libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.FlowEngine.kt diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImpl.kt b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImpl.kt similarity index 100% rename from components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImpl.kt rename to libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImpl.kt diff --git a/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureServiceOsgiImpl.kt b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureServiceOsgiImpl.kt new file mode 100644 index 00000000000..1621bcf5c69 --- /dev/null +++ b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureServiceOsgiImpl.kt @@ -0,0 +1,58 @@ +package net.corda.ledger.common.flow.impl.transaction + +import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider +import net.corda.internal.serialization.amqp.api.SerializationServiceInternal +import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal +import net.corda.ledger.common.flow.transaction.TransactionSignatureVerificationServiceInternal +import net.corda.ledger.libs.common.flow.impl.transaction.TransactionSignatureServiceImpl +import net.corda.libs.platform.PlatformInfoProvider +import net.corda.sandbox.type.UsedByFlow +import net.corda.v5.application.crypto.SignatureSpecService +import net.corda.v5.application.crypto.SigningService +import net.corda.v5.application.flows.FlowEngine +import net.corda.v5.ledger.common.transaction.TransactionSignatureService +import net.corda.v5.serialization.SingletonSerializeAsToken +import org.osgi.service.component.annotations.Activate +import org.osgi.service.component.annotations.Component +import org.osgi.service.component.annotations.Reference +import org.osgi.service.component.annotations.ServiceScope + +@Suppress("Unused", "LongParameterList") +@Component( + service = [TransactionSignatureService::class, TransactionSignatureServiceInternal::class, UsedByFlow::class], + scope = ServiceScope.PROTOTYPE +) +class TransactionSignatureServiceOsgiImpl private constructor( + delegate: TransactionSignatureServiceImpl +) : TransactionSignatureService, + TransactionSignatureServiceInternal by delegate, + SingletonSerializeAsToken, + UsedByFlow { + @Activate + constructor( + @Reference(service = SerializationServiceInternal::class) + serializationService: SerializationServiceInternal, + @Reference(service = SigningService::class) + signingService: SigningService, + @Reference(service = SignatureSpecService::class) + signatureSpecService: SignatureSpecService, + @Reference(service = MerkleTreeProvider::class) + merkleTreeProvider: MerkleTreeProvider, + @Reference(service = PlatformInfoProvider::class) + platformInfoProvider: PlatformInfoProvider, + @Reference(service = FlowEngine::class) + flowEngine: FlowEngine, + @Reference(service = TransactionSignatureVerificationServiceInternal::class) + transactionSignatureVerificationServiceInternal: TransactionSignatureVerificationServiceInternal + ) : this( + TransactionSignatureServiceImpl( + serializationService, + signingService, + signatureSpecService, + merkleTreeProvider, + platformInfoProvider, + { flowEngine.getCpiSummary() }, + transactionSignatureVerificationServiceInternal + ) + ) +} diff --git a/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureVerificationOsgiServiceImpl.kt b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureVerificationOsgiServiceImpl.kt new file mode 100644 index 00000000000..864f7d5cc25 --- /dev/null +++ b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureVerificationOsgiServiceImpl.kt @@ -0,0 +1,61 @@ +package net.corda.ledger.common.flow.impl.transaction + +import net.corda.crypto.cipher.suite.KeyEncodingService +import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider +import net.corda.internal.serialization.amqp.api.SerializationServiceInternal +import net.corda.ledger.common.flow.transaction.TransactionSignatureVerificationServiceInternal +import net.corda.ledger.libs.common.flow.impl.transaction.TransactionSignatureVerificationServiceImpl +import net.corda.sandbox.type.UsedByFlow +import net.corda.sandbox.type.UsedByVerification +import net.corda.v5.application.crypto.DigestService +import net.corda.v5.application.crypto.DigitalSignatureVerificationService +import net.corda.v5.application.crypto.SignatureSpecService +import net.corda.v5.ledger.common.transaction.TransactionSignatureVerificationService +import net.corda.v5.serialization.SingletonSerializeAsToken +import org.osgi.service.component.annotations.Activate +import org.osgi.service.component.annotations.Component +import org.osgi.service.component.annotations.Reference +import org.osgi.service.component.annotations.ServiceScope + +@Component( + service = [ + TransactionSignatureVerificationService::class, + TransactionSignatureVerificationServiceInternal::class, + UsedByFlow::class, + UsedByVerification::class + ], + scope = ServiceScope.PROTOTYPE +) +class TransactionSignatureVerificationOsgiServiceImpl private constructor( + delegate: TransactionSignatureVerificationServiceInternal +) : TransactionSignatureVerificationServiceInternal by delegate, + SingletonSerializeAsToken, + UsedByFlow, + UsedByVerification { + + @Suppress("Unused", "LongParameterList") + @Activate + constructor( + @Reference(service = SerializationServiceInternal::class) + serializationService: SerializationServiceInternal, + @Reference(service = DigitalSignatureVerificationService::class) + digitalSignatureVerificationService: DigitalSignatureVerificationService, + @Reference(service = SignatureSpecService::class) + signatureSpecService: SignatureSpecService, + @Reference(service = MerkleTreeProvider::class) + merkleTreeProvider: MerkleTreeProvider, + @Reference(service = DigestService::class) + digestService: DigestService, + @Reference(service = KeyEncodingService::class) + keyEncodingService: KeyEncodingService + ) : this( + TransactionSignatureVerificationServiceImpl( + serializationService, + digitalSignatureVerificationService, + signatureSpecService, + merkleTreeProvider, + digestService, + keyEncodingService + ) + ) +} diff --git a/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/factory/TransactionMetadataFactoryOsgiImpl.kt b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/factory/TransactionMetadataFactoryOsgiImpl.kt new file mode 100644 index 00000000000..4a3a1980705 --- /dev/null +++ b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/factory/TransactionMetadataFactoryOsgiImpl.kt @@ -0,0 +1,55 @@ +package net.corda.ledger.common.flow.impl.transaction.factory + +import net.corda.ledger.common.data.transaction.CordaPackageSummaryImpl +import net.corda.ledger.common.flow.impl.transaction.getCpiSummary +import net.corda.ledger.common.flow.transaction.factory.TransactionMetadataFactory +import net.corda.ledger.libs.common.flow.impl.transaction.factory.TransactionMetadataFactoryImpl +import net.corda.libs.platform.PlatformInfoProvider +import net.corda.sandbox.type.UsedByFlow +import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext +import net.corda.v5.application.flows.FlowEngine +import net.corda.v5.serialization.SingletonSerializeAsToken +import org.osgi.service.component.annotations.Activate +import org.osgi.service.component.annotations.Component +import org.osgi.service.component.annotations.Reference +import org.osgi.service.component.annotations.ServiceScope + +@Component( + service = [TransactionMetadataFactory::class, UsedByFlow::class], + scope = ServiceScope.PROTOTYPE +) +class TransactionMetadataFactoryOsgiImpl( + delegate: TransactionMetadataFactory +) : TransactionMetadataFactory by delegate, UsedByFlow, SingletonSerializeAsToken { + + @Activate + constructor( + @Reference(service = CurrentSandboxGroupContext::class) + currentSandboxGroupContext: CurrentSandboxGroupContext, + @Reference(service = PlatformInfoProvider::class) + platformInfoProvider: PlatformInfoProvider, + @Reference(service = FlowEngine::class) + flowEngine: FlowEngine + ) : this( + TransactionMetadataFactoryImpl( + platformInfoProvider, + { + currentSandboxGroupContext + .get() + .sandboxGroup + .metadata + .values + .filter { it.isContractCpk() } + .map { cpk -> + CordaPackageSummaryImpl( + name = cpk.cpkId.name, + version = cpk.cpkId.version, + signerSummaryHash = cpk.cpkId.signerSummaryHash.toString(), + fileChecksum = cpk.fileChecksum.toString() + ) + } + }, + { flowEngine.getCpiSummary() } + ) + ) +} diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializer.kt b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializer.kt similarity index 96% rename from components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializer.kt rename to libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializer.kt index 9256b46cc69..2d0cdecafb2 100644 --- a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializer.kt +++ b/libs/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializer.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.common.flow.impl.transaction.serializer.kryo +package net.corda.ledger.libs.common.flow.impl.transaction.kryo import net.corda.ledger.common.data.transaction.PrivacySalt import net.corda.ledger.common.data.transaction.WireTransaction diff --git a/components/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImplTest.kt b/libs/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImplTest.kt similarity index 100% rename from components/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImplTest.kt rename to libs/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/PrivacySaltProviderServiceImplTest.kt diff --git a/components/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializerTest.kt b/libs/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializerTest.kt similarity index 100% rename from components/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializerTest.kt rename to libs/ledger/ledger-common-flow/src/test/kotlin/net/corda/ledger/common/flow/impl/transaction/serializer/kryo/WireTransactionKryoSerializerTest.kt diff --git a/components/ledger/ledger-common-flow/test.bndrun b/libs/ledger/ledger-common-flow/test.bndrun similarity index 100% rename from components/ledger/ledger-common-flow/test.bndrun rename to libs/ledger/ledger-common-flow/test.bndrun diff --git a/components/ledger/ledger-common-flow-api/build.gradle b/libs/ledger/ledger-lib-common-flow-api/build.gradle similarity index 100% rename from components/ledger/ledger-common-flow-api/build.gradle rename to libs/ledger/ledger-lib-common-flow-api/build.gradle diff --git a/components/ledger/ledger-common-flow/detekt-baseline.xml b/libs/ledger/ledger-lib-common-flow-api/detekt-baseline.xml similarity index 100% rename from components/ledger/ledger-common-flow/detekt-baseline.xml rename to libs/ledger/ledger-lib-common-flow-api/detekt-baseline.xml diff --git a/components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/flows/package-info.java b/libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/flows/package-info.java similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/flows/package-info.java rename to libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/flows/package-info.java diff --git a/components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/factory/package-info.java b/libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/factory/package-info.java similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/factory/package-info.java rename to libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/factory/package-info.java diff --git a/components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/factory/package-info.java b/libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/factory/package-info.java similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/factory/package-info.java rename to libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/factory/package-info.java diff --git a/components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/package-info.java b/libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/package-info.java similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/package-info.java rename to libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/filtered/package-info.java diff --git a/components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/package-info.java b/libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/package-info.java similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/package-info.java rename to libs/ledger/ledger-lib-common-flow-api/src/main/java/net/corda/ledger/common/flow/transaction/package-info.java diff --git a/components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/flows/Payload.kt b/libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/flows/Payload.kt similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/flows/Payload.kt rename to libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/flows/Payload.kt diff --git a/components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/PrivacySaltProviderService.kt b/libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/PrivacySaltProviderService.kt similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/PrivacySaltProviderService.kt rename to libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/PrivacySaltProviderService.kt diff --git a/components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionMissingSignaturesException.kt b/libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionMissingSignaturesException.kt similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionMissingSignaturesException.kt rename to libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionMissingSignaturesException.kt diff --git a/components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureServiceInternal.kt b/libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureServiceInternal.kt similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureServiceInternal.kt rename to libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureServiceInternal.kt diff --git a/components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureVerificationServiceInternal.kt b/libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureVerificationServiceInternal.kt similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureVerificationServiceInternal.kt rename to libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/TransactionSignatureVerificationServiceInternal.kt diff --git a/components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/factory/TransactionMetadataFactory.kt b/libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/factory/TransactionMetadataFactory.kt similarity index 100% rename from components/ledger/ledger-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/factory/TransactionMetadataFactory.kt rename to libs/ledger/ledger-lib-common-flow-api/src/main/kotlin/net/corda/ledger/common/flow/transaction/factory/TransactionMetadataFactory.kt diff --git a/components/ledger/ledger-common-flow-api/src/test/kotlin/net/corda/ledger/common/flow/flows/PayloadTest.kt b/libs/ledger/ledger-lib-common-flow-api/src/test/kotlin/net/corda/ledger/common/flow/flows/PayloadTest.kt similarity index 100% rename from components/ledger/ledger-common-flow-api/src/test/kotlin/net/corda/ledger/common/flow/flows/PayloadTest.kt rename to libs/ledger/ledger-lib-common-flow-api/src/test/kotlin/net/corda/ledger/common/flow/flows/PayloadTest.kt diff --git a/libs/ledger/ledger-lib-common-flow/build.gradle b/libs/ledger/ledger-lib-common-flow/build.gradle new file mode 100644 index 00000000000..2ec71ea5d92 --- /dev/null +++ b/libs/ledger/ledger-lib-common-flow/build.gradle @@ -0,0 +1,50 @@ +import aQute.bnd.gradle.Bundle + +plugins { + id 'corda.common-publishing' + id 'corda.common-library' +} + +description 'Corda ledger common - flow implementation' + +configurations { + cpis { + canBeConsumed = false + transitive = false + } +} + +ext.cordaEnableFormatting = true + +dependencies { + compileOnly 'org.osgi:osgi.annotation' + + + implementation project(':libs:ledger:ledger-lib-common-flow-api') + + implementation project(':libs:ledger:ledger-common-data') + implementation project(':libs:crypto:crypto-core') + implementation project(':libs:serialization:serialization-amqp-api') + implementation project(':libs:sandbox-types') + implementation project(':libs:platform-info') + + testImplementation project(':libs:membership:membership-common') + testImplementation project(':libs:serialization:serialization-kryo') + testImplementation project(':testing:kryo-serialization-testkit') + testImplementation project(':testing:layered-property-map-testkit') + testImplementation project(':testing:ledger:ledger-common-base-test') + testImplementation project(':testing:test-serialization') + + integrationTestImplementation project(':testing:ledger:ledger-common-base-integration-test') + integrationTestImplementation project(':testing:group-policy-test-common') + + integrationTestRuntimeOnly project(':libs:lifecycle:lifecycle-impl') + integrationTestRuntimeOnly project(':libs:messaging:db-message-bus-impl') + integrationTestRuntimeOnly project(':libs:messaging:messaging-impl') + integrationTestRuntimeOnly project(':libs:flows:session-manager-impl') + integrationTestRuntimeOnly project(':libs:state-manager:state-manager-db-impl') + integrationTestRuntimeOnly "org.apache.aries.spifly:org.apache.aries.spifly.dynamic.framework.extension:$ariesDynamicFrameworkExtensionVersion" + integrationTestRuntimeOnly project(':testing:slf4jv1') + + cpis project(path: ':testing:ledger:ledger-common-empty-app', configuration: 'cordaCPB') +} diff --git a/libs/ledger/ledger-lib-common-flow/detekt-baseline.xml b/libs/ledger/ledger-lib-common-flow/detekt-baseline.xml new file mode 100644 index 00000000000..f1988f936ea --- /dev/null +++ b/libs/ledger/ledger-lib-common-flow/detekt-baseline.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/libs/ledger/ledger-lib-common-flow/src/main/java/net/corda/ledger/libs/common/flow/impl/transaction/factory/package-info.java b/libs/ledger/ledger-lib-common-flow/src/main/java/net/corda/ledger/libs/common/flow/impl/transaction/factory/package-info.java new file mode 100644 index 00000000000..98b3aa3ec5d --- /dev/null +++ b/libs/ledger/ledger-lib-common-flow/src/main/java/net/corda/ledger/libs/common/flow/impl/transaction/factory/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.libs.common.flow.impl.transaction.factory; + +import org.osgi.annotation.bundle.Export; diff --git a/libs/ledger/ledger-lib-common-flow/src/main/java/net/corda/ledger/libs/common/flow/impl/transaction/package-info.java b/libs/ledger/ledger-lib-common-flow/src/main/java/net/corda/ledger/libs/common/flow/impl/transaction/package-info.java new file mode 100644 index 00000000000..aab37c598c0 --- /dev/null +++ b/libs/ledger/ledger-lib-common-flow/src/main/java/net/corda/ledger/libs/common/flow/impl/transaction/package-info.java @@ -0,0 +1,4 @@ +@Export +package net.corda.ledger.libs.common.flow.impl.transaction; + +import org.osgi.annotation.bundle.Export; diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.DigitalSignatureAndMetadata.kt b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/Extensions.DigitalSignatureAndMetadata.kt similarity index 97% rename from components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.DigitalSignatureAndMetadata.kt rename to libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/Extensions.DigitalSignatureAndMetadata.kt index bf0ea8a9a18..f9a574ad009 100644 --- a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.DigitalSignatureAndMetadata.kt +++ b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/Extensions.DigitalSignatureAndMetadata.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.common.flow.impl.transaction +package net.corda.ledger.libs.common.flow.impl.transaction import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider import net.corda.v5.application.crypto.DigitalSignatureAndMetadata diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.TransactionWithMetadata.kt b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/Extensions.TransactionWithMetadata.kt similarity index 99% rename from components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.TransactionWithMetadata.kt rename to libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/Extensions.TransactionWithMetadata.kt index a85918052ed..60d24f0989f 100644 --- a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/Extensions.TransactionWithMetadata.kt +++ b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/Extensions.TransactionWithMetadata.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.common.flow.impl.transaction +package net.corda.ledger.libs.common.flow.impl.transaction import net.corda.ledger.common.data.transaction.BATCH_MERKLE_TREE_DIGEST_OPTIONS_LEAF_PREFIX_B64_KEY import net.corda.ledger.common.data.transaction.BATCH_MERKLE_TREE_DIGEST_OPTIONS_NODE_PREFIX_B64_KEY diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureServiceImpl.kt b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/TransactionSignatureServiceImpl.kt similarity index 81% rename from components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureServiceImpl.kt rename to libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/TransactionSignatureServiceImpl.kt index d4384b16325..86fee849e59 100644 --- a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureServiceImpl.kt +++ b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/TransactionSignatureServiceImpl.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.common.flow.impl.transaction +package net.corda.ledger.libs.common.flow.impl.transaction import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider import net.corda.crypto.core.bytes @@ -8,51 +8,31 @@ import net.corda.ledger.common.data.transaction.getBatchMerkleTreeDigestProvider import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal import net.corda.ledger.common.flow.transaction.TransactionSignatureVerificationServiceInternal import net.corda.libs.platform.PlatformInfoProvider -import net.corda.sandbox.type.UsedByFlow import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.application.crypto.DigitalSignatureMetadata import net.corda.v5.application.crypto.SignatureSpecService import net.corda.v5.application.crypto.SigningService -import net.corda.v5.application.flows.FlowEngine import net.corda.v5.base.annotations.Suspendable import net.corda.v5.crypto.SignatureSpec +import net.corda.v5.ledger.common.transaction.CordaPackageSummary import net.corda.v5.ledger.common.transaction.TransactionNoAvailableKeysException import net.corda.v5.ledger.common.transaction.TransactionSignatureService import net.corda.v5.ledger.common.transaction.TransactionWithMetadata -import net.corda.v5.serialization.SingletonSerializeAsToken -import org.osgi.service.component.annotations.Activate -import org.osgi.service.component.annotations.Component -import org.osgi.service.component.annotations.Reference -import org.osgi.service.component.annotations.ServiceScope import java.security.PublicKey import java.time.Instant -@Suppress("Unused", "LongParameterList") -@Component( - service = [TransactionSignatureService::class, TransactionSignatureServiceInternal::class, UsedByFlow::class], - scope = ServiceScope.PROTOTYPE -) -class TransactionSignatureServiceImpl @Activate constructor( - @Reference(service = SerializationServiceInternal::class) +@Suppress("LongParameterList") +class TransactionSignatureServiceImpl( private val serializationService: SerializationServiceInternal, - @Reference(service = SigningService::class) private val signingService: SigningService, - @Reference(service = SignatureSpecService::class) private val signatureSpecService: SignatureSpecService, - @Reference(service = MerkleTreeProvider::class) private val merkleTreeProvider: MerkleTreeProvider, - @Reference(service = PlatformInfoProvider::class) private val platformInfoProvider: PlatformInfoProvider, - @Reference(service = FlowEngine::class) - private val flowEngine: FlowEngine, - @Reference(service = TransactionSignatureVerificationServiceInternal::class) + private val getCpiSummary: () -> CordaPackageSummary, private val transactionSignatureVerificationServiceInternal: TransactionSignatureVerificationServiceInternal ) : TransactionSignatureService, TransactionSignatureServiceInternal, - SingletonSerializeAsToken, - UsedByFlow, TransactionSignatureVerificationServiceInternal by transactionSignatureVerificationServiceInternal { - @Suspendable override fun sign( transaction: TransactionWithMetadata, @@ -124,7 +104,7 @@ class TransactionSignatureServiceImpl @Activate constructor( signatureSpec: SignatureSpec, batchSettings: Map = emptyMap() ): DigitalSignatureMetadata { - val cpiSummary = flowEngine.getCpiSummary() + val cpiSummary = getCpiSummary() return DigitalSignatureMetadata( Instant.now(), signatureSpec, diff --git a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureVerificationServiceImpl.kt b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/TransactionSignatureVerificationServiceImpl.kt similarity index 74% rename from components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureVerificationServiceImpl.kt rename to libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/TransactionSignatureVerificationServiceImpl.kt index daa88996f28..28ddfc857b3 100644 --- a/components/ledger/ledger-common-flow/src/main/kotlin/net/corda/ledger/common/flow/impl/transaction/TransactionSignatureVerificationServiceImpl.kt +++ b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/TransactionSignatureVerificationServiceImpl.kt @@ -1,4 +1,4 @@ -package net.corda.ledger.common.flow.impl.transaction +package net.corda.ledger.libs.common.flow.impl.transaction import net.corda.crypto.cipher.suite.KeyEncodingService import net.corda.crypto.cipher.suite.merkle.MerkleTreeProvider @@ -6,8 +6,6 @@ import net.corda.crypto.core.bytes import net.corda.internal.serialization.amqp.api.SerializationServiceInternal import net.corda.ledger.common.data.transaction.SignableData import net.corda.ledger.common.flow.transaction.TransactionSignatureVerificationServiceInternal -import net.corda.sandbox.type.UsedByFlow -import net.corda.sandbox.type.UsedByVerification import net.corda.v5.application.crypto.DigestService import net.corda.v5.application.crypto.DigitalSignatureAndMetadata import net.corda.v5.application.crypto.DigitalSignatureVerificationService @@ -15,43 +13,18 @@ import net.corda.v5.application.crypto.SignatureSpecService import net.corda.v5.crypto.DigestAlgorithmName import net.corda.v5.crypto.SecureHash import net.corda.v5.crypto.SignatureSpec -import net.corda.v5.ledger.common.transaction.TransactionSignatureVerificationService import net.corda.v5.ledger.common.transaction.TransactionWithMetadata -import net.corda.v5.serialization.SingletonSerializeAsToken -import org.osgi.service.component.annotations.Activate -import org.osgi.service.component.annotations.Component -import org.osgi.service.component.annotations.Reference -import org.osgi.service.component.annotations.ServiceScope import java.security.PublicKey -@Suppress("Unused", "LongParameterList") -@Component( - service = [ - TransactionSignatureVerificationService::class, - TransactionSignatureVerificationServiceInternal::class, - UsedByFlow::class, - UsedByVerification::class - ], - scope = ServiceScope.PROTOTYPE -) -class TransactionSignatureVerificationServiceImpl @Activate constructor( - @Reference(service = SerializationServiceInternal::class) +@Suppress("LongParameterList") +class TransactionSignatureVerificationServiceImpl constructor( private val serializationService: SerializationServiceInternal, - @Reference(service = DigitalSignatureVerificationService::class) private val digitalSignatureVerificationService: DigitalSignatureVerificationService, - @Reference(service = SignatureSpecService::class) private val signatureSpecService: SignatureSpecService, - @Reference(service = MerkleTreeProvider::class) private val merkleTreeProvider: MerkleTreeProvider, - @Reference(service = DigestService::class) private val digestService: DigestService, - @Reference(service = KeyEncodingService::class) private val keyEncodingService: KeyEncodingService -) : TransactionSignatureVerificationService, - TransactionSignatureVerificationServiceInternal, - SingletonSerializeAsToken, - UsedByFlow, - UsedByVerification { +) : TransactionSignatureVerificationServiceInternal { override fun verifySignature( transaction: TransactionWithMetadata, diff --git a/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/factory/TransactionMetadataFactoryImpl.kt b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/factory/TransactionMetadataFactoryImpl.kt new file mode 100644 index 00000000000..32631a3bd27 --- /dev/null +++ b/libs/ledger/ledger-lib-common-flow/src/main/kotlin/net/corda/ledger/libs/common/flow/impl/transaction/factory/TransactionMetadataFactoryImpl.kt @@ -0,0 +1,25 @@ +package net.corda.ledger.libs.common.flow.impl.transaction.factory + +import net.corda.ledger.common.data.transaction.TransactionMetadataImpl +import net.corda.ledger.common.data.transaction.WireTransactionDigestSettings +import net.corda.ledger.common.flow.transaction.factory.TransactionMetadataFactory +import net.corda.libs.platform.PlatformInfoProvider +import net.corda.v5.ledger.common.transaction.CordaPackageSummary +import net.corda.v5.ledger.common.transaction.TransactionMetadata + +class TransactionMetadataFactoryImpl( + private val platformInfoProvider: PlatformInfoProvider, + private val getCpkSummaries: () -> List, + private val getCpiSummary: () -> CordaPackageSummary +) : TransactionMetadataFactory { + override fun create(ledgerSpecificMetadata: Map): TransactionMetadata { + val metadata = mapOf( + TransactionMetadataImpl.DIGEST_SETTINGS_KEY to WireTransactionDigestSettings.defaultValues, + TransactionMetadataImpl.PLATFORM_VERSION_KEY to platformInfoProvider.activePlatformVersion, + TransactionMetadataImpl.CPI_METADATA_KEY to getCpiSummary(), + TransactionMetadataImpl.CPK_METADATA_KEY to getCpkSummaries(), + TransactionMetadataImpl.SCHEMA_VERSION_KEY to TransactionMetadataImpl.SCHEMA_VERSION + ) + return TransactionMetadataImpl(metadata + ledgerSpecificMetadata) + } +} diff --git a/libs/ledger/ledger-utxo-transaction-verifier/build.gradle b/libs/ledger/ledger-utxo-transaction-verifier/build.gradle index f9695f2b175..e1549c31bef 100644 --- a/libs/ledger/ledger-utxo-transaction-verifier/build.gradle +++ b/libs/ledger/ledger-utxo-transaction-verifier/build.gradle @@ -17,11 +17,12 @@ dependencies { implementation project(':libs:ledger:ledger-common-data') implementation project(':libs:ledger:ledger-utxo-data') - implementation project(':libs:metrics') - implementation project(':libs:utilities') - implementation project(':libs:membership:membership-common') - implementation project(':libs:sandbox-types') + implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' + api(libs.micrometer.core) { + // we don't need these in classpath, so excluding them to reduce dependencies. + exclude group: 'org.latencyutils', module: 'LatencyUtils' + } testImplementation project(':testing:ledger:ledger-utxo-testkit') -} \ No newline at end of file +} diff --git a/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/ContractVerificationMetricFactory.kt b/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/ContractVerificationMetricFactory.kt new file mode 100644 index 00000000000..276e124cec3 --- /dev/null +++ b/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/ContractVerificationMetricFactory.kt @@ -0,0 +1,13 @@ +package net.corda.ledger.utxo.transaction.verifier + +import io.micrometer.core.instrument.DistributionSummary +import io.micrometer.core.instrument.Timer + +interface ContractVerificationMetricFactory { + + fun getContractVerificationTimeMetric(): Timer + + fun getContractVerificationContractCountMetric(): DistributionSummary + + fun getContractVerificationContractTime(className: String): Timer +} diff --git a/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifier.kt b/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifier.kt index c5e68ec11e1..7dbf43a0166 100644 --- a/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifier.kt +++ b/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifier.kt @@ -1,11 +1,9 @@ package net.corda.ledger.utxo.transaction.verifier import net.corda.ledger.utxo.data.transaction.ContractVerificationFailureImpl -import net.corda.metrics.CordaMetrics import net.corda.v5.ledger.utxo.Contract import net.corda.v5.ledger.utxo.ContractVerificationException import net.corda.v5.ledger.utxo.transaction.UtxoLedgerTransaction -import net.corda.virtualnode.HoldingIdentity /** * Verifies contracts of ledger transaction. For security reasons, some verifications need to be run with a new instance @@ -13,58 +11,44 @@ import net.corda.virtualnode.HoldingIdentity * * @param transactionFactory factory used for checks that require a new instance of [UtxoLedgerTransaction] * @param transaction transaction used for checks that can reuse the same instance of [UtxoLedgerTransaction] - * @param holdingIdentity the virtual node holding identity to verify against * @param injectService: a callback that sets up a contract for testing. + * @param metricFactory: */ fun verifyContracts( transactionFactory: () -> UtxoLedgerTransaction, transaction: UtxoLedgerTransaction = transactionFactory.invoke(), - holdingIdentity: HoldingIdentity, - injectService: (Contract) -> Unit + injectService: (Contract) -> Unit, + metricFactory: ContractVerificationMetricFactory ) { - CordaMetrics.Metric.Ledger.ContractVerificationTime - .builder() - .forVirtualNode(holdingIdentity.shortHash.toString()) - .build() - .recordCallable { - val failureReasons = verifyEncumbrance(transaction).toMutableList() + metricFactory.getContractVerificationTimeMetric().recordCallable { + val failureReasons = verifyEncumbrance(transaction).toMutableList() - val allTransactionStateAndRefs = transaction.inputStateAndRefs + transaction.outputStateAndRefs - val contractClassMap = allTransactionStateAndRefs.groupBy { it.state.contractType } + val allTransactionStateAndRefs = transaction.inputStateAndRefs + transaction.outputStateAndRefs + val contractClassMap = allTransactionStateAndRefs.groupBy { it.state.contractType } - CordaMetrics.Metric.Ledger.ContractVerificationContractCount - .builder() - .forVirtualNode(holdingIdentity.shortHash.toString()) - .build() - .record(contractClassMap.size.toDouble()) + metricFactory.getContractVerificationContractCountMetric().record(contractClassMap.size.toDouble()) - contractClassMap.forEach { (contractClass, contractStates) -> - - CordaMetrics.Metric.Ledger.ContractVerificationContractTime - .builder() - .forVirtualNode(holdingIdentity.shortHash.toString()) - .withTag(CordaMetrics.Tag.LedgerContractName, contractClass.name) - .build() - .recordCallable { - try { - val contract = contractClass.getConstructor().newInstance() - injectService(contract) - contract.verify(transactionFactory.invoke()) - } catch (ex: Exception) { - failureReasons.add( - ContractVerificationFailureImpl( - contractClassName = contractClass.canonicalName, - contractStateClassNames = contractStates.map { it.state.contractState.javaClass.canonicalName }, - exceptionClassName = ex.javaClass.canonicalName, - exceptionMessage = ex.message ?: "The thrown exception did not provide a failure message." - ) - ) - } - } + contractClassMap.forEach { (contractClass, contractStates) -> + metricFactory.getContractVerificationContractTime(contractClass.name).recordCallable { + try { + val contract = contractClass.getConstructor().newInstance() + injectService(contract) + contract.verify(transactionFactory.invoke()) + } catch (ex: Exception) { + failureReasons.add( + ContractVerificationFailureImpl( + contractClassName = contractClass.canonicalName, + contractStateClassNames = contractStates.map { it.state.contractState.javaClass.canonicalName }, + exceptionClassName = ex.javaClass.canonicalName, + exceptionMessage = ex.message ?: "The thrown exception did not provide a failure message." + ) + ) + } } + } - if (failureReasons.isNotEmpty()) { - throw ContractVerificationException(transaction.id, failureReasons) - } + if (failureReasons.isNotEmpty()) { + throw ContractVerificationException(transaction.id, failureReasons) } + } } diff --git a/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifier.kt b/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifier.kt index 1fedefc325c..f628433b0e6 100644 --- a/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifier.kt +++ b/libs/ledger/ledger-utxo-transaction-verifier/src/main/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifier.kt @@ -3,7 +3,6 @@ package net.corda.ledger.utxo.transaction.verifier import net.corda.ledger.utxo.data.transaction.verifier.verifyMetadata import net.corda.v5.ledger.utxo.Contract import net.corda.v5.ledger.utxo.transaction.UtxoLedgerTransaction -import net.corda.virtualnode.HoldingIdentity /** * Verifies ledger transaction. For security reasons, some verifications (e.g. contracts) need to be run with a new @@ -15,8 +14,8 @@ import net.corda.virtualnode.HoldingIdentity class UtxoLedgerTransactionVerifier( private val transactionFactory: () -> UtxoLedgerTransaction, private val transaction: UtxoLedgerTransaction = transactionFactory.invoke(), - private val holdingIdentity: HoldingIdentity, - private val injectService: (Contract) -> Unit + private val injectService: (Contract) -> Unit, + private val metricFactory: ContractVerificationMetricFactory, ) : UtxoTransactionVerifier() { override val subjectClass: String = UtxoLedgerTransaction::class.simpleName!! @@ -26,7 +25,7 @@ class UtxoLedgerTransactionVerifier( verifyPlatformChecks() // cheap local checks about state overlaps and notaries // Now do the much more expensive sandbox checks requiring sandboxes - verifyContracts(transactionFactory, transaction, holdingIdentity, injectService) + verifyContracts(transactionFactory, transaction, injectService, metricFactory) } private fun verifyPlatformChecks() { diff --git a/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifierTest.kt b/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifierTest.kt index e49b7c4d53b..2728d6afecc 100644 --- a/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifierTest.kt +++ b/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionContractVerifierTest.kt @@ -1,5 +1,6 @@ package net.corda.ledger.utxo.transaction.verifier +import io.micrometer.core.instrument.Timer import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.testkit.publicKeyExample import net.corda.ledger.utxo.data.state.StateAndRefImpl @@ -14,16 +15,20 @@ import net.corda.v5.ledger.utxo.StateAndRef import net.corda.v5.ledger.utxo.StateRef import net.corda.v5.ledger.utxo.TransactionState import net.corda.v5.ledger.utxo.transaction.UtxoLedgerTransaction -import net.corda.virtualnode.HoldingIdentity import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +import org.mockito.kotlin.any +import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.doAnswer +import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import java.security.PublicKey +import java.util.concurrent.Callable class UtxoLedgerTransactionContractVerifierTest { @@ -31,12 +36,20 @@ class UtxoLedgerTransactionContractVerifierTest { val TX_ID_1 = SecureHashImpl("SHA", byteArrayOf(1, 1, 1, 1)) val TX_ID_2 = SecureHashImpl("SHA", byteArrayOf(1, 1, 1, 1)) val TX_ID_3 = SecureHashImpl("SHA", byteArrayOf(1, 1, 1, 1)) - val holdingIdentity = HoldingIdentity(MemberX500Name("ALICE", "LDN", "GB"), "group") } private val transaction = mock() private val transactionFactory = mock<() -> UtxoLedgerTransaction>() private val injectService = mock<(Contract) -> Unit>() + private val callable = argumentCaptor>() + private val timer = mock { + on { recordCallable(callable.capture()) } doAnswer { callable.lastValue.call() } + } + private val metricFactory = mock { + on { getContractVerificationTimeMetric() } doReturn timer + on { getContractVerificationContractCountMetric() } doReturn mock() + on { getContractVerificationContractTime(any()) } doReturn timer + } @BeforeEach fun beforeEach() { @@ -61,7 +74,7 @@ class UtxoLedgerTransactionContractVerifierTest { ) ) whenever(transaction.outputStateAndRefs).thenReturn(listOf(validContractCState2)) - verifyContracts(transactionFactory, transaction, holdingIdentity, injectService) + verifyContracts(transactionFactory, transaction, injectService, metricFactory) // Called once for each of 3 contracts verify(transactionFactory, times(3)).invoke() assertThat(MyValidContractA.EXECUTION_COUNT).isEqualTo(1) @@ -83,7 +96,7 @@ class UtxoLedgerTransactionContractVerifierTest { ) ) whenever(transaction.outputStateAndRefs).thenReturn(listOf(invalidContractBState)) - assertThatThrownBy { verifyContracts(transactionFactory, transaction, holdingIdentity, injectService) } + assertThatThrownBy { verifyContracts(transactionFactory, transaction, injectService, metricFactory) } .isExactlyInstanceOf(ContractVerificationException::class.java) .hasMessageContainingAll("I have failed", "Something is wrong here") // Called once for each of 4 contracts diff --git a/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifierTest.kt b/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifierTest.kt index 8ff3a69c0dc..ce79cd61c93 100644 --- a/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifierTest.kt +++ b/libs/ledger/ledger-utxo-transaction-verifier/src/test/kotlin/net/corda/ledger/utxo/transaction/verifier/UtxoLedgerTransactionVerifierTest.kt @@ -1,5 +1,6 @@ package net.corda.ledger.utxo.transaction.verifier +import io.micrometer.core.instrument.Timer import net.corda.crypto.core.SecureHashImpl import net.corda.ledger.common.testkit.anotherPublicKeyExample import net.corda.ledger.common.testkit.publicKeyExample @@ -19,14 +20,18 @@ import net.corda.v5.ledger.utxo.StateAndRef import net.corda.v5.ledger.utxo.StateRef import net.corda.v5.ledger.utxo.TransactionState import net.corda.v5.ledger.utxo.transaction.UtxoLedgerTransaction -import net.corda.virtualnode.HoldingIdentity import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertDoesNotThrow +import org.mockito.kotlin.any +import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.doAnswer +import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.whenever import java.security.PublicKey +import java.util.concurrent.Callable class UtxoLedgerTransactionVerifierTest { @@ -38,9 +43,17 @@ class UtxoLedgerTransactionVerifierTest { private val inputTransactionState = mock>() private val referenceTransactionState = mock>() private val metadata = mock() - private val holdingIdentity = HoldingIdentity(MemberX500Name("ALICE", "LDN", "GB"), "group") private val injectionService = mock<(Contract) -> Unit>() - private val verifier = UtxoLedgerTransactionVerifier({ transaction }, transaction, holdingIdentity, injectionService) + private val callable = argumentCaptor>() + private val timer = mock { + on { recordCallable(callable.capture()) } doAnswer { callable.lastValue.call() } + } + private val metricFactory = mock { + on { getContractVerificationTimeMetric() } doReturn timer + on { getContractVerificationContractCountMetric() } doReturn mock() + on { getContractVerificationContractTime(any()) } doReturn timer + } + private val verifier = UtxoLedgerTransactionVerifier({ transaction }, transaction, injectionService, metricFactory) @BeforeEach fun beforeEach() { diff --git a/libs/membership/membership-common/build.gradle b/libs/membership/membership-common/build.gradle index 5915236560d..2fc87e660d8 100644 --- a/libs/membership/membership-common/build.gradle +++ b/libs/membership/membership-common/build.gradle @@ -14,9 +14,6 @@ dependencies { implementation 'org.jetbrains.kotlin:kotlin-osgi-bundle' implementation "net.corda:corda-base" - implementation 'net.corda:corda-config-schema' - implementation 'net.corda:corda-topic-schema' - api "net.corda:corda-avro-schema" api "net.corda:corda-membership" api project(":libs:membership:membership-datamodel") api project(":libs:metrics") @@ -29,4 +26,5 @@ dependencies { implementation project(':libs:serialization:serialization-avro') testImplementation project(":testing:test-utilities") + testImplementation('net.corda:corda-topic-schema') } diff --git a/libs/membership/membership-impl/build.gradle b/libs/membership/membership-impl/build.gradle index f44c4e0b57a..814f83821cb 100644 --- a/libs/membership/membership-impl/build.gradle +++ b/libs/membership/membership-impl/build.gradle @@ -22,6 +22,7 @@ dependencies { implementation project(':libs:sandbox-types') implementation project(":libs:serialization:serialization-avro") implementation project(':libs:serialization:serialization-internal') + implementation project(':libs:layered-property-map-avro') implementation "net.corda:corda-avro-schema" implementation "net.corda:corda-base" diff --git a/libs/membership/membership-impl/src/main/kotlin/net/corda/membership/lib/impl/MemberInfoFactoryImpl.kt b/libs/membership/membership-impl/src/main/kotlin/net/corda/membership/lib/impl/MemberInfoFactoryImpl.kt index 9153e288c3c..08add9053c8 100644 --- a/libs/membership/membership-impl/src/main/kotlin/net/corda/membership/lib/impl/MemberInfoFactoryImpl.kt +++ b/libs/membership/membership-impl/src/main/kotlin/net/corda/membership/lib/impl/MemberInfoFactoryImpl.kt @@ -10,8 +10,8 @@ import net.corda.data.identity.HoldingIdentity import net.corda.data.membership.PersistentMemberInfo import net.corda.data.membership.SignedData import net.corda.layeredpropertymap.LayeredPropertyMapFactory +import net.corda.layeredpropertymap.avro.toAvro import net.corda.layeredpropertymap.create -import net.corda.layeredpropertymap.toAvro import net.corda.membership.lib.MemberInfoFactory import net.corda.membership.lib.SelfSignedMemberInfo import net.corda.membership.lib.retrieveSignatureSpec diff --git a/libs/membership/membership-impl/src/test/kotlin/net/corda/membership/lib/impl/MemberInfoTest.kt b/libs/membership/membership-impl/src/test/kotlin/net/corda/membership/lib/impl/MemberInfoTest.kt index f5cce2229e7..8f11a8b4153 100644 --- a/libs/membership/membership-impl/src/test/kotlin/net/corda/membership/lib/impl/MemberInfoTest.kt +++ b/libs/membership/membership-impl/src/test/kotlin/net/corda/membership/lib/impl/MemberInfoTest.kt @@ -6,8 +6,8 @@ import net.corda.data.crypto.wire.CryptoSignatureSpec import net.corda.data.crypto.wire.CryptoSignatureWithKey import net.corda.data.membership.SignedData import net.corda.data.membership.SignedMemberInfo +import net.corda.layeredpropertymap.avro.toAvro import net.corda.layeredpropertymap.testkit.LayeredPropertyMapMocks -import net.corda.layeredpropertymap.toAvro import net.corda.membership.lib.MemberInfoExtension.Companion.LEDGER_KEYS import net.corda.membership.lib.MemberInfoExtension.Companion.endpoints import net.corda.membership.lib.MemberInfoExtension.Companion.groupId diff --git a/libs/messaging/messaging-impl/build.gradle b/libs/messaging/messaging-impl/build.gradle index d907a7d891d..0704b00995f 100644 --- a/libs/messaging/messaging-impl/build.gradle +++ b/libs/messaging/messaging-impl/build.gradle @@ -40,6 +40,8 @@ dependencies { testImplementation project(":testing:test-utilities") testImplementation project(':libs:platform-info') testImplementation project(':libs:web:web-impl') + testImplementation project(":libs:crypto:crypto-core-avro") + testImplementation libs.javalin constraints { diff --git a/libs/messaging/messaging-impl/src/test/kotlin/net/corda/messaging/chunking/ChunkDeserializerServiceImplTest.kt b/libs/messaging/messaging-impl/src/test/kotlin/net/corda/messaging/chunking/ChunkDeserializerServiceImplTest.kt index f33bd24882d..83b8a143f81 100644 --- a/libs/messaging/messaging-impl/src/test/kotlin/net/corda/messaging/chunking/ChunkDeserializerServiceImplTest.kt +++ b/libs/messaging/messaging-impl/src/test/kotlin/net/corda/messaging/chunking/ChunkDeserializerServiceImplTest.kt @@ -3,9 +3,9 @@ package net.corda.messaging.chunking import java.nio.ByteBuffer import net.corda.chunking.Checksum import net.corda.chunking.impl.ChunkBuilderServiceImpl -import net.corda.crypto.core.toAvro import net.corda.crypto.cipher.suite.PlatformDigestService import net.corda.avro.serialization.CordaAvroDeserializer +import net.corda.crypto.core.avro.toAvro import net.corda.data.chunking.Chunk import net.corda.data.chunking.ChunkKey import org.assertj.core.api.Assertions.assertThat diff --git a/libs/virtual-node/cpi-upload-manager-impl/src/test/kotlin/net/corda/libs/cpiupload/impl/CpiUploadManagerImplTest.kt b/libs/virtual-node/cpi-upload-manager-impl/src/test/kotlin/net/corda/libs/cpiupload/impl/CpiUploadManagerImplTest.kt index adfdfee970b..04c8a53552e 100644 --- a/libs/virtual-node/cpi-upload-manager-impl/src/test/kotlin/net/corda/libs/cpiupload/impl/CpiUploadManagerImplTest.kt +++ b/libs/virtual-node/cpi-upload-manager-impl/src/test/kotlin/net/corda/libs/cpiupload/impl/CpiUploadManagerImplTest.kt @@ -1,7 +1,6 @@ package net.corda.libs.cpiupload.impl import net.corda.crypto.core.SecureHashImpl -import net.corda.crypto.core.toAvro import net.corda.data.chunking.UploadStatus import net.corda.data.chunking.UploadStatusKey import net.corda.messaging.api.publisher.Publisher @@ -16,7 +15,11 @@ import org.mockito.Mockito.`when` import org.mockito.kotlin.anyOrNull import org.mockito.kotlin.mock import java.io.ByteArrayInputStream +import java.nio.ByteBuffer import java.util.concurrent.CompletableFuture +import net.corda.crypto.core.bytes +import net.corda.v5.crypto.SecureHash +import net.corda.data.crypto.SecureHash as AvroSecureHash class CpiUploadManagerImplTest { private lateinit var cpiUploadManagerImpl: CpiUploadManagerImpl @@ -24,6 +27,10 @@ class CpiUploadManagerImplTest { private val publisher = mock(Publisher::class.java) private val subscription: Subscription = mock() private val maxAllowedMessageSize = 97280 + private companion object { + fun SecureHash.toAvro(): AvroSecureHash = + AvroSecureHash(this.algorithm, ByteBuffer.wrap(bytes)) + } @BeforeEach @Suppress("UNCHECKED_CAST") diff --git a/processors/flow-processor/build.gradle b/processors/flow-processor/build.gradle index efafa0000a6..25b90c7a27d 100644 --- a/processors/flow-processor/build.gradle +++ b/processors/flow-processor/build.gradle @@ -36,7 +36,7 @@ dependencies { runtimeOnly project(':components:configuration:configuration-read-service-impl') runtimeOnly project(':components:flow:flow-service') - runtimeOnly project(':components:ledger:ledger-common-flow') + runtimeOnly project(':libs:ledger:ledger-common-flow') runtimeOnly project(':libs:ledger:ledger-common-data') runtimeOnly project(':components:ledger:ledger-consensual-flow') runtimeOnly project(':components:ledger:ledger-utxo-flow') diff --git a/processors/verification-processor/build.gradle b/processors/verification-processor/build.gradle index ac7186b2011..0faa9dd4da9 100644 --- a/processors/verification-processor/build.gradle +++ b/processors/verification-processor/build.gradle @@ -33,7 +33,7 @@ dependencies { runtimeOnly project(':components:configuration:configuration-read-service-impl') runtimeOnly project(':components:virtual-node:cpi-info-read-service-impl') runtimeOnly project(":components:flow:flow-service") - runtimeOnly project(':components:ledger:ledger-common-flow') + runtimeOnly project(':libs:ledger:ledger-common-flow') runtimeOnly project(':components:ledger:ledger-consensual-flow') runtimeOnly project(':components:ledger:ledger-utxo-flow') runtimeOnly project(":components:ledger:notary-worker-selection-impl") diff --git a/settings.gradle b/settings.gradle index 069c38487ca..60b242b444f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -129,8 +129,6 @@ include 'components:flow:flow-service' include 'components:gateway' include 'components:rest-gateway-comp' include 'components:kafka-topic-admin' -include 'components:ledger:ledger-common-flow' -include 'components:ledger:ledger-common-flow-api' include 'components:ledger:ledger-consensual-flow' include 'components:ledger:notary-worker-selection' include 'components:ledger:notary-worker-selection-impl' @@ -238,8 +236,10 @@ include 'libs:crypto:cipher-suite' include 'libs:crypto:cipher-suite-impl' include 'libs:crypto:crypto-config-impl' include 'libs:crypto:crypto-core' +include 'libs:crypto:crypto-core-avro' include 'libs:crypto:crypto-flow' include 'libs:crypto:crypto-impl' +include 'libs:crypto:crypto-impl-utils' include 'libs:crypto:merkle-impl' include 'libs:crypto:crypto-serialization-impl' include 'libs:crypto:crypto-utils' @@ -276,11 +276,17 @@ include 'libs:kotlin-reflection' include 'libs:kotlin-reflection:kotlin-reflection-test-api' include 'libs:kotlin-reflection:kotlin-reflection-test-example' include 'libs:layered-property-map' +include 'libs:layered-property-map-avro' include 'libs:layered-property-map:layered-property-map-test-converter' include 'libs:ledger:ledger-common-data' +include 'libs:ledger:ledger-common-flow' +include 'libs:ledger:ledger-lib-common-flow-api' include 'libs:ledger:ledger-consensual-data' include 'libs:ledger:ledger-utxo-data' include 'libs:ledger:ledger-utxo-transaction-verifier' +include 'libs:ledger:ledger-lib-common-flow' +include 'libs:ledger-lib-persistence' +include 'libs:ledger-lib-utxo-flow' include 'libs:lifecycle:lifecycle' include 'libs:lifecycle:lifecycle-impl' include 'libs:lifecycle:lifecycle-test-impl' diff --git a/testing/ledger/ledger-common-base-test/build.gradle b/testing/ledger/ledger-common-base-test/build.gradle index 71a4a9662e1..cf1a71cfa8b 100644 --- a/testing/ledger/ledger-common-base-test/build.gradle +++ b/testing/ledger/ledger-common-base-test/build.gradle @@ -10,7 +10,7 @@ dependencies { compileOnly 'org.osgi:osgi.core' api project(':testing:ledger:ledger-common-testkit') - api project(':components:ledger:ledger-common-flow') + api project(':libs:ledger:ledger-common-flow') api project(':libs:ledger:ledger-common-data') api project(':libs:crypto:cipher-suite-impl') @@ -23,6 +23,7 @@ dependencies { implementation project(':libs:serialization:serialization-amqp') implementation project(':libs:serialization:serialization-internal') implementation project(":libs:utilities") + implementation project(":libs:ledger:ledger-lib-common-flow") implementation libs.mockito.kotlin } diff --git a/testing/ledger/ledger-common-base-test/src/main/kotlin/net/corda/ledger/common/test/CommonLedgerTest.kt b/testing/ledger/ledger-common-base-test/src/main/kotlin/net/corda/ledger/common/test/CommonLedgerTest.kt index b025f73c2d1..f64bc4c3089 100644 --- a/testing/ledger/ledger-common-base-test/src/main/kotlin/net/corda/ledger/common/test/CommonLedgerTest.kt +++ b/testing/ledger/ledger-common-base-test/src/main/kotlin/net/corda/ledger/common/test/CommonLedgerTest.kt @@ -15,14 +15,14 @@ import net.corda.internal.serialization.amqp.helper.TestSerializationService import net.corda.ledger.common.data.transaction.PrivacySaltImpl import net.corda.ledger.common.data.transaction.factory.WireTransactionFactoryImpl import net.corda.ledger.common.data.transaction.serializer.amqp.WireTransactionSerializer -import net.corda.ledger.common.flow.impl.transaction.TransactionSignatureServiceImpl -import net.corda.ledger.common.flow.impl.transaction.TransactionSignatureVerificationServiceImpl -import net.corda.ledger.common.flow.impl.transaction.factory.TransactionMetadataFactoryImpl -import net.corda.ledger.common.flow.impl.transaction.serializer.kryo.WireTransactionKryoSerializer +import net.corda.ledger.common.flow.impl.transaction.TransactionSignatureServiceOsgiImpl +import net.corda.ledger.common.flow.impl.transaction.factory.TransactionMetadataFactoryOsgiImpl import net.corda.ledger.common.flow.transaction.PrivacySaltProviderService import net.corda.ledger.common.testkit.FakePlatformInfoProvider import net.corda.ledger.common.testkit.fakePlatformInfoProvider import net.corda.ledger.common.testkit.getWireTransactionExample +import net.corda.ledger.libs.common.flow.impl.transaction.TransactionSignatureVerificationServiceImpl +import net.corda.ledger.libs.common.flow.impl.transaction.kryo.WireTransactionKryoSerializer import net.corda.sandboxgroupcontext.CurrentSandboxGroupContext import net.corda.utilities.toByteArray import net.corda.v5.application.crypto.DigitalSignatureVerificationService @@ -61,7 +61,7 @@ abstract class CommonLedgerTest { val flowEngine = FlowEngineImpl(flowFiberService) val serializationServiceNullCfg = TestSerializationService.getTestSerializationService({}, cipherSchemeMetadata) - val transactionMetadataFactory = TransactionMetadataFactoryImpl( + val transactionMetadataFactory = TransactionMetadataFactoryOsgiImpl( currentSandboxGroupContext, fakePlatformInfoProvider(), mockFlowEngine() @@ -84,7 +84,7 @@ abstract class CommonLedgerTest { digestService, cipherSchemeMetadata ) - val transactionSignatureService = TransactionSignatureServiceImpl( + val transactionSignatureService = TransactionSignatureServiceOsgiImpl( serializationServiceWithWireTx, mockSigningService(), signatureSpecService, diff --git a/testing/ledger/ledger-common-testkit/build.gradle b/testing/ledger/ledger-common-testkit/build.gradle index 1bbc77986f9..9254b215924 100644 --- a/testing/ledger/ledger-common-testkit/build.gradle +++ b/testing/ledger/ledger-common-testkit/build.gradle @@ -13,7 +13,7 @@ dependencies { implementation project(':libs:crypto:crypto-core') implementation project(':libs:ledger:ledger-common-data') implementation project(':libs:crypto:crypto-impl') - api project(':components:ledger:ledger-common-flow-api') + api project(':libs:ledger:ledger-lib-common-flow-api') api project(':libs:application:application-impl') api project(':libs:platform-info') api project(":libs:serialization:json-validator") diff --git a/testing/ledger/ledger-utxo-base-test/build.gradle b/testing/ledger/ledger-utxo-base-test/build.gradle index 38c40b4cd01..40b8d07933f 100644 --- a/testing/ledger/ledger-utxo-base-test/build.gradle +++ b/testing/ledger/ledger-utxo-base-test/build.gradle @@ -12,6 +12,7 @@ dependencies { implementation project(':libs:ledger:ledger-utxo-transaction-verifier') implementation project(':components:ledger:ledger-utxo-flow') + implementation project(':libs:ledger-lib-utxo-flow') implementation project(':libs:membership:membership-common') implementation project(':libs:flows:flow-api') implementation libs.mockito.kotlin diff --git a/testing/ledger/ledger-utxo-base-test/src/main/kotlin/net/corda/ledger/utxo/test/UtxoLedgerTest.kt b/testing/ledger/ledger-utxo-base-test/src/main/kotlin/net/corda/ledger/utxo/test/UtxoLedgerTest.kt index dd9f158b354..50f4179902a 100644 --- a/testing/ledger/ledger-utxo-base-test/src/main/kotlin/net/corda/ledger/utxo/test/UtxoLedgerTest.kt +++ b/testing/ledger/ledger-utxo-base-test/src/main/kotlin/net/corda/ledger/utxo/test/UtxoLedgerTest.kt @@ -8,20 +8,20 @@ import net.corda.ledger.common.data.transaction.filtered.factory.impl.FilteredTr import net.corda.ledger.common.test.CommonLedgerTest import net.corda.ledger.common.testkit.anotherPublicKeyExample import net.corda.ledger.common.testkit.publicKeyExample -import net.corda.ledger.utxo.flow.impl.UtxoLedgerServiceImpl import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParametersVerifier +import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService +import net.corda.ledger.utxo.flow.impl.UtxoLedgerServiceImpl import net.corda.ledger.utxo.flow.impl.notary.PluggableNotaryService -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerStateQueryService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl -import net.corda.ledger.utxo.flow.impl.transaction.factory.impl.UtxoLedgerTransactionFactoryImpl -import net.corda.ledger.utxo.flow.impl.transaction.factory.impl.UtxoSignedTransactionFactoryImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderImpl +import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerGroupParametersPersistenceService +import net.corda.ledger.utxo.flow.impl.transaction.factory.impl.UtxoLedgerTransactionFactoryOsgiImpl +import net.corda.ledger.utxo.flow.impl.transaction.factory.impl.UtxoSignedTransactionFactoryOsgiImpl import net.corda.ledger.utxo.flow.impl.transaction.filtered.factory.UtxoFilteredTransactionFactoryImpl import net.corda.ledger.utxo.flow.impl.transaction.serializer.amqp.UtxoSignedTransactionSerializer import net.corda.ledger.utxo.flow.impl.transaction.serializer.kryo.UtxoSignedTransactionKryoSerializer -import net.corda.ledger.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal -import net.corda.ledger.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService import net.corda.ledger.utxo.testkit.anotherNotaryX500Name import net.corda.ledger.utxo.testkit.getUtxoSignedTransactionExample import net.corda.ledger.utxo.testkit.notaryX500Name @@ -71,13 +71,13 @@ abstract class UtxoLedgerTest : CommonLedgerTest() { mock() ), serializationServiceWithWireTx ) - private val utxoLedgerTransactionFactory = UtxoLedgerTransactionFactoryImpl( + private val utxoLedgerTransactionFactory = UtxoLedgerTransactionFactoryOsgiImpl( serializationServiceWithWireTx, mockUtxoLedgerStateQueryService, mockUtxoLedgerGroupParametersPersistenceService, mockGroupParametersLookup ) - val utxoSignedTransactionFactory = UtxoSignedTransactionFactoryImpl( + val utxoSignedTransactionFactory = UtxoSignedTransactionFactoryOsgiImpl( currentSandboxGroupContext, jsonMarshallingService, jsonValidator, diff --git a/testing/ledger/ledger-utxo-testkit/build.gradle b/testing/ledger/ledger-utxo-testkit/build.gradle index 87be3897c3c..72d4ba32063 100644 --- a/testing/ledger/ledger-utxo-testkit/build.gradle +++ b/testing/ledger/ledger-utxo-testkit/build.gradle @@ -13,6 +13,7 @@ dependencies { implementation project(':components:ledger:ledger-utxo-flow') implementation project(':libs:crypto:cipher-suite') implementation project(':libs:ledger:ledger-common-data') + implementation project(':libs:ledger-lib-utxo-flow') implementation project(':libs:ledger:ledger-utxo-data') implementation project(':libs:serialization:json-validator') implementation project(':libs:serialization:json-validator-lib') diff --git a/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoLedgerIntegrationTest.kt b/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoLedgerIntegrationTest.kt index 772bd5643a8..532ba157c83 100644 --- a/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoLedgerIntegrationTest.kt +++ b/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoLedgerIntegrationTest.kt @@ -1,12 +1,12 @@ package net.corda.ledger.utxo.testkit import net.corda.ledger.common.integration.test.CommonLedgerIntegrationTest +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionImpl import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionInternal import net.corda.ledger.utxo.data.transaction.WrappedUtxoWireTransaction import net.corda.ledger.utxo.flow.impl.persistence.UtxoLedgerPersistenceService -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory import net.corda.sandboxgroupcontext.getSandboxSingletonService import net.corda.testing.sandboxes.SandboxSetup import net.corda.v5.ledger.utxo.UtxoLedgerService @@ -38,4 +38,4 @@ abstract class UtxoLedgerIntegrationTest : CommonLedgerIntegrationTest() { null ) } -} \ No newline at end of file +} diff --git a/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoSignedTransactionExample.kt b/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoSignedTransactionExample.kt index a8e4a94dec4..892b13e13dd 100644 --- a/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoSignedTransactionExample.kt +++ b/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoSignedTransactionExample.kt @@ -8,13 +8,13 @@ import net.corda.ledger.common.testkit.createExample import net.corda.ledger.common.testkit.defaultComponentGroups import net.corda.ledger.common.testkit.getSignatureWithMetadataExample import net.corda.ledger.common.testkit.getWireTransactionExample +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl +import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory +import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal import net.corda.ledger.utxo.data.transaction.UtxoComponentGroup import net.corda.ledger.utxo.data.transaction.UtxoLedgerTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionImpl -import net.corda.ledger.utxo.flow.impl.transaction.UtxoSignedTransactionInternal -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory -import net.corda.ledger.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal import net.corda.v5.application.crypto.DigestService import net.corda.v5.application.marshalling.JsonMarshallingService import net.corda.v5.application.serialization.SerializationService @@ -65,4 +65,4 @@ fun getUtxoSignedTransactionExample( wireTransaction, setOf(getSignatureWithMetadataExample()) ) -} \ No newline at end of file +} diff --git a/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoTimeWindowExample.kt b/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoTimeWindowExample.kt index 20e58a8e9ad..bd09f60376e 100644 --- a/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoTimeWindowExample.kt +++ b/testing/ledger/ledger-utxo-testkit/src/main/kotlin/net/corda/ledger/utxo/testkit/UtxoTimeWindowExample.kt @@ -1,6 +1,6 @@ package net.corda.ledger.utxo.testkit -import net.corda.ledger.utxo.flow.impl.timewindow.TimeWindowBetweenImpl import java.time.Instant +import net.corda.ledger.lib.utxo.flow.impl.timewindow.TimeWindowBetweenImpl -val utxoTimeWindowExample = TimeWindowBetweenImpl(Instant.MIN, Instant.MAX) \ No newline at end of file +val utxoTimeWindowExample = TimeWindowBetweenImpl(Instant.MIN, Instant.MAX)