Object reference delegate
This commit is contained in:
@@ -3,7 +3,7 @@ package nl.astraeus.persistence
|
||||
import nl.astraeus.nl.astraeus.persistence.Persistable
|
||||
import nl.astraeus.nl.astraeus.persistence.Persistent
|
||||
import nl.astraeus.nl.astraeus.persistence.TransactionLog
|
||||
import nl.astraeus.nl.astraeus.persistence.currentTransaction
|
||||
import nl.astraeus.nl.astraeus.persistence.reference.reference
|
||||
import nl.astraeus.nl.astraeus.persistence.reference.referenceCollection
|
||||
import java.io.File
|
||||
import kotlin.test.Test
|
||||
@@ -31,23 +31,15 @@ class TestReferences {
|
||||
override var version: Long = 0,
|
||||
val name: String,
|
||||
val age: Int,
|
||||
private var companyId: Long? = null
|
||||
) : Persistable, Cloneable {
|
||||
var company: Company?
|
||||
get() = currentTransaction()?.find(Company::class, companyId ?: 0L)
|
||||
set(value) {
|
||||
if (value != null) {
|
||||
currentTransaction()?.store(value)
|
||||
}
|
||||
companyId = value?.id
|
||||
}
|
||||
var company: Company? by reference()
|
||||
|
||||
companion object {
|
||||
private const val serialVersionUID: Long = 1L
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "Person(id=$id, version=$version, name='$name', age=$age, company=$companyId)"
|
||||
return "Person(id=$id, version=$version, name='$name', age=$age, company=$company)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +71,10 @@ class TestReferences {
|
||||
person.company = company
|
||||
store(person)
|
||||
company.persons.add(person)
|
||||
} else {
|
||||
for (person in company.persons) {
|
||||
println("Found stored Person: $person")
|
||||
}
|
||||
}
|
||||
|
||||
store(company)
|
||||
|
||||
Reference in New Issue
Block a user