diff --git a/src/gaea.app/build.gradle b/src/gaea.app/build.gradle index 7bd8649..245325f 100644 --- a/src/gaea.app/build.gradle +++ b/src/gaea.app/build.gradle @@ -1,7 +1,6 @@ dependencies { compile project(":src:gaea") compile("org.springframework.boot:spring-boot-starter-web:$spring_version") - compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6' compile group: 'net.sf.dozer', name: 'dozer', version: '5.5.1' } diff --git a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/CommandApp.kt b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/CommandApp.kt index 4e10d9e..faf9d6b 100644 --- a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/CommandApp.kt +++ b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/CommandApp.kt @@ -1,8 +1,10 @@ package com.synebula.gaea.app +import com.synebula.gaea.data.serialization.json.IJsonSerializer import com.synebula.gaea.domain.service.ICommand import com.synebula.gaea.domain.service.IService import com.synebula.gaea.log.ILogger +import javax.annotation.Resource /** * 指令服务,同时实现ICommandApp @@ -15,4 +17,6 @@ open class CommandApp( override var name: String, override var service: IService?, override var logger: ILogger) : ICommandApp { + @Resource + override var jsonSerializer: IJsonSerializer? = null } \ No newline at end of file diff --git a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/ICommandApp.kt b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/ICommandApp.kt index 91e6c87..69eedfc 100644 --- a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/ICommandApp.kt +++ b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/ICommandApp.kt @@ -2,24 +2,27 @@ package com.synebula.gaea.app import com.synebula.gaea.app.component.HttpMessage import com.synebula.gaea.data.message.Status +import com.synebula.gaea.data.serialization.json.IJsonSerializer import com.synebula.gaea.domain.service.ICommand import com.synebula.gaea.domain.service.IService import org.springframework.web.bind.annotation.* +import javax.annotation.Resource /** * 应用类接口,提供向Command服务的接口 * * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ interface ICommandApp : IApplication { + var jsonSerializer: IJsonSerializer? var service: IService? @PostMapping fun add(@RequestBody command: TCommand): HttpMessage { - return this.throwExecute("${this.name}添加失败") { + return this.throwExecute("添加${this.name}数据失败 - ${if (jsonSerializer != null) jsonSerializer?.serialize(command) else ""}") { if (this.service != null) { val msg = this.service!!.add(command) it.load(msg) @@ -32,7 +35,7 @@ interface ICommandApp : IApplication { @DeleteMapping("/{key:.+}") fun remove(@PathVariable key: TKey): HttpMessage { - return this.throwExecute("${this.name}删除失败") { + return this.throwExecute("删除${this.name}失败[Key: $key]") { if (this.service != null) it.data = this.service!!.remove(key) else { @@ -44,7 +47,7 @@ interface ICommandApp : IApplication { @PutMapping("/{key:.+}") fun update(@PathVariable key: TKey, @RequestBody command: TCommand): HttpMessage { - return this.throwExecute("${this.name}更新失败") { + return this.throwExecute("更新${this.name}失败 - ${if (jsonSerializer != null) jsonSerializer?.serialize(command) else ""}") { if (this.service != null) this.service!!.update(key, command) else { diff --git a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryApp.kt b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryApp.kt index 822cdcc..58d5a14 100644 --- a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryApp.kt +++ b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryApp.kt @@ -10,11 +10,12 @@ import org.springframework.web.bind.annotation.RequestParam /** * 应用类接口,提供实现Query服务的接口 - * 依赖查询接口 @see IQuery + * 依赖查询接 return this.safeExecute("获取${this.name}数据失败") { +口 @see IQuery * * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ interface IQueryApp : IApplication { /** @@ -24,7 +25,7 @@ interface IQueryApp : IApplication { @GetMapping("/{key:.+}") fun get(@PathVariable key: TKey): HttpMessage { - return this.safeExecute("${this.name}获取数据失败") { + return this.safeExecute("获取${this.name}数据失败") { if (this.query != null) it.data = this.query!!.get(key) else { @@ -36,7 +37,7 @@ interface IQueryApp : IApplication { @GetMapping fun list(@RequestParam parameters: MutableMap): HttpMessage { - return this.safeExecute("${this.name}获取数据失败") { + return this.safeExecute("获取${this.name}列表数据失败") { if (this.query != null) it.data = this.query!!.list(parameters) else { @@ -48,7 +49,7 @@ interface IQueryApp : IApplication { @GetMapping("/split/{size}/pages/{page}") fun paging(@PathVariable page: Int, @PathVariable size: Int, @RequestParam parameters: MutableMap): HttpMessage { - return this.safeExecute("${this.name}获取分页数据失败") { + return this.safeExecute("获取${this.name}分页数据[条数:$size,页码:$page]失败") { if (this.query != null) { val params = PagingParam(page, size) params.parameters = parameters diff --git a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryTypedApp.kt b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryTypedApp.kt index bfbdc0a..1702abc 100644 --- a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryTypedApp.kt +++ b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/IQueryTypedApp.kt @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam * * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ interface IQueryTypedApp : IApplication { /** @@ -23,11 +23,14 @@ interface IQueryTypedApp : IApplication { */ var query: IQueryTyped? + /** + * 查询的View类型 + */ var viewClass: Class @GetMapping("/{key:.+}") fun get(@PathVariable key: TKey): HttpMessage { - return this.safeExecute("${this.name}获取数据失败") { + return this.safeExecute("获取${this.name}数据失败") { if (this.query != null) it.data = this.query!!.get(key, viewClass) else { @@ -39,7 +42,7 @@ interface IQueryTypedApp : IApplication { @GetMapping fun list(@RequestParam parameters: MutableMap): HttpMessage { - return this.safeExecute("${this.name}获取数据失败") { + return this.safeExecute("获取${this.name}列表数据失败") { if (this.query != null) it.data = this.query!!.list(parameters, viewClass) else { @@ -51,7 +54,7 @@ interface IQueryTypedApp : IApplication { @GetMapping("/split/{size}/pages/{page}") fun paging(@PathVariable page: Int, @PathVariable size: Int, @RequestParam parameters: MutableMap): HttpMessage { - return this.safeExecute("${this.name}获取分页数据失败") { + return this.safeExecute("获取${this.name}分页数据[条数:$size,页码:$page]失败") { if (this.query != null) { val params = PagingParam(page, size) params.parameters = parameters diff --git a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionApp.kt b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionApp.kt index b4fc296..2cd5c2d 100644 --- a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionApp.kt +++ b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionApp.kt @@ -1,9 +1,11 @@ package com.synebula.gaea.app +import com.synebula.gaea.data.serialization.json.IJsonSerializer import com.synebula.gaea.domain.service.ICommand import com.synebula.gaea.domain.service.IService import com.synebula.gaea.log.ILogger import com.synebula.gaea.query.IQuery +import javax.annotation.Resource /** * 联合服务,同时实现了ICommandApp和IQueryApp接口 @@ -19,4 +21,7 @@ open class UnionApp( override var query: IQuery?, override var logger: ILogger) : ICommandApp, IQueryApp { + + @Resource + override var jsonSerializer: IJsonSerializer? = null } \ No newline at end of file diff --git a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionTypedApp.kt b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionTypedApp.kt index 5dd61a5..984b0fc 100644 --- a/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionTypedApp.kt +++ b/src/gaea.app/src/main/kotlin/com/synebula/gaea/app/UnionTypedApp.kt @@ -1,10 +1,12 @@ package com.synebula.gaea.app +import com.synebula.gaea.data.serialization.json.IJsonSerializer import com.synebula.gaea.domain.service.ICommand import com.synebula.gaea.domain.service.IService import com.synebula.gaea.log.ILogger import com.synebula.gaea.query.IQuery import com.synebula.gaea.query.IQueryTyped +import javax.annotation.Resource /** * 联合服务,同时实现了ICommandApp和IQueryApp接口 @@ -21,4 +23,7 @@ open class UnionTypedApp( override var query: IQueryTyped?, override var logger: ILogger) : ICommandApp, IQueryTypedApp { + + @Resource + override var jsonSerializer: IJsonSerializer? = null } \ No newline at end of file diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/IObjectConverter.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/IObjectConverter.kt index a375a88..3deb5f2 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/data/IObjectConverter.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/IObjectConverter.kt @@ -5,7 +5,7 @@ package com.synebula.gaea.data * * @author alex * @version 0.1 - * @since 2018 18-2-2 + * @since 2020-05-15 */ interface IObjectConverter { diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/code/SnowflakeCode.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/code/SnowflakeCode.kt index cfe85ad..3e1c6f1 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/data/code/SnowflakeCode.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/code/SnowflakeCode.kt @@ -5,7 +5,7 @@ package com.synebula.gaea.data.code * * @author alex * @version 0.1 - * @since 2018 18-2-1 + * @since 2020-05-15 * * * Twitter_Snowflake

diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/AbstractJsonSerializer.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/AbstractJsonSerializer.kt deleted file mode 100644 index 2a285b5..0000000 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/AbstractJsonSerializer.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.synebula.gaea.data.serializable - -abstract class AbstractJsonSerializer : IJsonSerializable { - - protected lateinit var data: Any - - - /** - * 序列化data数据。 - * 实现的serialize方法必须序列化data对象。 - * - * @param data 需要序列号的数据。 - * @return 序列化后的json数据。 - */ - fun serialize(data: Any): String { - this.data = data - return this.serialize() - } -} diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/IDeserializer.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/IDeserializer.kt new file mode 100644 index 0000000..e0d170d --- /dev/null +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/IDeserializer.kt @@ -0,0 +1,17 @@ +package com.synebula.gaea.data.serialization + +/** + * 序列化器 + */ +interface IDeserializer { + + /** + * 反序列化 + * + * @param 源数据类型 + * @param 目标数据类型 + * @param src 源数据 + * @return 目标数据 + */ + fun deserialize(src: S): T +} \ No newline at end of file diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/ISerializable.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/ISerializable.kt similarity index 67% rename from src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/ISerializable.kt rename to src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/ISerializable.kt index a85ccd2..8db1a03 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/ISerializable.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/ISerializable.kt @@ -1,7 +1,7 @@ -package com.synebula.gaea.data.serializable +package com.synebula.gaea.data.serialization /** - * 继承该接口的类都可以序列号对象。 + * 继承该接口的类都可以序列化对象。 * * @author alex * @version 0.0.1 diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/ISerializer.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/ISerializer.kt new file mode 100644 index 0000000..925c518 --- /dev/null +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/ISerializer.kt @@ -0,0 +1,17 @@ +package com.synebula.gaea.data.serialization + +/** + * 序列化器 + */ +interface ISerializer { + + /** + * 序列化 + * + * @param 源数据类型 + * @param 目标数据类型 + * @param src 源数据 + * @return 目标数据 + */ + fun serialize(src: S): T +} \ No newline at end of file diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonDeserializer.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonDeserializer.kt new file mode 100644 index 0000000..da7c13b --- /dev/null +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonDeserializer.kt @@ -0,0 +1,15 @@ +package com.synebula.gaea.data.serialization.json + +/** + * 序列化器 + */ +interface IJsonDeserializer { + /** + * 反序列化 + * + * @param 目标数据类型 + * @param src Json字符串数据 + * @return 目标数据 + */ + fun deserialize(src: String): T +} \ No newline at end of file diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/IJsonSerializable.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonSerializable.kt similarity index 55% rename from src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/IJsonSerializable.kt rename to src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonSerializable.kt index de5afeb..f32aede 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serializable/IJsonSerializable.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonSerializable.kt @@ -1,4 +1,6 @@ -package com.synebula.gaea.data.serializable +package com.synebula.gaea.data.serialization.json + +import com.synebula.gaea.data.serialization.ISerializable /** * diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonSerializer.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonSerializer.kt new file mode 100644 index 0000000..e154644 --- /dev/null +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/serialization/json/IJsonSerializer.kt @@ -0,0 +1,15 @@ +package com.synebula.gaea.data.serialization.json + +/** + * 序列化器 + */ +interface IJsonSerializer { + /** + * 序列化 + * + * @param 源数据类型 + * @param src 源数据 + * @return Json字符串 + */ + fun serialize(src: S): String +} \ No newline at end of file diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Command.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Command.kt index dcc92c1..4d99397 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Command.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Command.kt @@ -7,7 +7,7 @@ import java.util.* * * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ class Command : ICommand { override var timestamp = 0L diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ICommand.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ICommand.kt index b80936e..41e4512 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ICommand.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ICommand.kt @@ -5,7 +5,7 @@ package com.synebula.gaea.domain.service * * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ interface ICommand { /** diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/IServiceComplex.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/IServiceComplex.kt index 9101014..13a545c 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/IServiceComplex.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/IServiceComplex.kt @@ -7,7 +7,7 @@ import com.synebula.gaea.data.message.Message * * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ interface IServiceComplex { diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Service.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Service.kt index b41e75d..e801806 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Service.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/Service.kt @@ -16,7 +16,7 @@ import com.synebula.gaea.log.ILogger * @param logger 日志组件 * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ open class Service, TKey>( protected var rootClass: Class, diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ServiceComplex.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ServiceComplex.kt index f928302..e907788 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ServiceComplex.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/domain/service/ServiceComplex.kt @@ -11,7 +11,7 @@ import com.synebula.gaea.log.ILogger * * @author alex * @version 0.1 - * @since 2018 18-2-8 + * @since 2020-05-15 */ open class ServiceComplex, TKey, TSecond> (var logger: ILogger, protected var repository: IRepositoryComplex, diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/query/OrderType.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/query/OrderType.kt index 1865296..cf4f6be 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/query/OrderType.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/query/OrderType.kt @@ -5,7 +5,7 @@ package com.synebula.gaea.query * * @author alex * @version 0.1 - * @since 2018 18-2-6 + * @since 2020-05-15 */ enum class OrderType { /** diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/query/PagingParam.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/query/PagingParam.kt index de61140..234fc91 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/query/PagingParam.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/query/PagingParam.kt @@ -5,7 +5,7 @@ package com.synebula.gaea.query * * @author alex * @version 0.1 - * @since 2018 18-2-5 + * @since 2020-05-15 */ data class PagingParam(var page: Int = 1, var size: Int = 10) {