wip
This commit is contained in:
parent
3538e9e973
commit
fb0d3c41b6
|
@ -1,12 +1,13 @@
|
|||
package dev.usbharu.activitystreams.impl.builder
|
||||
|
||||
import dev.usbharu.activitystreams.impl.type.AbstractJsonObjectBuilder
|
||||
import dev.usbharu.activitystreams.impl.type.BuilderContext
|
||||
import dev.usbharu.activitystreams.impl.type.JsonObjectBuilder
|
||||
import dev.usbharu.activitystreams.model.JsonLd
|
||||
import java.net.URI
|
||||
|
||||
open class JsonLdBuilder : JsonObjectBuilder<JsonLd> {
|
||||
override fun build(t: JsonLd, jsonObject: Map<String, Any>, builderContext: BuilderContext) {
|
||||
open class JsonLdBuilder : AbstractJsonObjectBuilder<JsonLd>() {
|
||||
override fun internalBuild(t: JsonLd, jsonObject: Map<String, Any>, builderContext: BuilderContext) {
|
||||
t.value = jsonObject["@value"]
|
||||
t.id = jsonObject["@id"]?.toString()?.let { URI.create(it) }
|
||||
t.type = (jsonObject["@type"] as? List<String>).orEmpty().map { URI.create(it) }
|
||||
|
|
|
@ -1,13 +1,23 @@
|
|||
package dev.usbharu.activitystreams.impl.builder
|
||||
|
||||
import dev.usbharu.activitystreams.impl.type.AbstractJsonObjectBuilder
|
||||
import dev.usbharu.activitystreams.impl.type.BuilderContext
|
||||
import dev.usbharu.activitystreams.impl.type.JsonObjectBuilder
|
||||
import dev.usbharu.activitystreams.model.JsonLd
|
||||
import dev.usbharu.activitystreams.model.core.Object
|
||||
import dev.usbharu.activitystreams.model.other.LangString
|
||||
import java.net.URI
|
||||
|
||||
class ObjectBuilder : JsonObjectBuilder<Object> {
|
||||
open class ObjectBuilder : AbstractJsonObjectBuilder<Object>() {
|
||||
override fun build(t: Object, jsonObject: Map<String, Any>, builderContext: BuilderContext) {
|
||||
// t.name =
|
||||
}
|
||||
|
||||
override fun internalBuild(t: Object, jsonObject: Map<String, Any>, builderContext: BuilderContext) {
|
||||
val langString = builderContext.typeFactory().factory(URI.create("")) as LangString
|
||||
builderContext.getBuilder(LangString::class.java)
|
||||
.build(langString, jsonObject["https://www.w3.org/ns/activitystreams#name"], builderContext)
|
||||
t.name =
|
||||
}
|
||||
|
||||
}
|
|
@ -1,10 +1,16 @@
|
|||
package dev.usbharu.activitystreams.impl.model.other
|
||||
|
||||
import dev.usbharu.activitystreams.model.other.LangString
|
||||
import java.net.URI
|
||||
import java.util.*
|
||||
|
||||
class LangStringImpl(private val value: String?, private val map: Map<String, String>) : LangString {
|
||||
override fun getValue(): String? = value
|
||||
class LangStringImpl(
|
||||
override var value: Any?,
|
||||
private val map: Map<String, String>,
|
||||
override var type: List<URI> = emptyList(),
|
||||
override var id: URI? = null
|
||||
) : LangString {
|
||||
override fun getValue(): String? = value?.toString()
|
||||
|
||||
override fun getValueByLanguageTag(locale: Locale): String? = map[locale.toLanguageTag()]
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
package dev.usbharu.activitystreams.impl.type
|
||||
|
||||
abstract class AbstractJsonObjectBuilder<T : Any> : JsonObjectBuilder<T> {
|
||||
override fun build(t: T, jsonObject: Map<String, Any>, builderContext: BuilderContext) {
|
||||
val superclass = t.javaClass.superclass
|
||||
if (superclass != Any::class.java) {
|
||||
builderContext.getBuilder<T>(superclass).build(t, jsonObject, builderContext)
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract fun internalBuild(t: T, jsonObject: Map<String, Any>, builderContext: BuilderContext)
|
||||
}
|
|
@ -1,7 +1,13 @@
|
|||
package dev.usbharu.activitystreams.impl.type
|
||||
|
||||
import dev.usbharu.activitystreams.model.JsonLd
|
||||
|
||||
class BuilderContext {
|
||||
fun <T> getBuilder():JsonObjectBuilder<T>{
|
||||
fun <T : Any> getBuilder(clazz: Class<in T>): JsonObjectBuilder<T> {
|
||||
TODO()
|
||||
}
|
||||
|
||||
fun typeFactory(): TypeFactory {
|
||||
TODO()
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
package dev.usbharu.activitystreams.impl.type
|
||||
|
||||
interface JsonObjectBuilder<T> {
|
||||
interface JsonObjectBuilder<T:Any> {
|
||||
fun build(t: T, jsonObject: Map<String,Any>, builderContext: BuilderContext)
|
||||
}
|
||||
// todo Abstract classでスーパークラスのjsonobjectbuilderを自動で呼び出す部分を作る
|
Loading…
Reference in New Issue