diff --git a/src/main/kotlin/dev/usbharu/activitystreams/impl/model/activity/CreateImpl.kt b/src/main/kotlin/dev/usbharu/activitystreams/impl/model/activity/CreateImpl.kt index 65c59a1..c09b879 100644 --- a/src/main/kotlin/dev/usbharu/activitystreams/impl/model/activity/CreateImpl.kt +++ b/src/main/kotlin/dev/usbharu/activitystreams/impl/model/activity/CreateImpl.kt @@ -1,6 +1,7 @@ package dev.usbharu.activitystreams.impl.model.activity import dev.usbharu.activitystreams.model.ImageOrLink +import dev.usbharu.activitystreams.model.JsonLdWrapper import dev.usbharu.activitystreams.model.ObjectOrLink import dev.usbharu.activitystreams.model.UriOrLink import dev.usbharu.activitystreams.model.activity.Create @@ -12,39 +13,40 @@ import java.time.Duration import java.time.OffsetDateTime class CreateImpl( - override var type: List, - override var `object`: ObjectOrLink?, - override var actor: List, - override var target: List, - override var result: ObjectOrLink?, - override var origin: ObjectOrLink?, - override var instrument: ObjectOrLink?, - override var attachment: List, - override var attributedTo: List, - override var audience: List, - override var content: LangString?, - override var context: List, - override var name: LangString?, - override var endTime: OffsetDateTime?, - override var generator: List, - override var icon: List, - override var image: List, - override var inReplyTo: List, - override var location: ObjectOrLink?, - override var preview: ObjectOrLink?, - override var published: OffsetDateTime?, - override var replies: Collection?, - override var startTime: OffsetDateTime?, - override var summary: LangString?, - override var tag: List, - override var updated: OffsetDateTime?, - override var url: List, - override var to: List, - override var bto: List, - override var cc: List, - override var bcc: List, - override var mediaType: MimeMediaType?, - override var duration: Duration?, - override var id: URI?, - override var source: ObjectOrLink? + override var type: List = emptyList(), + override var `object`: ObjectOrLink? = null, + override var actor: List = emptyList(), + override var target: List = emptyList(), + override var result: ObjectOrLink? = null, + override var origin: ObjectOrLink? = null, + override var instrument: ObjectOrLink? = null, + override var attachment: List = emptyList(), + override var attributedTo: List = emptyList(), + override var audience: List = emptyList(), + override var content: LangString? = null, + override var context: List = emptyList(), + override var name: LangString? = null, + override var endTime: JsonLdWrapper? = null, + override var generator: List = emptyList(), + override var icon: List = emptyList(), + override var image: List = emptyList(), + override var inReplyTo: List = emptyList(), + override var location: ObjectOrLink? = null, + override var preview: ObjectOrLink? = null, + override var published: JsonLdWrapper? = null, + override var replies: Collection? = null, + override var startTime: JsonLdWrapper? = null, + override var summary: LangString? = null, + override var tag: List = emptyList(), + override var updated: JsonLdWrapper? = null, + override var url: List = emptyList(), + override var to: List = emptyList(), + override var bto: List = emptyList(), + override var cc: List = emptyList(), + override var bcc: List = emptyList(), + override var mediaType: MimeMediaType? = null, + override var duration: JsonLdWrapper? = null, + override var id: URI? = null, + override var source: ObjectOrLink? = null, + override var value: Any? = null, ) : Create \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/activitystreams/impl/model/actor/PersonImpl.kt b/src/main/kotlin/dev/usbharu/activitystreams/impl/model/actor/PersonImpl.kt index c9fa848..bc52652 100644 --- a/src/main/kotlin/dev/usbharu/activitystreams/impl/model/actor/PersonImpl.kt +++ b/src/main/kotlin/dev/usbharu/activitystreams/impl/model/actor/PersonImpl.kt @@ -1,6 +1,7 @@ package dev.usbharu.activitystreams.impl.model.actor import dev.usbharu.activitystreams.model.ImageOrLink +import dev.usbharu.activitystreams.model.JsonLdWrapper import dev.usbharu.activitystreams.model.ObjectOrLink import dev.usbharu.activitystreams.model.UriOrLink import dev.usbharu.activitystreams.model.actor.Person @@ -12,50 +13,51 @@ import java.time.Duration import java.time.OffsetDateTime class PersonImpl( - override var type: List, - override var attachment: List, - override var attributedTo: List, - override var audience: List, - override var content: LangString?, - override var context: List, - override var name: LangString?, - override var endTime: OffsetDateTime?, - override var generator: List, - override var icon: List, - override var image: List, - override var inReplyTo: List, - override var location: ObjectOrLink?, - override var preview: ObjectOrLink?, - override var published: OffsetDateTime?, - override var replies: Collection?, - override var startTime: OffsetDateTime?, - override var summary: LangString?, - override var tag: List, - override var updated: OffsetDateTime?, - override var url: List, - override var to: List, - override var bto: List, - override var cc: List, - override var bcc: List, - override var mediaType: MimeMediaType?, - override var duration: Duration?, - override var id: URI?, - override var source: ObjectOrLink?, - override var endpoints: List, - override var following: URI?, - override var followers: URI?, - override var inbox: URI?, - override var outbox: URI?, - override var liked: URI?, - override var shared: URI?, - override var likes: URI?, - override var oauthAuthorizationEndpoint: URI?, - override var oauthTokenEndpoint: URI?, - override var preferredUsername: String?, - override var provideClientKey: URI?, - override var proxyUrl: URI?, - override var sharedInbox: URI?, - override var signClientKey: URI?, - override var streams: URI?, - override var alsoKnownAs: List + override var type: List = emptyList(), + override var attachment: List = emptyList(), + override var attributedTo: List = emptyList(), + override var audience: List = emptyList(), + override var content: LangString? = null, + override var context: List = emptyList(), + override var name: LangString? = null, + override var endTime: JsonLdWrapper? = null, + override var generator: List = emptyList(), + override var icon: List = emptyList(), + override var image: List = emptyList(), + override var inReplyTo: List = emptyList(), + override var location: ObjectOrLink? = null, + override var preview: ObjectOrLink? = null, + override var published: JsonLdWrapper? = null, + override var replies: Collection? = null, + override var startTime: JsonLdWrapper? = null, + override var summary: LangString? = null, + override var tag: List = emptyList(), + override var updated: JsonLdWrapper? = null, + override var url: List = emptyList(), + override var to: List = emptyList(), + override var bto: List = emptyList(), + override var cc: List = emptyList(), + override var bcc: List = emptyList(), + override var mediaType: MimeMediaType? = null, + override var duration: JsonLdWrapper? = null, + override var id: URI? = null, + override var source: ObjectOrLink? = null, + override var endpoints: List = emptyList(), + override var following: URI? = null, + override var followers: URI? = null, + override var inbox: URI? = null, + override var outbox: URI? = null, + override var liked: URI? = null, + override var shared: URI? = null, + override var likes: URI? = null, + override var oauthAuthorizationEndpoint: URI? = null, + override var oauthTokenEndpoint: URI? = null, + override var preferredUsername: String? = null, + override var provideClientKey: URI? = null, + override var proxyUrl: URI? = null, + override var sharedInbox: URI? = null, + override var signClientKey: URI? = null, + override var streams: URI? = null, + override var alsoKnownAs: List = emptyList(), + override var value: Any? = null ) : Person \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/activitystreams/impl/type/TypeFactory.kt b/src/main/kotlin/dev/usbharu/activitystreams/impl/type/TypeFactory.kt index fc3554e..0dd2cf8 100644 --- a/src/main/kotlin/dev/usbharu/activitystreams/impl/type/TypeFactory.kt +++ b/src/main/kotlin/dev/usbharu/activitystreams/impl/type/TypeFactory.kt @@ -1,10 +1,16 @@ package dev.usbharu.activitystreams.impl.type +import dev.usbharu.activitystreams.impl.model.activity.CreateImpl import dev.usbharu.activitystreams.model.JsonLd import java.net.URI class TypeFactory { - fun factory(uri: String): List { + val map = mutableMapOf JsonLd>( + URI.create("https://www.w3.org/ns/activitystreams#Create") to { CreateImpl() } + ) + + fun factory(uri: URI): JsonLd? { + return map[uri]?.invoke() } } \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/activitystreams/model/JsonLd.kt b/src/main/kotlin/dev/usbharu/activitystreams/model/JsonLd.kt index ac7ed70..c7464fb 100644 --- a/src/main/kotlin/dev/usbharu/activitystreams/model/JsonLd.kt +++ b/src/main/kotlin/dev/usbharu/activitystreams/model/JsonLd.kt @@ -5,5 +5,5 @@ import java.net.URI interface JsonLd { var type: List var id: URI? - var value: Any + var value: Any? } \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/activitystreams/model/JsonLdWrapper.kt b/src/main/kotlin/dev/usbharu/activitystreams/model/JsonLdWrapper.kt new file mode 100644 index 0000000..21f9dc4 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/activitystreams/model/JsonLdWrapper.kt @@ -0,0 +1,7 @@ +package dev.usbharu.activitystreams.model + +import java.net.URI + +class JsonLdWrapper(override var type: List, override var id: URI?, value: T?) : JsonLd { + override var value: Any? = value +} \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/activitystreams/model/core/Object.kt b/src/main/kotlin/dev/usbharu/activitystreams/model/core/Object.kt index 252e879..1bcfc2e 100644 --- a/src/main/kotlin/dev/usbharu/activitystreams/model/core/Object.kt +++ b/src/main/kotlin/dev/usbharu/activitystreams/model/core/Object.kt @@ -1,11 +1,9 @@ package dev.usbharu.activitystreams.model.core -import dev.usbharu.activitystreams.model.ImageOrLink -import dev.usbharu.activitystreams.model.JsonLd -import dev.usbharu.activitystreams.model.ObjectOrLink -import dev.usbharu.activitystreams.model.UriOrLink +import dev.usbharu.activitystreams.model.* import dev.usbharu.activitystreams.model.other.LangString import dev.usbharu.activitystreams.model.other.MimeMediaType +import java.net.URI import java.time.Duration import java.time.OffsetDateTime @@ -16,25 +14,25 @@ interface Object : ObjectOrLink, JsonLd { var content: LangString? var context: List var name: LangString? - var endTime: OffsetDateTime? + var endTime: JsonLdWrapper? var generator: List var icon: List var image: List var inReplyTo: List var location: ObjectOrLink? var preview: ObjectOrLink? - var published: OffsetDateTime? + var published: JsonLdWrapper? var replies: Collection? - var startTime: OffsetDateTime? + var startTime: JsonLdWrapper? var summary: LangString? var tag: List - var updated: OffsetDateTime? + var updated: JsonLdWrapper? var url: List var to: List var bto: List var cc: List var bcc: List var mediaType: MimeMediaType? - var duration: Duration? + var duration: JsonLdWrapper? var source: ObjectOrLink? } \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/activitystreams/model/other/LangString.kt b/src/main/kotlin/dev/usbharu/activitystreams/model/other/LangString.kt index 1a0b9a7..568e2cd 100644 --- a/src/main/kotlin/dev/usbharu/activitystreams/model/other/LangString.kt +++ b/src/main/kotlin/dev/usbharu/activitystreams/model/other/LangString.kt @@ -1,8 +1,9 @@ package dev.usbharu.activitystreams.model.other +import dev.usbharu.activitystreams.model.JsonLd import java.util.Locale -interface LangString : Map { +interface LangString : Map,JsonLd { fun getValue(): String? fun getValueByLanguageTag(locale: Locale): String? } \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/activitystreams/model/other/MimeMediaType.kt b/src/main/kotlin/dev/usbharu/activitystreams/model/other/MimeMediaType.kt index fbf8ebb..155a011 100644 --- a/src/main/kotlin/dev/usbharu/activitystreams/model/other/MimeMediaType.kt +++ b/src/main/kotlin/dev/usbharu/activitystreams/model/other/MimeMediaType.kt @@ -1,4 +1,6 @@ package dev.usbharu.activitystreams.model.other -interface MimeMediaType { +import dev.usbharu.activitystreams.model.JsonLd + +interface MimeMediaType : JsonLd { } \ No newline at end of file