diff --git a/src/main/kotlin/fr/postgresjson/entity/Entity.kt b/src/main/kotlin/fr/postgresjson/entity/Entity.kt index f770ece..83778d3 100644 --- a/src/main/kotlin/fr/postgresjson/entity/Entity.kt +++ b/src/main/kotlin/fr/postgresjson/entity/Entity.kt @@ -47,47 +47,45 @@ class EntityCreatedAtImp: EntityCreatedAt { class EntityUpdatedAtImp: EntityUpdatedAt { override var updatedAt: DateTime? = null } - interface User: EntityI { - fun isValid(): Boolean } /* Author */ -interface CreatedBy { - var createdBy: User? +interface CreatedBy> { + var createdBy: T? } -interface UpdatedBy { - var updatedBy: User? +interface UpdatedBy> { + var updatedBy: T? } -class EntityCreatedByImp: CreatedBy { - override var createdBy: User? = null +class EntityCreatedByImp>: CreatedBy { + override var createdBy: UserT? = null } -class EntityUpdatedByImp: UpdatedBy { - override var updatedBy: User? = null +class EntityUpdatedByImp>: UpdatedBy { + override var updatedBy: UserT? = null } /* Published */ -interface Published { +interface Published> { var publishedAt: DateTime? - var publishedBy: User? + var publishedBy: UserT? } -class EntityPublishedImp: Published { +class EntityPublishedImp>: Published { override var publishedAt: DateTime? = null - override var publishedBy: User? = null + override var publishedBy: UserT? = null } /* Implementation */ -abstract class EntityImp: Entity(), +abstract class EntityImp>: Entity(), EntityCreatedAt by EntityCreatedAtImp(), EntityUpdatedAt by EntityUpdatedAtImp(), CreatedBy by EntityCreatedByImp(), UpdatedBy by EntityUpdatedByImp() -abstract class EntityExtended: +abstract class EntityExtended>: EntityImp(), EntityVersioningIncrement by EntityVersioningIncrementImp(), Published by EntityPublishedImp() diff --git a/src/test/kotlin/fr/postgresjson/EntityTest.kt b/src/test/kotlin/fr/postgresjson/EntityTest.kt index 074a26e..8e0840f 100644 --- a/src/test/kotlin/fr/postgresjson/EntityTest.kt +++ b/src/test/kotlin/fr/postgresjson/EntityTest.kt @@ -7,18 +7,19 @@ import org.junit.jupiter.api.TestInstance @TestInstance(TestInstance.Lifecycle.PER_CLASS) class EntityTest() { - private class ObjTest(var name: String): EntityExtended() + private class User(override var id: Int?): fr.postgresjson.entity.User + private class ObjTest(var name: String): EntityExtended() @Test fun getObject() { val obj: ObjTest? = ObjTest("plop") assertTrue(obj is ObjTest) - assertTrue(obj is EntityExtended) + assertTrue(obj is EntityExtended) assertTrue(obj is EntityI) assertTrue(obj is Entity) - assertTrue(obj is Published) - assertTrue(obj is CreatedBy) - assertTrue(obj is UpdatedBy) + assertTrue(obj is Published) + assertTrue(obj is CreatedBy) + assertTrue(obj is UpdatedBy) assertTrue(obj is EntityCreatedAt) assertTrue(obj is EntityUpdatedAt) }