diff --git a/.idea/runConfigurations/Publish_To_MavenLocal.xml b/.idea/runConfigurations/Publish_To_MavenLocal.xml
new file mode 100644
index 0000000..3586d59
--- /dev/null
+++ b/.idea/runConfigurations/Publish_To_MavenLocal.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Test_and_Publish_To_MavenLocal.xml b/.idea/runConfigurations/Test_and_Publish_To_MavenLocal.xml
new file mode 100644
index 0000000..d46eeca
--- /dev/null
+++ b/.idea/runConfigurations/Test_and_Publish_To_MavenLocal.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/tests.xml b/.idea/runConfigurations/tests.xml
index b2211a4..7c22ae8 100644
--- a/.idea/runConfigurations/tests.xml
+++ b/.idea/runConfigurations/tests.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/src/main/kotlin/fr/postgresjson/entity/EntitiesCollections.kt b/src/main/kotlin/fr/postgresjson/entity/EntitiesCollections.kt
index ad99307..e9b7ede 100644
--- a/src/main/kotlin/fr/postgresjson/entity/EntitiesCollections.kt
+++ b/src/main/kotlin/fr/postgresjson/entity/EntitiesCollections.kt
@@ -5,13 +5,13 @@ import kotlin.reflect.KClass
class EntitiesCollections {
private val collections: MutableMap, EntityCollection>> = mutableMapOf()
- fun > get(id: I, className: KClass): R? {
+ fun > get(id: I, className: KClass): R? {
val collection = collections[className]
val entity = collection?.get(id!!)
return entity as R?
}
- inline fun > get(id: I): R? {
+ inline fun > get(id: I): R? {
return get(id, R::class)
}
diff --git a/src/main/kotlin/fr/postgresjson/entity/Entity.kt b/src/main/kotlin/fr/postgresjson/entity/Entity.kt
index a220a37..e7dcf8c 100644
--- a/src/main/kotlin/fr/postgresjson/entity/Entity.kt
+++ b/src/main/kotlin/fr/postgresjson/entity/Entity.kt
@@ -8,13 +8,13 @@ import kotlin.reflect.KClass
/* ID */
interface EntityI {
var id: T?
- val className: KClass>
- @JsonIgnore() get() = this::class as KClass>
+ val className: KClass>
+ @JsonIgnore() get() = this::class as KClass>
}
-abstract class Entity(override var id: T? = null): EntityI
-abstract class UuidEntity(override var id: UUID? = UUID.randomUUID()): Entity(id)
-abstract class IdEntity(override var id: Int? = null): Entity(id)
+abstract class Entity(override var id: T? = null): EntityI
+abstract class UuidEntity(override var id: UUID? = UUID.randomUUID()): Entity(id)
+abstract class IdEntity(override var id: Int? = null): Entity(id)
/* Version */
interface EntityVersioning {
@@ -53,13 +53,13 @@ interface UpdatedBy> {
var updatedBy: T?
}
-class EntityCreatedByImp>: CreatedBy {
- override var createdBy: UserT? = null
-}
+class EntityCreatedByImp>(
+ override var createdBy: UserT?
+): CreatedBy
-class EntityUpdatedByImp>: UpdatedBy {
- override var updatedBy: UserT? = null
-}
+class EntityUpdatedByImp>(
+ override var updatedBy: UserT?
+): UpdatedBy
/* Published */
interface Published> {
@@ -67,19 +67,25 @@ interface Published> {
var publishedBy: UserT?
}
-class EntityPublishedImp>: Published {
+class EntityPublishedImp>(
+ override var publishedBy: UserT?
+): Published {
override var publishedAt: DateTime? = null
- override var publishedBy: UserT? = null
}
/* Implementation */
-abstract class EntityImp>: Entity(),
+abstract class EntityImp>(
+ updatedBy: UserT?
+): Entity(),
EntityCreatedAt by EntityCreatedAtImp(),
EntityUpdatedAt by EntityUpdatedAtImp(),
- CreatedBy by EntityCreatedByImp(),
- UpdatedBy by EntityUpdatedByImp()
+ CreatedBy by EntityCreatedByImp(updatedBy),
+ UpdatedBy by EntityUpdatedByImp(updatedBy)
-abstract class EntityExtended>:
- EntityImp(),
+abstract class UuidEntityExtended>(
+ updatedBy: UserT?,
+ publishedBy: UserT?
+):
+ EntityImp(updatedBy),
EntityVersioning by UuidEntityVersioning(),
- Published by EntityPublishedImp()
+ Published by EntityPublishedImp(publishedBy)
diff --git a/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt b/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt
index 6b5df87..7cf456e 100644
--- a/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt
+++ b/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt
@@ -58,7 +58,7 @@ class Serializer(val mapper: ObjectMapper = jacksonObjectMapper()) {
}
}
-fun EntityI.serialize(pretty: Boolean = false) = Serializer().serialize(this, pretty)
+fun EntityI.serialize(pretty: Boolean = false) = Serializer().serialize(this, pretty)
inline fun > E.deserialize(json: String) = Serializer().deserialize(json, this)
inline fun > String.deserialize() = Serializer().deserialize(this)
@@ -92,9 +92,9 @@ class EntityIdDeserializer @JvmOverloads constructor(vc: Class<*>?
override fun deserialize(jp: JsonParser, ctxt: DeserializationContext): T {
val node = jp.codec.readTree(jp)
val id = node.get("id").asInt()
- val entity = collection.get(id)
+ val entity = collection.get(id)
- val obj = (entity ?: ctxt.readValue(jp, UuidEntity::class.javaObjectType)) as EntityI
+ val obj = (entity ?: ctxt.readValue(jp, UuidEntity::class.javaObjectType)) as EntityI
collection.set(obj)
return obj as T
diff --git a/src/test/kotlin/fr/postgresjson/EntityTest.kt b/src/test/kotlin/fr/postgresjson/EntityTest.kt
index 441873e..87e812d 100644
--- a/src/test/kotlin/fr/postgresjson/EntityTest.kt
+++ b/src/test/kotlin/fr/postgresjson/EntityTest.kt
@@ -8,13 +8,13 @@ import org.junit.jupiter.api.TestInstance
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class EntityTest() {
private class User(override var id: Int?): EntityI
- private class ObjTest(var name: String): EntityExtended()
+ private class ObjTest(var name: String): UuidEntityExtended(User(1), User(2))
@Test
fun getObject() {
val obj: ObjTest? = ObjTest("plop")
assertTrue(obj is ObjTest)
- assertTrue(obj is EntityExtended)
+ assertTrue(obj is UuidEntityExtended)
assertTrue(obj is EntityI)
assertTrue(obj is Entity)
assertTrue(obj is Published)