mirror of https://github.com/usbharu/Hideout.git
feat: OWLを使用してキューにいれることができるように
This commit is contained in:
parent
de4ad8ecfd
commit
918de02c86
|
@ -202,6 +202,7 @@ dependencies {
|
|||
implementation("org.springframework.boot:spring-boot-starter-log4j2")
|
||||
implementation("org.springframework.boot:spring-boot-starter-validation")
|
||||
|
||||
implementation("dev.usbharu:owl-common-serialize-jackson:0.0.1")
|
||||
implementation("io.trbl:blurhash:1.0.0")
|
||||
implementation("software.amazon.awssdk:s3:2.25.23")
|
||||
implementation("org.jsoup:jsoup:1.17.2")
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
package dev.usbharu.hideout.core.external.job
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Accept
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.property.*
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
|
@ -32,25 +32,39 @@ data class DeliverAcceptTask(
|
|||
@Component
|
||||
data object DeliverAcceptTaskDef : TaskDefinition<DeliverAcceptTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = "DeliverAccept"
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = 10
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = 5
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = ""
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = 1000
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = PropertyDefinition(
|
||||
mapOf(
|
||||
"accept" to PropertyType.binary,
|
||||
"inbox" to PropertyType.string,
|
||||
"signer" to PropertyType.number,
|
||||
)
|
||||
)
|
||||
override val type: Class<DeliverAcceptTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = DeliverAcceptTask::class.java
|
||||
|
||||
override fun serialize(task: DeliverAcceptTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
return mapOf(
|
||||
"accept" to ObjectPropertyValue(task.accept),
|
||||
"inbox" to StringPropertyValue(task.inbox),
|
||||
"signer" to LongPropertyValue(task.signer)
|
||||
)
|
||||
}
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): DeliverAcceptTask {
|
||||
TODO("Not yet implemented")
|
||||
return DeliverAcceptTask(
|
||||
value.getValue("accept").value as Accept,
|
||||
value.getValue("inbox").value as String,
|
||||
value.getValue("signer").value as Long,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
package dev.usbharu.hideout.core.external.job
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Create
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
import org.springframework.stereotype.Component
|
||||
|
@ -31,26 +29,7 @@ data class DeliverCreateTask(
|
|||
|
||||
@Component
|
||||
data object DeliverCreateTaskDef : TaskDefinition<DeliverCreateTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
override val type: Class<DeliverCreateTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = DeliverCreateTask::class.java
|
||||
|
||||
override fun serialize(task: DeliverCreateTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): DeliverCreateTask {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
package dev.usbharu.hideout.core.external.job
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Delete
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
import org.springframework.stereotype.Component
|
||||
|
@ -31,26 +29,7 @@ data class DeliverDeleteTask(
|
|||
|
||||
@Component
|
||||
data object DeliverDeleteTaskDef : TaskDefinition<DeliverDeleteTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
override val type: Class<DeliverDeleteTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = DeliverDeleteTask::class.java
|
||||
|
||||
override fun serialize(task: DeliverDeleteTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): DeliverDeleteTask {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
package dev.usbharu.hideout.core.external.job
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Like
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
import org.springframework.stereotype.Component
|
||||
|
@ -31,26 +29,6 @@ data class DeliverReactionTask(
|
|||
|
||||
@Component
|
||||
data object DeliverReactionTaskDef : TaskDefinition<DeliverReactionTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
override val type: Class<DeliverReactionTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): DeliverReactionTask {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun serialize(task: DeliverReactionTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
get() = DeliverReactionTask::class.java
|
||||
}
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
package dev.usbharu.hideout.core.external.job
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Reject
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
import org.springframework.stereotype.Component
|
||||
|
@ -31,26 +29,6 @@ data class DeliverRejectTask(
|
|||
|
||||
@Component
|
||||
data object DeliverRejectTaskDef : TaskDefinition<DeliverRejectTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
override val type: Class<DeliverRejectTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
|
||||
override fun serialize(task: DeliverRejectTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): DeliverRejectTask {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
get() = DeliverRejectTask::class.java
|
||||
}
|
|
@ -17,8 +17,6 @@
|
|||
package dev.usbharu.hideout.core.external.job
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Undo
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
import org.springframework.stereotype.Component
|
||||
|
@ -31,26 +29,7 @@ data class DeliverUndoTask(
|
|||
|
||||
@Component
|
||||
data object DeliverUndoTaskDef : TaskDefinition<DeliverUndoTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
override val type: Class<DeliverUndoTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = DeliverUndoTask::class.java
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): DeliverUndoTask {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun serialize(task: DeliverUndoTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,8 +18,6 @@ package dev.usbharu.hideout.core.external.job
|
|||
|
||||
import dev.usbharu.hideout.activitypub.service.common.ActivityType
|
||||
import dev.usbharu.httpsignature.common.HttpRequest
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
import org.springframework.stereotype.Component
|
||||
|
@ -33,26 +31,6 @@ data class InboxTask(
|
|||
|
||||
@Component
|
||||
data object InboxTaskDef : TaskDefinition<InboxTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
override val type: Class<InboxTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
|
||||
override fun serialize(task: InboxTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): InboxTask {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
get() = InboxTask::class.java
|
||||
}
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
package dev.usbharu.hideout.core.external.job
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.model.Follow
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.task.PropertyDefinition
|
||||
import dev.usbharu.owl.common.task.Task
|
||||
import dev.usbharu.owl.common.task.TaskDefinition
|
||||
import org.springframework.stereotype.Component
|
||||
|
@ -31,26 +29,7 @@ data class ReceiveFollowTask(
|
|||
|
||||
@Component
|
||||
data object ReceiveFollowTaskDef : TaskDefinition<ReceiveFollowTask> {
|
||||
override val name: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val priority: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val maxRetry: Int
|
||||
get() = TODO("Not yet implemented")
|
||||
override val retryPolicy: String
|
||||
get() = TODO("Not yet implemented")
|
||||
override val timeoutMilli: Long
|
||||
get() = TODO("Not yet implemented")
|
||||
override val propertyDefinition: PropertyDefinition
|
||||
get() = TODO("Not yet implemented")
|
||||
override val type: Class<ReceiveFollowTask>
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = ReceiveFollowTask::class.java
|
||||
|
||||
override fun deserialize(value: Map<String, PropertyValue<*>>): ReceiveFollowTask {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun serialize(task: ReceiveFollowTask): Map<String, PropertyValue<*>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ dependencies {
|
|||
testImplementation(kotlin("test"))
|
||||
implementation("dev.usbharu:owl-consumer:0.0.1")
|
||||
implementation("dev.usbharu:owl-common:0.0.1")
|
||||
implementation("dev.usbharu:owl-common-serialize-jackson:0.0.1")
|
||||
implementation("dev.usbharu:hideout-core:0.0.1")
|
||||
implementation("dev.usbharu:http-signature:1.0.0")
|
||||
implementation("org.springframework.boot:spring-boot-starter")
|
||||
|
|
|
@ -79,6 +79,7 @@ apache-tika = ["apache-tika-core", "apache-tika-parsers"]
|
|||
kjob = ["kjon-core", "kjon-mongo"]
|
||||
owl-producer = ["owl-producer-api", "owl-producer-default", "owl-producer-embedded"]
|
||||
owl-broker = ["owl-broker", "owl-broker-mongodb"]
|
||||
jackson = ["jackson-databind", "jackson-module-kotlin"]
|
||||
|
||||
[plugins]
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
plugins {
|
||||
kotlin("jvm")
|
||||
}
|
||||
|
||||
group = "dev.usbharu"
|
||||
version = "0.0.1"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":owl-common"))
|
||||
testImplementation(kotlin("test"))
|
||||
implementation(libs.bundles.jackson)
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
kotlin {
|
||||
jvmToolchain(21)
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu
|
||||
|
||||
fun main() {
|
||||
println("Hello World!")
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.owl.common.property
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
|
||||
class ObjectPropertyValue(override val value: Any) : PropertyValue<Any>() {
|
||||
override val type: PropertyType
|
||||
get() = PropertyType.string
|
||||
}
|
||||
|
||||
class ObjectPropertySerializer(private val objectMapper: ObjectMapper) : PropertySerializer<Any> {
|
||||
override fun isSupported(propertyValue: PropertyValue<*>): Boolean {
|
||||
return propertyValue is ObjectPropertyValue
|
||||
}
|
||||
|
||||
override fun isSupported(string: String): Boolean {
|
||||
return string.startsWith("jackson:")
|
||||
}
|
||||
|
||||
override fun serialize(propertyValue: PropertyValue<*>): String {
|
||||
return "jackson:" + propertyValue.value!!::class.qualifiedName + ":" + objectMapper.writeValueAsString(
|
||||
propertyValue.value
|
||||
)
|
||||
}
|
||||
|
||||
override fun deserialize(string: String): PropertyValue<Any> {
|
||||
|
||||
return ObjectPropertyValue(
|
||||
objectMapper.readValue(
|
||||
string,
|
||||
Class.forName(string.substringAfter("jackson:").substringBeforeLast(":"))
|
||||
)
|
||||
)
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.owl.common.property
|
||||
|
||||
class FloatPropertyValue(override val value: Float) : PropertyValue<Float>() {
|
||||
override val type: PropertyType
|
||||
get() = PropertyType.number
|
||||
}
|
||||
|
||||
/**
|
||||
* [FloatPropertyValue]のシリアライザー
|
||||
*
|
||||
*/
|
||||
class FloatPropertySerializer : PropertySerializer<Float> {
|
||||
override fun isSupported(propertyValue: PropertyValue<*>): Boolean {
|
||||
return propertyValue.value is Float
|
||||
}
|
||||
|
||||
override fun isSupported(string: String): Boolean {
|
||||
return string.startsWith("float:")
|
||||
}
|
||||
|
||||
override fun serialize(propertyValue: PropertyValue<*>): String {
|
||||
return "float:" + propertyValue.value.toString()
|
||||
}
|
||||
|
||||
override fun deserialize(string: String): PropertyValue<Float> {
|
||||
return FloatPropertyValue(string.replace("float:", "").toFloat())
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.owl.common.property
|
||||
|
||||
class LongPropertyValue(override val value: Long) : PropertyValue<Long>() {
|
||||
|
||||
override val type: PropertyType
|
||||
get() = PropertyType.number
|
||||
}
|
||||
|
||||
/**
|
||||
* [LongPropertyValue]のシリアライザー
|
||||
*
|
||||
*/
|
||||
class LongPropertySerializer : PropertySerializer<Long> {
|
||||
override fun isSupported(propertyValue: PropertyValue<*>): Boolean {
|
||||
return propertyValue.value is Long
|
||||
}
|
||||
|
||||
override fun isSupported(string: String): Boolean {
|
||||
return string.startsWith("int64:")
|
||||
}
|
||||
|
||||
override fun serialize(propertyValue: PropertyValue<*>): String {
|
||||
return "int64:" + propertyValue.value.toString()
|
||||
}
|
||||
|
||||
override fun deserialize(string: String): PropertyValue<Long> {
|
||||
return LongPropertyValue(string.replace("int64:", "").toLong())
|
||||
}
|
||||
}
|
|
@ -21,7 +21,7 @@ package dev.usbharu.owl.common.property
|
|||
*
|
||||
* @param T プロパティの型
|
||||
*/
|
||||
sealed class PropertyValue<T> {
|
||||
abstract class PropertyValue<T> {
|
||||
/**
|
||||
* プロパティ
|
||||
*/
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
package dev.usbharu.owl.common.task
|
||||
|
||||
import dev.usbharu.owl.common.property.PropertyValue
|
||||
import dev.usbharu.owl.common.property.*
|
||||
|
||||
/**
|
||||
* タスク定義
|
||||
|
@ -28,16 +28,19 @@ interface TaskDefinition<T : Task> {
|
|||
* タスク名
|
||||
*/
|
||||
val name: String
|
||||
get() = type.simpleName
|
||||
|
||||
/**
|
||||
* 優先度
|
||||
*/
|
||||
val priority: Int
|
||||
get() = 0
|
||||
|
||||
/**
|
||||
* 最大リトライ数
|
||||
*/
|
||||
val maxRetry: Int
|
||||
get() = 5
|
||||
|
||||
/**
|
||||
* リトライポリシー名
|
||||
|
@ -45,16 +48,31 @@ interface TaskDefinition<T : Task> {
|
|||
* ポリシーの解決は各Brokerに依存しています
|
||||
*/
|
||||
val retryPolicy: String
|
||||
get() = ""
|
||||
|
||||
/**
|
||||
* タスク実行時のタイムアウト(ミリ秒)
|
||||
*/
|
||||
val timeoutMilli: Long
|
||||
get() = 1000
|
||||
|
||||
/**
|
||||
* プロパティ定義
|
||||
*/
|
||||
val propertyDefinition: PropertyDefinition
|
||||
get() {
|
||||
val mapValues = type.fields.associate { it.name to it.type }.mapValues {
|
||||
when {
|
||||
it.value === Int::class.java -> PropertyType.number
|
||||
it.value === String::class.java -> PropertyType.string
|
||||
it.value === Long::class.java -> PropertyType.number
|
||||
it.value === Double::class.java -> PropertyType.number
|
||||
it.value === Float::class.java -> PropertyType.number
|
||||
else -> PropertyType.binary
|
||||
}
|
||||
}
|
||||
return PropertyDefinition(mapValues)
|
||||
}
|
||||
|
||||
/**
|
||||
* [Task]の[Class]
|
||||
|
@ -67,7 +85,19 @@ interface TaskDefinition<T : Task> {
|
|||
* @param task シリアライズするタスク
|
||||
* @return シリアライズされたタスク
|
||||
*/
|
||||
fun serialize(task: T): Map<String, PropertyValue<*>>
|
||||
fun serialize(task: T): Map<String, PropertyValue<*>> {
|
||||
return type.fields.associateBy { it.name }.mapValues {
|
||||
when {
|
||||
it.value.type === Int::class.java -> IntegerPropertyValue(it.value.getInt(task))
|
||||
it.value.type === String::class.java -> StringPropertyValue(it.value.get(task) as String)
|
||||
it.value.type === Long::class.java -> LongPropertyValue(it.value.getLong(task))
|
||||
it.value.type === Double::class.java -> DoublePropertyValue(it.value.getDouble(task))
|
||||
it.value.type === Float::class.java -> FloatPropertyValue(it.value.getFloat(task))
|
||||
it.value.type === Boolean::class.java -> BooleanPropertyValue(it.value.getBoolean(task))
|
||||
else -> throw IllegalArgumentException("Unsupported type ${it.value} in ${task.javaClass.name}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* タスクをデシリアライズします。
|
||||
|
@ -75,5 +105,21 @@ interface TaskDefinition<T : Task> {
|
|||
* @param value デシリアライズするタスク
|
||||
* @return デシリアライズされたタスク
|
||||
*/
|
||||
fun deserialize(value: Map<String, PropertyValue<*>>): T
|
||||
fun deserialize(value: Map<String, PropertyValue<*>>): T {
|
||||
|
||||
val task = type.getDeclaredConstructor().newInstance()
|
||||
|
||||
type.fields.associateBy { it.name }.mapValues {
|
||||
when {
|
||||
it.value.type === Int::class.java -> it.value.setInt(task, value.getValue(it.key).value as Int)
|
||||
it.value.type === Double::class.java -> it.value.setDouble(task, value.getValue(it.key).value as Double)
|
||||
it.value.type === Float::class.java -> it.value.setFloat(task, value.getValue(it.key).value as Float)
|
||||
it.value.type === String::class.java -> it.value.set(task, value.getValue(it.key).value as String)
|
||||
it.value.type === Long::class.java -> it.value.setLong(task, value.getValue(it.key).value as Long)
|
||||
else -> throw IllegalArgumentException("Unsupported type ${it.value} in ${task.javaClass.name}")
|
||||
}
|
||||
}
|
||||
|
||||
return task
|
||||
}
|
||||
}
|
|
@ -18,6 +18,7 @@ package dev.usbharu.owl.producer.embedded
|
|||
|
||||
import dev.usbharu.owl.broker.EmptyModuleContext
|
||||
import dev.usbharu.owl.common.retry.DefaultRetryPolicyFactory
|
||||
import dev.usbharu.owl.common.retry.ExponentialRetryPolicy
|
||||
import dev.usbharu.owl.producer.api.OwlProducerBuilder
|
||||
|
||||
class EmbeddedOwlProducerBuilder : OwlProducerBuilder<EmbeddedOwlProducer, EmbeddedOwlProducerConfig> {
|
||||
|
@ -28,7 +29,7 @@ class EmbeddedOwlProducerBuilder : OwlProducerBuilder<EmbeddedOwlProducer, Embed
|
|||
|
||||
with(embeddedOwlProducerConfig) {
|
||||
moduleContext = EmptyModuleContext
|
||||
retryPolicyFactory = DefaultRetryPolicyFactory(emptyMap())
|
||||
retryPolicyFactory = DefaultRetryPolicyFactory(mapOf("" to ExponentialRetryPolicy()))
|
||||
name = "embedded-owl-producer"
|
||||
port = "50051"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,17 @@
|
|||
plugins {
|
||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0"
|
||||
}
|
||||
dependencyResolutionManagement {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
versionCatalogs {
|
||||
create("libs") {
|
||||
from(files("../libs.versions.toml"))
|
||||
}
|
||||
}
|
||||
}
|
||||
rootProject.name = "owl"
|
||||
include("owl-common")
|
||||
include("owl-producer:owl-producer-api")
|
||||
|
@ -12,3 +23,5 @@ include("owl-producer:owl-producer-default")
|
|||
findProject(":owl-producer:owl-producer-default")?.name = "owl-producer-default"
|
||||
include("owl-consumer")
|
||||
include("owl-producer:owl-producer-embedded")
|
||||
include("owl-common:owl-common-serialize-jackson")
|
||||
findProject(":owl-common:owl-common-serialize-jackson")?.name = "owl-common-serialize-jackson"
|
||||
|
|
Loading…
Reference in New Issue