From d399e3c2423ff1c0b8352a7838905c6953e58def Mon Sep 17 00:00:00 2001 From: szymonsztuka Date: Mon, 26 Nov 2018 16:03:06 +0000 Subject: [PATCH] CORDA-2232 external id to pub key mapping - fixes Fixes in PersistentKeyManagementService.kt, VaultSchema.kt, and vault-schema.changelog-v8.xml. (#4295) --- docs/source/node-database.rst | 6 ++++++ .../keys/PersistentKeyManagementService.kt | 8 +++++--- .../corda/node/services/vault/VaultSchema.kt | 15 +++++++------- .../migration/vault-schema.changelog-v8.xml | 20 ++++++++++++++----- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/docs/source/node-database.rst b/docs/source/node-database.rst index e40c3bf520..2f078cbaf5 100644 --- a/docs/source/node-database.rst +++ b/docs/source/node-database.rst @@ -102,6 +102,10 @@ By default, the node database has the following tables: +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | NODE_TRANSACTIONS | TX_ID, TRANSACTION_VALUE, STATE_MACHINE_RUN_ID | +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| PK_HASH_TO_EXT_ID_MAP | ID, EXTERNAL_ID, PUBLIC_KEY_HASH | ++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| STATE_PARTY | OUTPUT_INDEX, TRANSACTION_ID, ID, PUBLIC_KEY_HASH, X500_NAME | ++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | VAULT_FUNGIBLE_STATES | OUTPUT_INDEX, TRANSACTION_ID, ISSUER_NAME, ISSUER_REF, OWNER_NAME, QUANTITY | +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | VAULT_FUNGIBLE_STATES_PARTS | OUTPUT_INDEX, TRANSACTION_ID, PARTICIPANTS | @@ -114,3 +118,5 @@ By default, the node database has the following tables: +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | VAULT_TRANSACTION_NOTES | SEQ_NO, NOTE, TRANSACTION_ID | +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| V_PKEY_HASH_EX_ID_MAP | ID, PUBLIC_KEY_HASH, TRANSACTION_ID, OUTPUT_INDEX, EXTERNAL_ID | ++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ \ No newline at end of file diff --git a/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt b/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt index 0cbaa360de..c7934a5c02 100644 --- a/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt +++ b/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt @@ -11,6 +11,7 @@ import net.corda.nodeapi.internal.persistence.CordaPersistence import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX import org.apache.commons.lang.ArrayUtils.EMPTY_BYTE_ARRAY import org.bouncycastle.operator.ContentSigner +import org.hibernate.annotations.Type import java.security.KeyPair import java.security.PrivateKey import java.security.PublicKey @@ -50,13 +51,14 @@ class PersistentKeyManagementService(cacheFactory: NamedCacheFactory, val identi @Id @GeneratedValue @Column(name = "id", unique = true, nullable = false) - var key: Long? = null, + val key: Long?, @Column(name = "external_id", nullable = false) - var externalId: UUID, + @Type(type = "uuid-char") + val externalId: UUID, @Column(name = "public_key_hash", nullable = false) - var publicKeyHash: String + val publicKeyHash: String ) { constructor(accountId: UUID, publicKey: PublicKey) : this(null, accountId, publicKey.toStringShort()) diff --git a/node/src/main/kotlin/net/corda/node/services/vault/VaultSchema.kt b/node/src/main/kotlin/net/corda/node/services/vault/VaultSchema.kt index b2cf297557..586ea4bfdf 100644 --- a/node/src/main/kotlin/net/corda/node/services/vault/VaultSchema.kt +++ b/node/src/main/kotlin/net/corda/node/services/vault/VaultSchema.kt @@ -167,14 +167,14 @@ object VaultSchemaV1 : MappedSchema( @Id @GeneratedValue @Column(name = "id", unique = true, nullable = false) - var id: Long? = null, + val id: Long?, // Foreign key. @Column(name = "state_ref") - var stateRef: PersistentStateRef, + val stateRef: PersistentStateRef, @Column(name = "public_key_hash", nullable = false) - var publicKeyHash: String, + val publicKeyHash: String, @Column(name = "x500_name", nullable = true) var x500Name: AbstractParty? = null @@ -190,17 +190,18 @@ object VaultSchemaV1 : MappedSchema( @Id @GeneratedValue @Column(name = "id", unique = true, nullable = false) - var id: Long? = null, + val id: Long, // Foreign key. @Column(name = "state_ref") - var stateRef: PersistentStateRef, + val stateRef: PersistentStateRef, @Column(name = "public_key_hash") - var publicKeyHash: String, + val publicKeyHash: String, @Column(name = "external_id") - var externalId: UUID + @Type(type = "uuid-char") + val externalId: UUID ) : StatePersistable } diff --git a/node/src/main/resources/migration/vault-schema.changelog-v8.xml b/node/src/main/resources/migration/vault-schema.changelog-v8.xml index 3f7adda2c2..b52eb27d92 100644 --- a/node/src/main/resources/migration/vault-schema.changelog-v8.xml +++ b/node/src/main/resources/migration/vault-schema.changelog-v8.xml @@ -6,17 +6,27 @@ - - + + + + + + - - - + + + + + + + + +