mirror of
https://github.com/corda/corda.git
synced 2024-12-19 21:17:58 +00:00
[CORDA-1267]: Making Corda's JPA classes non-final and Serializable. (#2882)
* Making Corda's JPA classes non-final and Serializable. * Making Corda's JPA classes non-final and Serializable. * Making Corda's JPA classes non-final and Serializable. * Making Corda's JPA classes non-final and Serializable.
This commit is contained in:
parent
4269e4a02e
commit
36f02ff4b4
@ -2842,27 +2842,27 @@ public final class net.corda.core.schemas.CommonSchemaV1 extends net.corda.core.
|
||||
@javax.persistence.MappedSuperclass @net.corda.core.serialization.CordaSerializable public static class net.corda.core.schemas.CommonSchemaV1$FungibleState extends net.corda.core.schemas.PersistentState
|
||||
public <init>()
|
||||
public <init>(Set, net.corda.core.identity.AbstractParty, long, net.corda.core.identity.AbstractParty, byte[])
|
||||
@org.jetbrains.annotations.NotNull public final net.corda.core.identity.AbstractParty getIssuer()
|
||||
@org.jetbrains.annotations.NotNull public final byte[] getIssuerRef()
|
||||
@org.jetbrains.annotations.NotNull public final net.corda.core.identity.AbstractParty getOwner()
|
||||
@org.jetbrains.annotations.NotNull public net.corda.core.identity.AbstractParty getIssuer()
|
||||
@org.jetbrains.annotations.NotNull public byte[] getIssuerRef()
|
||||
@org.jetbrains.annotations.NotNull public net.corda.core.identity.AbstractParty getOwner()
|
||||
@org.jetbrains.annotations.Nullable public Set getParticipants()
|
||||
public final long getQuantity()
|
||||
public final void setIssuer(net.corda.core.identity.AbstractParty)
|
||||
public final void setIssuerRef(byte[])
|
||||
public final void setOwner(net.corda.core.identity.AbstractParty)
|
||||
public long getQuantity()
|
||||
public void setIssuer(net.corda.core.identity.AbstractParty)
|
||||
public void setIssuerRef(byte[])
|
||||
public void setOwner(net.corda.core.identity.AbstractParty)
|
||||
public void setParticipants(Set)
|
||||
public final void setQuantity(long)
|
||||
public void setQuantity(long)
|
||||
##
|
||||
@javax.persistence.MappedSuperclass @net.corda.core.serialization.CordaSerializable public static class net.corda.core.schemas.CommonSchemaV1$LinearState extends net.corda.core.schemas.PersistentState
|
||||
public <init>()
|
||||
public <init>(Set, String, UUID)
|
||||
public <init>(net.corda.core.contracts.UniqueIdentifier, Set)
|
||||
@org.jetbrains.annotations.Nullable public final String getExternalId()
|
||||
@org.jetbrains.annotations.Nullable public String getExternalId()
|
||||
@org.jetbrains.annotations.Nullable public Set getParticipants()
|
||||
@org.jetbrains.annotations.NotNull public final UUID getUuid()
|
||||
public final void setExternalId(String)
|
||||
@org.jetbrains.annotations.NotNull public UUID getUuid()
|
||||
public void setExternalId(String)
|
||||
public void setParticipants(Set)
|
||||
public final void setUuid(UUID)
|
||||
public void setUuid(UUID)
|
||||
##
|
||||
public class net.corda.core.schemas.MappedSchema extends java.lang.Object
|
||||
public <init>(Class, int, Iterable)
|
||||
@ -2874,10 +2874,10 @@ public class net.corda.core.schemas.MappedSchema extends java.lang.Object
|
||||
@javax.persistence.MappedSuperclass @net.corda.core.serialization.CordaSerializable public class net.corda.core.schemas.PersistentState extends java.lang.Object implements net.corda.core.schemas.StatePersistable
|
||||
public <init>()
|
||||
public <init>(net.corda.core.schemas.PersistentStateRef)
|
||||
@org.jetbrains.annotations.Nullable public final net.corda.core.schemas.PersistentStateRef getStateRef()
|
||||
public final void setStateRef(net.corda.core.schemas.PersistentStateRef)
|
||||
@org.jetbrains.annotations.Nullable public net.corda.core.schemas.PersistentStateRef getStateRef()
|
||||
public void setStateRef(net.corda.core.schemas.PersistentStateRef)
|
||||
##
|
||||
@javax.persistence.Embeddable public final class net.corda.core.schemas.PersistentStateRef extends java.lang.Object implements java.io.Serializable
|
||||
@javax.persistence.Embeddable public class net.corda.core.schemas.PersistentStateRef extends java.lang.Object implements java.io.Serializable
|
||||
public <init>()
|
||||
public <init>(String, Integer)
|
||||
public <init>(net.corda.core.contracts.StateRef)
|
||||
@ -2885,18 +2885,18 @@ public class net.corda.core.schemas.MappedSchema extends java.lang.Object
|
||||
@org.jetbrains.annotations.Nullable public final Integer component2()
|
||||
@org.jetbrains.annotations.NotNull public final net.corda.core.schemas.PersistentStateRef copy(String, Integer)
|
||||
public boolean equals(Object)
|
||||
@org.jetbrains.annotations.Nullable public final Integer getIndex()
|
||||
@org.jetbrains.annotations.Nullable public final String getTxId()
|
||||
@org.jetbrains.annotations.Nullable public Integer getIndex()
|
||||
@org.jetbrains.annotations.Nullable public String getTxId()
|
||||
public int hashCode()
|
||||
public final void setIndex(Integer)
|
||||
public final void setTxId(String)
|
||||
public void setIndex(Integer)
|
||||
public void setTxId(String)
|
||||
public String toString()
|
||||
##
|
||||
@net.corda.core.serialization.CordaSerializable public interface net.corda.core.schemas.QueryableState extends net.corda.core.contracts.ContractState
|
||||
@org.jetbrains.annotations.NotNull public abstract net.corda.core.schemas.PersistentState generateMappedObject(net.corda.core.schemas.MappedSchema)
|
||||
@org.jetbrains.annotations.NotNull public abstract Iterable supportedSchemas()
|
||||
##
|
||||
public interface net.corda.core.schemas.StatePersistable
|
||||
public interface net.corda.core.schemas.StatePersistable extends java.io.Serializable
|
||||
##
|
||||
public interface net.corda.core.serialization.ClassWhitelist
|
||||
public abstract boolean hasListed(Class)
|
||||
|
10
build.gradle
10
build.gradle
@ -93,6 +93,7 @@ buildscript {
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
|
||||
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
|
||||
classpath "net.corda.plugins:publish-utils:$gradle_plugins_version"
|
||||
classpath "net.corda.plugins:quasar-utils:$gradle_plugins_version"
|
||||
@ -140,6 +141,15 @@ allprojects {
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'jacoco'
|
||||
apply plugin: 'org.owasp.dependencycheck'
|
||||
apply plugin: 'kotlin-allopen'
|
||||
|
||||
allOpen {
|
||||
annotations(
|
||||
"javax.persistence.Entity",
|
||||
"javax.persistence.Embeddable",
|
||||
"javax.persistence.MappedSuperclass"
|
||||
)
|
||||
}
|
||||
|
||||
dependencyCheck {
|
||||
suppressionFile = '.ci/dependency-checker/suppressedLibraries.xml'
|
||||
|
@ -69,4 +69,4 @@ data class PersistentStateRef(
|
||||
/**
|
||||
* Marker interface to denote a persistable Corda state entity that will always have a transaction id and index
|
||||
*/
|
||||
interface StatePersistable
|
||||
interface StatePersistable : Serializable
|
@ -10,6 +10,7 @@ import net.corda.core.serialization.serialize
|
||||
import net.corda.core.utilities.MAX_HASH_HEX_SIZE
|
||||
import net.corda.core.utilities.NetworkHostAndPort
|
||||
import net.corda.node.services.persistence.NodePropertiesPersistentStore
|
||||
import java.io.Serializable
|
||||
import javax.persistence.*
|
||||
|
||||
object NodeInfoSchema
|
||||
@ -52,7 +53,7 @@ object NodeInfoSchemaV1 : MappedSchema(
|
||||
*/
|
||||
@Column(name = "serial")
|
||||
val serial: Long
|
||||
) {
|
||||
) : Serializable {
|
||||
fun toNodeInfo(): NodeInfo {
|
||||
return NodeInfo(
|
||||
this.addresses.map { it.toHostAndPort() },
|
||||
@ -72,7 +73,7 @@ object NodeInfoSchemaV1 : MappedSchema(
|
||||
var id: Int,
|
||||
val host: String? = null,
|
||||
val port: Int? = null
|
||||
) {
|
||||
) : Serializable {
|
||||
companion object {
|
||||
fun fromHostAndPort(hostAndPort: NetworkHostAndPort) = DBHostAndPort(
|
||||
0, hostAndPort.host, hostAndPort.port
|
||||
@ -106,7 +107,7 @@ object NodeInfoSchemaV1 : MappedSchema(
|
||||
|
||||
@ManyToMany(mappedBy = "legalIdentitiesAndCerts", cascade = arrayOf(CascadeType.ALL)) // ManyToMany because of distributed services.
|
||||
private val persistentNodeInfos: Set<PersistentNodeInfo> = emptySet()
|
||||
) {
|
||||
) : Serializable {
|
||||
constructor(partyAndCert: PartyAndCertificate, isMain: Boolean = false)
|
||||
: this(partyAndCert.name.toString(),
|
||||
partyAndCert.party.owningKey.toStringShort(),
|
||||
|
@ -31,6 +31,7 @@ import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import org.apache.activemq.artemis.utils.ReusableLatch
|
||||
import org.slf4j.Logger
|
||||
import java.io.Serializable
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
import java.util.*
|
||||
@ -155,7 +156,7 @@ class NodeSchedulerService(private val clock: CordaClock,
|
||||
|
||||
@Column(name = "scheduled_at", nullable = false)
|
||||
var scheduledAt: Instant = Instant.now()
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
private class InnerState {
|
||||
var scheduledStatesQueue: PriorityQueue<ScheduledStateRef> = PriorityQueue({ a, b -> a.scheduledAt.compareTo(b.scheduledAt) })
|
||||
|
@ -17,6 +17,7 @@ import net.corda.nodeapi.internal.crypto.X509Utilities
|
||||
import net.corda.nodeapi.internal.crypto.x509Certificates
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import org.apache.commons.lang.ArrayUtils.EMPTY_BYTE_ARRAY
|
||||
import java.io.Serializable
|
||||
import java.security.InvalidAlgorithmParameterException
|
||||
import java.security.PublicKey
|
||||
import java.security.cert.*
|
||||
@ -75,7 +76,7 @@ class PersistentIdentityService(override val trustRoot: X509Certificate,
|
||||
@Lob
|
||||
@Column(name = "identity_value")
|
||||
var identity: ByteArray = EMPTY_BYTE_ARRAY
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
@Entity
|
||||
@javax.persistence.Table(name = "${NODE_DATABASE_PREFIX}named_identities")
|
||||
@ -86,7 +87,7 @@ class PersistentIdentityService(override val trustRoot: X509Certificate,
|
||||
|
||||
@Column(name = "pk_hash", length = MAX_HASH_HEX_SIZE)
|
||||
var publicKeyHash: String = ""
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
override val caCertStore: CertStore
|
||||
override val trustAnchor: TrustAnchor = TrustAnchor(trustRoot, null)
|
||||
|
@ -10,6 +10,7 @@ import net.corda.node.utilities.AppendOnlyPersistentMap
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import org.apache.commons.lang.ArrayUtils.EMPTY_BYTE_ARRAY
|
||||
import org.bouncycastle.operator.ContentSigner
|
||||
import java.io.Serializable
|
||||
import java.security.KeyPair
|
||||
import java.security.PrivateKey
|
||||
import java.security.PublicKey
|
||||
@ -42,7 +43,7 @@ class PersistentKeyManagementService(val identityService: IdentityService,
|
||||
@Lob
|
||||
@Column(name = "private_key")
|
||||
var privateKey: ByteArray = EMPTY_BYTE_ARRAY
|
||||
) {
|
||||
) : Serializable {
|
||||
constructor(publicKey: PublicKey, privateKey: PrivateKey)
|
||||
: this(publicKey.toStringShort(), publicKey.encoded, privateKey.encoded)
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ import org.apache.commons.lang.ArrayUtils.EMPTY_BYTE_ARRAY
|
||||
import rx.Observable
|
||||
import rx.Subscription
|
||||
import rx.subjects.PublishSubject
|
||||
import java.io.Serializable
|
||||
import java.security.PublicKey
|
||||
import java.time.Instant
|
||||
import java.util.*
|
||||
@ -189,7 +190,7 @@ class P2PMessagingClient(private val config: NodeConfiguration,
|
||||
|
||||
@Column(name = "insertion_time")
|
||||
var insertionTime: Instant = Instant.now()
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
@Entity
|
||||
@javax.persistence.Table(name = "${NODE_DATABASE_PREFIX}message_retry")
|
||||
@ -204,7 +205,7 @@ class P2PMessagingClient(private val config: NodeConfiguration,
|
||||
@Lob
|
||||
@Column
|
||||
var recipients: ByteArray = EMPTY_BYTE_ARRAY
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
fun start() {
|
||||
state.locked {
|
||||
|
@ -6,6 +6,7 @@ import net.corda.node.services.api.CheckpointStorage
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import net.corda.nodeapi.internal.persistence.currentDBSession
|
||||
import org.apache.commons.lang.ArrayUtils.EMPTY_BYTE_ARRAY
|
||||
import java.io.Serializable
|
||||
import javax.persistence.Column
|
||||
import javax.persistence.Entity
|
||||
import javax.persistence.Id
|
||||
@ -26,7 +27,7 @@ class DBCheckpointStorage : CheckpointStorage {
|
||||
@Lob
|
||||
@Column(name = "checkpoint_value")
|
||||
var checkpoint: ByteArray = EMPTY_BYTE_ARRAY
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
override fun addCheckpoint(checkpoint: Checkpoint) {
|
||||
currentDBSession().save(DBCheckpoint().apply {
|
||||
|
@ -11,6 +11,7 @@ import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import net.corda.nodeapi.internal.persistence.bufferUntilDatabaseCommit
|
||||
import net.corda.nodeapi.internal.persistence.wrapWithDatabaseTransaction
|
||||
import rx.subjects.PublishSubject
|
||||
import java.io.Serializable
|
||||
import java.util.*
|
||||
import javax.annotation.concurrent.ThreadSafe
|
||||
import javax.persistence.*
|
||||
@ -33,7 +34,7 @@ class DBTransactionMappingStorage : StateMachineRecordedTransactionMappingStorag
|
||||
|
||||
@Column(name = "state_machine_run_id", length = 36)
|
||||
var stateMachineRunId: String = ""
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
private companion object {
|
||||
fun createMap(): AppendOnlyPersistentMap<SecureHash, StateMachineRunId, DBTransactionMapping, String> {
|
||||
|
@ -16,6 +16,7 @@ import net.corda.nodeapi.internal.persistence.wrapWithDatabaseTransaction
|
||||
import org.apache.commons.lang.ArrayUtils.EMPTY_BYTE_ARRAY
|
||||
import rx.Observable
|
||||
import rx.subjects.PublishSubject
|
||||
import java.io.Serializable
|
||||
import java.util.*
|
||||
import javax.persistence.*
|
||||
|
||||
@ -36,7 +37,7 @@ class DBTransactionStorage(cacheSizeBytes: Long) : WritableTransactionStorage, S
|
||||
@Lob
|
||||
@Column(name = "transaction_value")
|
||||
var transaction: ByteArray = EMPTY_BYTE_ARRAY
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
private companion object {
|
||||
fun createTransactionsMap(maxSizeInBytes: Long)
|
||||
|
@ -9,6 +9,7 @@ import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import org.slf4j.Logger
|
||||
import rx.subjects.PublishSubject
|
||||
import java.io.Serializable
|
||||
import javax.persistence.Column
|
||||
import javax.persistence.Entity
|
||||
import javax.persistence.Id
|
||||
@ -34,7 +35,7 @@ class NodePropertiesPersistentStore(readPhysicalNodeId: () -> String, persistenc
|
||||
|
||||
@Column(name = "property_value")
|
||||
var value: String? = ""
|
||||
)
|
||||
) : Serializable
|
||||
}
|
||||
|
||||
private class FlowsDrainingModeOperationsImpl(readPhysicalNodeId: () -> String, private val persistence: CordaPersistence, logger: Logger) : FlowsDrainingModeOperations {
|
||||
|
@ -18,6 +18,7 @@ import net.corda.core.utilities.contextLogger
|
||||
import net.corda.node.utilities.AppendOnlyPersistentMap
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import net.corda.nodeapi.internal.persistence.currentDBSession
|
||||
import java.io.Serializable
|
||||
import java.time.Clock
|
||||
import java.time.Instant
|
||||
import java.util.*
|
||||
@ -34,7 +35,7 @@ class PersistentUniquenessProvider(val clock: Clock) : UniquenessProvider, Singl
|
||||
|
||||
@Column(name = "consuming_transaction_id")
|
||||
val consumingTxHash: String
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
@Entity
|
||||
@javax.persistence.Table(name = "${NODE_DATABASE_PREFIX}notary_request_log")
|
||||
@ -56,7 +57,7 @@ class PersistentUniquenessProvider(val clock: Clock) : UniquenessProvider, Singl
|
||||
|
||||
@Column(name = "request_timestamp")
|
||||
var requestDate: Instant
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
@Entity
|
||||
@javax.persistence.Table(name = "${NODE_DATABASE_PREFIX}notary_committed_states")
|
||||
|
@ -32,6 +32,7 @@ import net.corda.nodeapi.internal.config.NodeSSLConfiguration
|
||||
import net.corda.nodeapi.internal.config.SSLConfiguration
|
||||
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import java.io.Serializable
|
||||
import java.nio.file.Path
|
||||
import java.time.Clock
|
||||
import java.util.concurrent.CompletableFuture
|
||||
@ -94,7 +95,7 @@ class RaftUniquenessProvider(
|
||||
var value: String = "",
|
||||
@Column(name = "raft_log_index")
|
||||
var index: Long = 0
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
/** Directory storing the Raft log and state machine snapshots */
|
||||
private val storagePath: Path = transportConfiguration.baseDirectory
|
||||
|
@ -6,6 +6,7 @@ import net.corda.core.node.services.ContractUpgradeService
|
||||
import net.corda.core.serialization.SingletonSerializeAsToken
|
||||
import net.corda.nodeapi.internal.persistence.NODE_DATABASE_PREFIX
|
||||
import net.corda.node.utilities.PersistentMap
|
||||
import java.io.Serializable
|
||||
import javax.persistence.Column
|
||||
import javax.persistence.Entity
|
||||
import javax.persistence.Id
|
||||
@ -23,7 +24,7 @@ class ContractUpgradeServiceImpl : ContractUpgradeService, SingletonSerializeAsT
|
||||
/** refers to the UpgradedContract class name*/
|
||||
@Column(name = "contract_class_name")
|
||||
var upgradedContractClassName: String = ""
|
||||
)
|
||||
) : Serializable
|
||||
|
||||
private companion object {
|
||||
fun createContractUpgradesMap(): PersistentMap<String, String, DBContractUpgrade, String> {
|
||||
|
@ -20,6 +20,7 @@ import org.hibernate.annotations.Cascade
|
||||
import org.hibernate.annotations.CascadeType
|
||||
import org.junit.Ignore
|
||||
import org.junit.Test
|
||||
import java.io.Serializable
|
||||
import javax.persistence.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
@ -141,7 +142,7 @@ object TestSchema : MappedSchema(SchemaFamily::class.java, 1, setOf(Parent::clas
|
||||
@Suppress("unused")
|
||||
@Entity
|
||||
@Table(name = "Children")
|
||||
class Child {
|
||||
class Child : Serializable {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "child_id", unique = true, nullable = false)
|
||||
|
Loading…
Reference in New Issue
Block a user