diff --git a/README.md b/README.md index 9120d7225524209abedd914ca912880709c4fb05..ffbb306185c4e62989547c3ead9b2b2b8b19d73e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@


-Solon v3.0.7 +Solon v3.0.8

Java enterprise application development framework for full scenario: Restrained, Efficient, Open, Ecological diff --git a/README_CN.md b/README_CN.md index c94cc027bfff67f6017ee35e74779be6ba111c36..c89adb8b4e05ea64c26b0d49eb7eccafc39b4bff 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,7 +1,7 @@


-Solon v3.0.7 +Solon v3.0.8

面向全场景的 Java 企业级应用开发框架:克制、高效、开放、生态 diff --git a/README_EN.md b/README_EN.md index 9120d7225524209abedd914ca912880709c4fb05..ffbb306185c4e62989547c3ead9b2b2b8b19d73e 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,7 +1,7 @@


-Solon v3.0.7 +Solon v3.0.8

Java enterprise application development framework for full scenario: Restrained, Efficient, Open, Ecological diff --git a/README_JP.md b/README_JP.md index de4103266a6af05ee2d163154fac23d3437def09..ce3cd3bd68bde824032829aa2ccc65c93cea4a08 100644 --- a/README_JP.md +++ b/README_JP.md @@ -1,7 +1,7 @@


-Solon v3.0.7 +Solon v3.0.8

全シーンに向けたJava企業向けアプリケーション開発フレームワーク:抑制、効率、オープン、エコ diff --git a/README_RU.md b/README_RU.md index bbf2eaf1fec80d0ffcf8b5e73b8c0931264df859..fd751c78e56be4f1573dbe7798b74613c52605a4 100644 --- a/README_RU.md +++ b/README_RU.md @@ -1,7 +1,7 @@


-Solon v3.0.7 +Solon v3.0.8

Структура разработки приложений на бизнес-уровне, ориентированная на полную сцену: сдержанность, эффективность, открытость, экология diff --git a/UPDATE_LOG.md b/UPDATE_LOG.md index b8cdfc7abf41d799862302c3f2962a8e227c2b92..2432f77dd064c8399e5ae9eae3b45300715dd661 100644 --- a/UPDATE_LOG.md +++ b/UPDATE_LOG.md @@ -27,6 +27,26 @@ * 优化 拦截体系与 rx 的兼容? +### v3.0.8 +* 添加 solon-web-sse SseRender 渲染器,支持 "text/event-stream" 的任意类型处理 +* 添加 solon-flow FlowEngine:chains 方法 +* 添加 solon-flow ChainContext:run(script) 接口(支持在脚本中运行动态脚本) +* 优化 solon-flow 简化模式可以没有 start,end 节点,自动识别出开始节点 +* 优化 solon ActionReturnHandler 增加排序支持 +* 优化 solon-web-sse SseEmitter 添加事件缓存支持(初始化前就可发事件,之前不能) +* 优化 solon-web-rx 结构设计,方便支持其它响应式框架(比如 mutiny) +* 优化 solon-web-rx 可支持所有 reactivestreams 实现框架 +* 优化 solon beanExtractOrProxy 内部改为先代理再提取,解决提取时对象未代理 +* 调整 solon-web-rx 调整 Flux collectList 策略为由 mimeType 是否为流决定 +* 修复 solon 集合bean注入时,可能产生两次执行的问题 +* 修复 solon-logging-logback 的 "solon.logging.appender.file.maxHistory" 配置无效的问题 +* 修复 solon RoutingTableDefault 路由可能出现变量在前,常量在后的问题 +* 修复 solon-docs-openapi2 类型如果为自定义类型无法正确识别到 OpenApi Json. +* 修复 solon-serialization-jackson TimeDeserializer 对空串解析异常的问题 +* snack3 升为 3.2.126 +* liquor 1.3.10 +* smart-http 升为 2.5.2 修复 sse 流不能自动结束的问题 +* jetty 升为 9.4.57.v20241219 ### v3.0.7 * 添加 solon BindProps 绑定属性注解,用于简化集合属性绑定及配置元信息APT生成 diff --git a/__hatch/nami-coder-thrift/pom.xml b/__hatch/nami-coder-thrift/pom.xml index 5901940db7550d7c97bddd301fbe45ed2e4de8e0..511ef25b5664aa809e313dfe85f5aedeedd4933c 100644 --- a/__hatch/nami-coder-thrift/pom.xml +++ b/__hatch/nami-coder-thrift/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml @@ -19,13 +19,13 @@ org.noear solon - 3.0.7 + 3.0.8 org.noear nami - 3.0.7 + 3.0.8 diff --git a/__hatch/nanoxlsx4j-solon-plugin/pom.xml b/__hatch/nanoxlsx4j-solon-plugin/pom.xml index 846abac6e49e7bed2dd0f3c2352920959ee7056c..86cbb9466641d5bda2ea31d41b14a2bfe183c726 100644 --- a/__hatch/nanoxlsx4j-solon-plugin/pom.xml +++ b/__hatch/nanoxlsx4j-solon-plugin/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__hatch/pom.xml b/__hatch/pom.xml index 8dd7b41f5ef7f626298cc66ea254a5c21b796166..1701721bcaafc3a26313f921038862dd9447ad5f 100644 --- a/__hatch/pom.xml +++ b/__hatch/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../solon-parent/pom.xml diff --git a/__hatch/solon-boot-nettyhttp/pom.xml b/__hatch/solon-boot-nettyhttp/pom.xml index 1d0567ec1f3548967e23823bdf1301b1237078a1..60e68be5c42a6acc66d3d9e9378006ff67ac024f 100644 --- a/__hatch/solon-boot-nettyhttp/pom.xml +++ b/__hatch/solon-boot-nettyhttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__hatch/solon-boot-reactor-netty/pom.xml b/__hatch/solon-boot-reactor-netty/pom.xml index e488fba13d30c33f0d7a8ab70a7cc88e2b6c6bf9..9423361299463e3f815d5403dba8a56f834a7a16 100644 --- a/__hatch/solon-boot-reactor-netty/pom.xml +++ b/__hatch/solon-boot-reactor-netty/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__hatch/solon-boot-tomcat-add-jsp/pom.xml b/__hatch/solon-boot-tomcat-add-jsp/pom.xml index ba2ff982fd5e8dfdc1081c660688ace800963940..92e57e48b3bab6799b10cdea710386c529061e20 100644 --- a/__hatch/solon-boot-tomcat-add-jsp/pom.xml +++ b/__hatch/solon-boot-tomcat-add-jsp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__hatch/solon-boot-tomcat/pom.xml b/__hatch/solon-boot-tomcat/pom.xml index 24c6b183d68a1a73b96c239c88a61fb2fe3dba57..25559c5890d9ff4ed8de4a101c04073ace7901dc 100644 --- a/__hatch/solon-boot-tomcat/pom.xml +++ b/__hatch/solon-boot-tomcat/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__hatch/solon-serialization-avro/pom.xml b/__hatch/solon-serialization-avro/pom.xml index 96c02ac3a2268e79156eb5be9b8d06dcf9e83820..ac6886f4e4992e747798119ef6c02c15a4b400be 100644 --- a/__hatch/solon-serialization-avro/pom.xml +++ b/__hatch/solon-serialization-avro/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__hatch/solon-serialization-thrift/pom.xml b/__hatch/solon-serialization-thrift/pom.xml index f9f634090b4b1ea41adaad49043e5b42d8f37344..be1b2f3ac647af8d1bf75250d46fe3ddf42aa0f5 100644 --- a/__hatch/solon-serialization-thrift/pom.xml +++ b/__hatch/solon-serialization-thrift/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/nami-bundle/pom.xml b/__release/nami-bundle/pom.xml index 876fe8d4a1a18b4e84ce50e7fe498a4887c848a5..ce9570267da90b7fe47b30c49cd4a2674a47b03c 100644 --- a/__release/nami-bundle/pom.xml +++ b/__release/nami-bundle/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/solon-base-bundle1/pom.xml b/__release/solon-base-bundle1/pom.xml index fad73777c750a6dffc842bc807e28942079c4e81..de8c85bd3e1365f19a9ee5d2af24e4f499acd72a 100644 --- a/__release/solon-base-bundle1/pom.xml +++ b/__release/solon-base-bundle1/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/solon-base-bundle2/pom.xml b/__release/solon-base-bundle2/pom.xml index 463cbbb93919afc01c51b17408840f4b7b8ba58d..abf2b8cc6eb7d1998cc8201507e51b7a21eeef30 100644 --- a/__release/solon-base-bundle2/pom.xml +++ b/__release/solon-base-bundle2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/solon-base-bundle3/pom.xml b/__release/solon-base-bundle3/pom.xml index 8712709186d3eb3e0e46c486c0883bcf8b5d75d7..34c5f4c2b6890781d02d6b8cf6164c52d259ecfa 100644 --- a/__release/solon-base-bundle3/pom.xml +++ b/__release/solon-base-bundle3/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/solon-base-bundle4/pom.xml b/__release/solon-base-bundle4/pom.xml index 6d939f5e6f7b69e7c0b0ef230c1e685ed9688d2d..6739ec343aa967f4635aa030c0c4f58c6b072815 100644 --- a/__release/solon-base-bundle4/pom.xml +++ b/__release/solon-base-bundle4/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/solon-base-bundle5/pom.xml b/__release/solon-base-bundle5/pom.xml index 057ce06fb4094dcf3c97caad34b7d600a0274b69..e94a563dbd8ecdcdf1d4b5e05b59378c80bdbf8a 100644 --- a/__release/solon-base-bundle5/pom.xml +++ b/__release/solon-base-bundle5/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/solon-base-bundle6/pom.xml b/__release/solon-base-bundle6/pom.xml index 4504ba632fb660b461091aee6f5def4d9d9a2f58..5640a8e5bdb4a05d75ef7e83d977141452c11a05 100644 --- a/__release/solon-base-bundle6/pom.xml +++ b/__release/solon-base-bundle6/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__release/solon-shortcuts-bundle/pom.xml b/__release/solon-shortcuts-bundle/pom.xml index 57fd0ea751866a6d16c7440396f1734df7e731d2..08e6b007adb386b86a2db163069bdb628dffac5d 100644 --- a/__release/solon-shortcuts-bundle/pom.xml +++ b/__release/solon-shortcuts-bundle/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/__test/pom.xml b/__test/pom.xml index d1626d656aee57ce8e55b8ca216263b90030c306..071b4c4547a595604c158c171ed64ae55e8ecee2 100644 --- a/__test/pom.xml +++ b/__test/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../solon-parent/pom.xml diff --git a/__test/src/test/java/labs/ZipTest.java b/__test/src/test/java/labs/ZipTest.java index 799aa6889e1cb5041cf4682421afe037414cbb78..7228dab986846ccd21c5e0b49b890bac8a1b0568 100644 --- a/__test/src/test/java/labs/ZipTest.java +++ b/__test/src/test/java/labs/ZipTest.java @@ -15,7 +15,6 @@ */ package labs; -import org.noear.solon.boot.web.MimeType; import org.noear.solon.core.handle.Context; import org.noear.solon.core.handle.DownloadedFile; diff --git a/solon-parent/pom.xml b/solon-parent/pom.xml index b806e5a80274fb9c59f15cbf3ce36fe75aac75f8..86e2bf37f20d924bf211d5311e883f168fed3dd3 100644 --- a/solon-parent/pom.xml +++ b/solon-parent/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 pom ${project.artifactId} @@ -30,20 +30,20 @@ 3.4.0 - 3.0.7 - 3.0.7 - 3.0.7 - 3.0.7 - 3.0.7 + 3.0.8 + 3.0.8 + 3.0.8 + 3.0.8 + 3.0.8 1.1.3 - 3.2.125 + 3.2.126 3.4.33 1.3.16 1.6.9 2.5.14 - 1.3.7 + 1.3.10 1.7.10 2.15.1 @@ -65,8 +65,8 @@ 5.0.0 1.5.55 - 2.5.1 - 9.4.56.v20240826 + 2.5.2 + 9.4.57.v20241219 2.2.37.Final 2.1.0.Final 13.4.0.Final @@ -77,6 +77,7 @@ 4.1.115.Final 3.6.9 1.1.22 + 1.10.0 1.11.1 @@ -166,7 +167,7 @@ 5.1.3 3.30.14-RELEASE 5.6.37.jre8 - 1.10.5 + 1.10.7 2.10.0 5.4.3 4.3.2 diff --git a/solon-projects/nami/nami-channel-http-hutool/pom.xml b/solon-projects/nami/nami-channel-http-hutool/pom.xml index 7ef0a280f35bde5e72b10b6ee2ac561cf2712ff3..dbac4df435ce3c9b547f0614a61c9a27b1c20fe6 100644 --- a/solon-projects/nami/nami-channel-http-hutool/pom.xml +++ b/solon-projects/nami/nami-channel-http-hutool/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-channel-http-okhttp/pom.xml b/solon-projects/nami/nami-channel-http-okhttp/pom.xml index b41066c8f153beaade8d67f308a61f0f1e6dfc36..f007e24f20c85b5d9f4e03d4ece8e4e2c42408bd 100644 --- a/solon-projects/nami/nami-channel-http-okhttp/pom.xml +++ b/solon-projects/nami/nami-channel-http-okhttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-channel-http/pom.xml b/solon-projects/nami/nami-channel-http/pom.xml index 8189d991b230f8489414e4cd85b99cc8970d0f06..faa8b143373bbb0bbd7f5b2f86b4f2b9bd9e6330 100644 --- a/solon-projects/nami/nami-channel-http/pom.xml +++ b/solon-projects/nami/nami-channel-http/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-channel-socketd/pom.xml b/solon-projects/nami/nami-channel-socketd/pom.xml index 99e15a5c195f70875656b12fff89447922ac703e..e013534d3d13eee42de913ebaa7a8952d00f5edd 100644 --- a/solon-projects/nami/nami-channel-socketd/pom.xml +++ b/solon-projects/nami/nami-channel-socketd/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-abc/pom.xml b/solon-projects/nami/nami-coder-abc/pom.xml index 050134b5c9c0d8c185a891cecf18c57415e9b286..80e1a3ba02a53384bb3e74cdf300f344224f6117 100644 --- a/solon-projects/nami/nami-coder-abc/pom.xml +++ b/solon-projects/nami/nami-coder-abc/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-fastjson/pom.xml b/solon-projects/nami/nami-coder-fastjson/pom.xml index 2639808e519369e8cc9f9ea77438015d70219a20..99046e1ef34510d4c57e728d5e1cfa1a20dcc0e4 100644 --- a/solon-projects/nami/nami-coder-fastjson/pom.xml +++ b/solon-projects/nami/nami-coder-fastjson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-fastjson2/pom.xml b/solon-projects/nami/nami-coder-fastjson2/pom.xml index 0e13aa141781ad2d4a9f1d0faa9c246f50305dd5..2c25d9a1b4ea928cc0065a1fdecff7b1dd97e154 100644 --- a/solon-projects/nami/nami-coder-fastjson2/pom.xml +++ b/solon-projects/nami/nami-coder-fastjson2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-fury/pom.xml b/solon-projects/nami/nami-coder-fury/pom.xml index a6ee3fd6bc1fc55a93e2d76d3848a364420eb81d..51331f37534dbcc11f79fd6422adb5a7a8a47dff 100644 --- a/solon-projects/nami/nami-coder-fury/pom.xml +++ b/solon-projects/nami/nami-coder-fury/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-hessian/pom.xml b/solon-projects/nami/nami-coder-hessian/pom.xml index 8ca873f2714f79ca5930e21f77886cbec17a73d5..d51dc183ba4dc6e88bd57d558ef630e656303cbf 100644 --- a/solon-projects/nami/nami-coder-hessian/pom.xml +++ b/solon-projects/nami/nami-coder-hessian/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-jackson/pom.xml b/solon-projects/nami/nami-coder-jackson/pom.xml index ebb2370b9d3d7deadbf7870b14bec555aa6de806..f3f74df4e4920ec8d647a3c6e56722dafb769d5e 100644 --- a/solon-projects/nami/nami-coder-jackson/pom.xml +++ b/solon-projects/nami/nami-coder-jackson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-kryo/pom.xml b/solon-projects/nami/nami-coder-kryo/pom.xml index 2fe4bc8dd57d216e75fd6ebfe2794e5924745b7d..5a73a7e174e9a7db3a303281791c84ca6fbb1376 100644 --- a/solon-projects/nami/nami-coder-kryo/pom.xml +++ b/solon-projects/nami/nami-coder-kryo/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-protostuff/pom.xml b/solon-projects/nami/nami-coder-protostuff/pom.xml index 74dcbb2deb63c9352a6f33b7fea98e048d383374..7dfdee4ecb42ea20203029ea7400b36d1542aad6 100644 --- a/solon-projects/nami/nami-coder-protostuff/pom.xml +++ b/solon-projects/nami/nami-coder-protostuff/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami-coder-snack3/pom.xml b/solon-projects/nami/nami-coder-snack3/pom.xml index 961d9ed4d41419429ab370c3e6293c3fdb385545..0eb06a15cb9330359cc266073faaae3b58fbf52a 100644 --- a/solon-projects/nami/nami-coder-snack3/pom.xml +++ b/solon-projects/nami/nami-coder-snack3/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami/nami/pom.xml b/solon-projects/nami/nami/pom.xml index d835b7bdbf03a08b4e58ec82d2fdc2d242f745eb..26010df9044fa944d60901b245e0cc341e8cb394 100644 --- a/solon-projects/nami/nami/pom.xml +++ b/solon-projects/nami/nami/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.channel.http.hutool/pom.xml b/solon-projects/nami_old/nami.channel.http.hutool/pom.xml index 5fb95847c772c79966310add4004c1d7a073c7d7..39a4f6fbe962a7b3038150370c77589b510fb146 100644 --- a/solon-projects/nami_old/nami.channel.http.hutool/pom.xml +++ b/solon-projects/nami_old/nami.channel.http.hutool/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.channel.http.okhttp/pom.xml b/solon-projects/nami_old/nami.channel.http.okhttp/pom.xml index 8946f614de603dcddd87009136685e6c62259ed2..4f7a05ff326ecf328b4c5730b254f8cce3385a27 100644 --- a/solon-projects/nami_old/nami.channel.http.okhttp/pom.xml +++ b/solon-projects/nami_old/nami.channel.http.okhttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.channel.socketd/pom.xml b/solon-projects/nami_old/nami.channel.socketd/pom.xml index 7281e4abf9d912d45aca8aa202ff1aa9ddc28d5f..4719888195d182ff2dd11a428448551063ee4d03 100644 --- a/solon-projects/nami_old/nami.channel.socketd/pom.xml +++ b/solon-projects/nami_old/nami.channel.socketd/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.coder.fastjson/pom.xml b/solon-projects/nami_old/nami.coder.fastjson/pom.xml index 82826962542ff429961a431a5d0ce6d198cceae1..47912c0425ec113ed29b4ba96edee124d943ac0f 100644 --- a/solon-projects/nami_old/nami.coder.fastjson/pom.xml +++ b/solon-projects/nami_old/nami.coder.fastjson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.coder.fastjson2/pom.xml b/solon-projects/nami_old/nami.coder.fastjson2/pom.xml index 54cd3b23d9a95c9110f9950c3e58ced12fd7c0a7..4a66198c39dbe85846b0956be0f8f90a108fe148 100644 --- a/solon-projects/nami_old/nami.coder.fastjson2/pom.xml +++ b/solon-projects/nami_old/nami.coder.fastjson2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.coder.fury/pom.xml b/solon-projects/nami_old/nami.coder.fury/pom.xml index 0be87da12c5f5c18ebdde3f8c16cf8813b1c1011..7f81222defe6582df2b017fea9c41b4e0b37b981 100644 --- a/solon-projects/nami_old/nami.coder.fury/pom.xml +++ b/solon-projects/nami_old/nami.coder.fury/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.coder.hessian/pom.xml b/solon-projects/nami_old/nami.coder.hessian/pom.xml index 1cd1bea57f6b59b766cd694f3badda9db1e2075a..a003579bc608e7b144f0ee25f50de164504b6e1b 100644 --- a/solon-projects/nami_old/nami.coder.hessian/pom.xml +++ b/solon-projects/nami_old/nami.coder.hessian/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.coder.jackson/pom.xml b/solon-projects/nami_old/nami.coder.jackson/pom.xml index a04ba31bf065611ea0404aebf993d554ba888024..2075ff20952107e891cd9185ab577f55fdd29ac4 100644 --- a/solon-projects/nami_old/nami.coder.jackson/pom.xml +++ b/solon-projects/nami_old/nami.coder.jackson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.coder.protostuff/pom.xml b/solon-projects/nami_old/nami.coder.protostuff/pom.xml index 297d518bfd79fdb138b5738814f83c6371c16913..59bbca15bff5965fd3e92532e05678679340c0f9 100644 --- a/solon-projects/nami_old/nami.coder.protostuff/pom.xml +++ b/solon-projects/nami_old/nami.coder.protostuff/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/nami_old/nami.coder.snack3/pom.xml b/solon-projects/nami_old/nami.coder.snack3/pom.xml index fd282c04862c2acb6e85320ebfd093057f66434c..82d0160e4e0080541e3cc599a6d526cc6f4e2524 100644 --- a/solon-projects/nami_old/nami.coder.snack3/pom.xml +++ b/solon-projects/nami_old/nami.coder.snack3/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base/solon-hotplug/pom.xml b/solon-projects/solon-base/solon-hotplug/pom.xml index 3d7bea35ce5f5ce08bbc08056126dd9f1195f5ca..071613904b9594ae7a4e4f4e2647ff30d788af1e 100644 --- a/solon-projects/solon-base/solon-hotplug/pom.xml +++ b/solon-projects/solon-base/solon-hotplug/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base/solon-i18n/pom.xml b/solon-projects/solon-base/solon-i18n/pom.xml index e87b7a9ccc666102386bf839bcf7b7351d2696fa..6109994d14d436e2b11da4060ae6d607504b5a1d 100644 --- a/solon-projects/solon-base/solon-i18n/pom.xml +++ b/solon-projects/solon-base/solon-i18n/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base/solon-mvc/pom.xml b/solon-projects/solon-base/solon-mvc/pom.xml index 384012a0b8a0e01593af07369716150ca5f08274..46fd5dd5093727f8e2cb1adafefbfad02a645aea 100644 --- a/solon-projects/solon-base/solon-mvc/pom.xml +++ b/solon-projects/solon-base/solon-mvc/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base/solon-proxy/pom.xml b/solon-projects/solon-base/solon-proxy/pom.xml index 94b484c996830014b884ed0615c67e569db9fef5..ae28eade54ade7e0a2c90439cefd6726dc0cdba2 100644 --- a/solon-projects/solon-base/solon-proxy/pom.xml +++ b/solon-projects/solon-base/solon-proxy/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base_old/solon.banner/pom.xml b/solon-projects/solon-base_old/solon.banner/pom.xml index 3600de762cea68188d0c3ddf33c23a71ea066b39..6496b86739c47c7d4661f43133e9e6a78425ee60 100644 --- a/solon-projects/solon-base_old/solon.banner/pom.xml +++ b/solon-projects/solon-base_old/solon.banner/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base_old/solon.config.yaml/pom.xml b/solon-projects/solon-base_old/solon.config.yaml/pom.xml index 60186a760ba27cc134db2f09f59a8bf7a63258b4..4712ef61bab81c71aa5500afbc804ce7ef98126b 100644 --- a/solon-projects/solon-base_old/solon.config.yaml/pom.xml +++ b/solon-projects/solon-base_old/solon.config.yaml/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base_old/solon.hotplug/pom.xml b/solon-projects/solon-base_old/solon.hotplug/pom.xml index 04288e96b42aa05a1dfd2880116885d82738df0f..44ccb587f389d19607879d50da6b4bfff8d0c6e6 100644 --- a/solon-projects/solon-base_old/solon.hotplug/pom.xml +++ b/solon-projects/solon-base_old/solon.hotplug/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base_old/solon.i18n/pom.xml b/solon-projects/solon-base_old/solon.i18n/pom.xml index 0c3d3d05bca818b5d531daa57604687481f9c3c1..9ca29fab118305aa4a832437cf5960247dfe072a 100644 --- a/solon-projects/solon-base_old/solon.i18n/pom.xml +++ b/solon-projects/solon-base_old/solon.i18n/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base_old/solon.mvc/pom.xml b/solon-projects/solon-base_old/solon.mvc/pom.xml index 37ff019d26e006b94e726f3406977804531f53a1..970c74c6d9b91f2e88b05a00cb068ef25da8563c 100644 --- a/solon-projects/solon-base_old/solon.mvc/pom.xml +++ b/solon-projects/solon-base_old/solon.mvc/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-base_old/solon.proxy/pom.xml b/solon-projects/solon-base_old/solon.proxy/pom.xml index cdba05444441c9fe0bf590b8b891b1c6f9a02243..c9ec15b3de14de922fd9732796dcfde4ab913a11 100644 --- a/solon-projects/solon-base_old/solon.proxy/pom.xml +++ b/solon-projects/solon-base_old/solon.proxy/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-jdkhttp/pom.xml b/solon-projects/solon-boot/solon-boot-jdkhttp/pom.xml index 8d0861d84fa875c5e41d66654a49721cc7976ef1..eafbb076e27f4c186f84df3fc3c4cda6842adb77 100644 --- a/solon-projects/solon-boot/solon-boot-jdkhttp/pom.xml +++ b/solon-projects/solon-boot/solon-boot-jdkhttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-jetty-add-jsp/pom.xml b/solon-projects/solon-boot/solon-boot-jetty-add-jsp/pom.xml index c2c9c868482df6deeb2c31ad24c31b35e88ab117..ace803d3672100f8ab2c89a9a5cf03a650b2c87f 100644 --- a/solon-projects/solon-boot/solon-boot-jetty-add-jsp/pom.xml +++ b/solon-projects/solon-boot/solon-boot-jetty-add-jsp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-jetty-add-websocket/pom.xml b/solon-projects/solon-boot/solon-boot-jetty-add-websocket/pom.xml index 0877c526f8e8939bc72c5cd66a6daa1bad4492be..a8c7b340d5ee0ee21d5238a4a294403fe27ecb11 100644 --- a/solon-projects/solon-boot/solon-boot-jetty-add-websocket/pom.xml +++ b/solon-projects/solon-boot/solon-boot-jetty-add-websocket/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-jetty/pom.xml b/solon-projects/solon-boot/solon-boot-jetty/pom.xml index 189f19b7636d5731f09a59b9f6bcb50c28e0fded..45e24d1d2d11bbee967fa976a2bff4a62b2877b3 100644 --- a/solon-projects/solon-boot/solon-boot-jetty/pom.xml +++ b/solon-projects/solon-boot/solon-boot-jetty/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-jlhttp/pom.xml b/solon-projects/solon-boot/solon-boot-jlhttp/pom.xml index 57131e5092cde1685a6c3999f596ac605b6886b5..2f8739494419356ab0c97405378e3f1417acaefa 100644 --- a/solon-projects/solon-boot/solon-boot-jlhttp/pom.xml +++ b/solon-projects/solon-boot/solon-boot-jlhttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-smarthttp/pom.xml b/solon-projects/solon-boot/solon-boot-smarthttp/pom.xml index 93e39f1168530f1be867a56c4fbef5d5453595f2..8d6021643ac7d7e7510fd885a0e8756514349ddd 100644 --- a/solon-projects/solon-boot/solon-boot-smarthttp/pom.xml +++ b/solon-projects/solon-boot/solon-boot-smarthttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-socketd/pom.xml b/solon-projects/solon-boot/solon-boot-socketd/pom.xml index b03a34858846c342f9ead3a93c7c7ae4971bcff8..7bd104d40517e1153fd5c0fd81ded3fd796a9f38 100644 --- a/solon-projects/solon-boot/solon-boot-socketd/pom.xml +++ b/solon-projects/solon-boot/solon-boot-socketd/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-undertow-add-jsp/pom.xml b/solon-projects/solon-boot/solon-boot-undertow-add-jsp/pom.xml index 655026e4fe9c50f59d8a209f7fba115279994681..7bd9128be426509450022345ac089a94946ae47b 100644 --- a/solon-projects/solon-boot/solon-boot-undertow-add-jsp/pom.xml +++ b/solon-projects/solon-boot/solon-boot-undertow-add-jsp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-undertow/pom.xml b/solon-projects/solon-boot/solon-boot-undertow/pom.xml index d0fbcf145e8785c2fcfb7c44a4c7a233189365ce..ca1f203113804f03a6b18ad5155ee5b6b04499df 100644 --- a/solon-projects/solon-boot/solon-boot-undertow/pom.xml +++ b/solon-projects/solon-boot/solon-boot-undertow/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-vertx/pom.xml b/solon-projects/solon-boot/solon-boot-vertx/pom.xml index 057af35a7b853f8c81f83dff585bb615debd9695..c45dd63d0c0216d67024bf0a6e4b69ee6742ca78 100644 --- a/solon-projects/solon-boot/solon-boot-vertx/pom.xml +++ b/solon-projects/solon-boot/solon-boot-vertx/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-websocket-netty/pom.xml b/solon-projects/solon-boot/solon-boot-websocket-netty/pom.xml index df1ed3c7049532f236deeb1dbb9160fb66009b1c..9d340a6d0f983aa729e6cf915e7333eb27aaa14a 100644 --- a/solon-projects/solon-boot/solon-boot-websocket-netty/pom.xml +++ b/solon-projects/solon-boot/solon-boot-websocket-netty/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot-websocket/pom.xml b/solon-projects/solon-boot/solon-boot-websocket/pom.xml index 502e5ec3540b83d5e28e8d8741f84a99e9471488..15981c218daf056e74be94c8f76b9a00cf4ab850 100644 --- a/solon-projects/solon-boot/solon-boot-websocket/pom.xml +++ b/solon-projects/solon-boot/solon-boot-websocket/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot/pom.xml b/solon-projects/solon-boot/solon-boot/pom.xml index efcd394c4e866222adde55c9961ab20b817f3941..150f3781f93d210128f73071dde935e11af2fb86 100644 --- a/solon-projects/solon-boot/solon-boot/pom.xml +++ b/solon-projects/solon-boot/solon-boot/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot/solon-boot/src/main/java/org/noear/solon/boot/web/MimeType.java b/solon-projects/solon-boot/solon-boot/src/main/java/org/noear/solon/boot/web/MimeType.java index 5412d7bbbd6c4c16fbfedcba5e0ce4eee9c93a91..d25db58ee3750a97724594ea2f805009effe1e1d 100644 --- a/solon-projects/solon-boot/solon-boot/src/main/java/org/noear/solon/boot/web/MimeType.java +++ b/solon-projects/solon-boot/solon-boot/src/main/java/org/noear/solon/boot/web/MimeType.java @@ -15,12 +15,16 @@ */ package org.noear.solon.boot.web; +import org.noear.solon.Utils; + /** * Web 媒体类型 * * @author noear * @since 1.10 + * @deprecated 3.1 {@link MimeType} */ +@Deprecated public final class MimeType { public static final String ALL_VALUE = "*/*"; public static final String APPLICATION_ATOM_XML_VALUE = "application/atom+xml"; @@ -43,9 +47,27 @@ public final class MimeType { public static final String IMAGE_PNG_VALUE = "image/png"; public static final String MULTIPART_FORM_DATA_VALUE = "multipart/form-data"; public static final String TEXT_EVENT_STREAM_VALUE = "text/event-stream"; + public static final String TEXT_EVENT_STREAM_UTF8_VALUE = "text/event-stream;charset=UTF-8"; public static final String TEXT_HTML_VALUE = "text/html"; public static final String TEXT_JSON_VALUE = "text/json"; public static final String TEXT_MARKDOWN_VALUE = "text/markdown"; public static final String TEXT_PLAIN_VALUE = "text/plain"; public static final String TEXT_XML_VALUE = "text/xml"; + + /** + * 是否为流类型 + * + * @since 3.1 + */ + public static boolean isStreaming(String mimeType) { + if (Utils.isNotEmpty(mimeType)) { + if (mimeType.startsWith(APPLICATION_X_NDJSON_VALUE)) { + return true; + } else if (mimeType.contains("stream")) { + return true; + } + } + + return false; + } } diff --git a/solon-projects/solon-boot/solon-boot/src/main/java/org/noear/solon/web/util/MimeType.java b/solon-projects/solon-boot/solon-boot/src/main/java/org/noear/solon/web/util/MimeType.java new file mode 100644 index 0000000000000000000000000000000000000000..13aee4665e87f4482c55f8cc436c64ddcf68924b --- /dev/null +++ b/solon-projects/solon-boot/solon-boot/src/main/java/org/noear/solon/web/util/MimeType.java @@ -0,0 +1,72 @@ +/* + * Copyright 2017-2025 noear.org and authors + * + * 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 + * + * https://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 org.noear.solon.web.util; + +import org.noear.solon.Utils; + +/** + * Web 媒体类型 + * + * @author noear + * @since 1.10 + * @since 3.1 + */ +public final class MimeType { + public static final String ALL_VALUE = "*/*"; + public static final String APPLICATION_ATOM_XML_VALUE = "application/atom+xml"; + public static final String APPLICATION_FORM_URLENCODED_VALUE = "application/x-www-form-urlencoded"; + public static final String APPLICATION_JSON_VALUE = "application/json"; + public static final String APPLICATION_JSON_UTF8_VALUE = "application/json;charset=UTF-8"; + public static final String APPLICATION_OCTET_STREAM_VALUE = "application/octet-stream"; + public static final String APPLICATION_PDF_VALUE = "application/pdf"; + public static final String APPLICATION_PROBLEM_JSON_VALUE = "application/problem+json"; + public static final String APPLICATION_PROBLEM_JSON_UTF8_VALUE = "application/problem+json;charset=UTF-8"; + public static final String APPLICATION_PROBLEM_XML_VALUE = "application/problem+xml"; + public static final String APPLICATION_RSS_XML_VALUE = "application/rss+xml"; + public static final String APPLICATION_STREAM_JSON_VALUE = "application/stream+json"; + public static final String APPLICATION_XHTML_XML_VALUE = "application/xhtml+xml"; + public static final String APPLICATION_XML_VALUE = "application/xml"; + public static final String APPLICATION_X_NDJSON_VALUE = "application/x-ndjson"; + public static final String APPLICATION_X_NDJSON_UTF8_VALUE = "application/x-ndjson;charset=UTF-8"; + public static final String IMAGE_GIF_VALUE = "image/gif"; + public static final String IMAGE_JPEG_VALUE = "image/jpeg"; + public static final String IMAGE_PNG_VALUE = "image/png"; + public static final String MULTIPART_FORM_DATA_VALUE = "multipart/form-data"; + public static final String TEXT_EVENT_STREAM_VALUE = "text/event-stream"; + public static final String TEXT_EVENT_STREAM_UTF8_VALUE = "text/event-stream;charset=UTF-8"; + public static final String TEXT_HTML_VALUE = "text/html"; + public static final String TEXT_JSON_VALUE = "text/json"; + public static final String TEXT_MARKDOWN_VALUE = "text/markdown"; + public static final String TEXT_PLAIN_VALUE = "text/plain"; + public static final String TEXT_XML_VALUE = "text/xml"; + + /** + * 是否为流类型 + * + * @since 3.1 + */ + public static boolean isStreaming(String mimeType) { + if (Utils.isNotEmpty(mimeType)) { + if (mimeType.startsWith(APPLICATION_X_NDJSON_VALUE)) { + return true; + } else if (mimeType.contains("stream")) { + return true; + } + } + + return false; + } +} diff --git a/solon-projects/solon-boot_old/solon.boot.jdkhttp/pom.xml b/solon-projects/solon-boot_old/solon.boot.jdkhttp/pom.xml index f18979978c94cb6649d86dbc4e8fe6dc2682e2b9..f4d26d223caa7ba70e03078a65f4faf1da800097 100644 --- a/solon-projects/solon-boot_old/solon.boot.jdkhttp/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.jdkhttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.jetty.add.jsp/pom.xml b/solon-projects/solon-boot_old/solon.boot.jetty.add.jsp/pom.xml index 00cf945f6c6638256c3b43cee593416e774c6a4a..13109c3bfa130b8aaa2c9f008a36ab7f5cfcf65c 100644 --- a/solon-projects/solon-boot_old/solon.boot.jetty.add.jsp/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.jetty.add.jsp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.jetty.add.websocket/pom.xml b/solon-projects/solon-boot_old/solon.boot.jetty.add.websocket/pom.xml index ce8fc1104cc112d62890a988295e0b4d8d86823b..46be28438650627afed8c74699660b54f1360209 100644 --- a/solon-projects/solon-boot_old/solon.boot.jetty.add.websocket/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.jetty.add.websocket/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.jetty/pom.xml b/solon-projects/solon-boot_old/solon.boot.jetty/pom.xml index 8c6fd3ba2ba566e782110d4e29c6cffbbc712b74..7a5fbc2e9561a8aaeaafdb0448e3f0c5c78f88b1 100644 --- a/solon-projects/solon-boot_old/solon.boot.jetty/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.jetty/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.jlhttp/pom.xml b/solon-projects/solon-boot_old/solon.boot.jlhttp/pom.xml index 6bb58c5bc71df2b8affc10c8878dfe1c4e1ab93d..33d640ede186f6d5f567bede6d428691372fcad2 100644 --- a/solon-projects/solon-boot_old/solon.boot.jlhttp/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.jlhttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.smarthttp/pom.xml b/solon-projects/solon-boot_old/solon.boot.smarthttp/pom.xml index 65897bb91a72fef3593b2141b7ff35330da8fa8b..4120f30d8748122e99283f7417d87fe932bf1bff 100644 --- a/solon-projects/solon-boot_old/solon.boot.smarthttp/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.smarthttp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.socketd/pom.xml b/solon-projects/solon-boot_old/solon.boot.socketd/pom.xml index c015e47e5c32f13bb19dfa98ffd906d97c3e3d53..53b8e902fd9c19fe2fff5e072ea0ca7803d2dd62 100644 --- a/solon-projects/solon-boot_old/solon.boot.socketd/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.socketd/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.undertow.add.jsp/pom.xml b/solon-projects/solon-boot_old/solon.boot.undertow.add.jsp/pom.xml index a759690656d535d5e924a7e37d72dcd014e6aaa6..c05a9bd4551b2dc4f5147942c6dd6d06ae1f6d1a 100644 --- a/solon-projects/solon-boot_old/solon.boot.undertow.add.jsp/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.undertow.add.jsp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.undertow/pom.xml b/solon-projects/solon-boot_old/solon.boot.undertow/pom.xml index 9ef78b736cb4ac462d14a8a719e3611c5b531254..f385ca07702b620c27988c3983d6b4b067084b28 100644 --- a/solon-projects/solon-boot_old/solon.boot.undertow/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.undertow/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.vertx/pom.xml b/solon-projects/solon-boot_old/solon.boot.vertx/pom.xml index 2100faa73f29a797fbac103d03cdc9b45f26db32..3d9da293000808676fd8efc7318b511c3de5dba4 100644 --- a/solon-projects/solon-boot_old/solon.boot.vertx/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.vertx/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.websocket.netty/pom.xml b/solon-projects/solon-boot_old/solon.boot.websocket.netty/pom.xml index 36b48004456832f6c1112a3f6c9d6bcf494d3015..b7102a6e3d66901453472588834864a012e0e6a7 100644 --- a/solon-projects/solon-boot_old/solon.boot.websocket.netty/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.websocket.netty/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot.websocket/pom.xml b/solon-projects/solon-boot_old/solon.boot.websocket/pom.xml index 75b81d46dec10c29b7d2f82377d1da55bba73173..b8800599c4146189ccbad767eaccbbc1ac2e8cbd 100644 --- a/solon-projects/solon-boot_old/solon.boot.websocket/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot.websocket/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-boot_old/solon.boot/pom.xml b/solon-projects/solon-boot_old/solon.boot/pom.xml index 719c6b5adb99c0b063a130a95537cec12753b3e6..6c0342914a7b71adb938f53428fea64fc22124b9 100644 --- a/solon-projects/solon-boot_old/solon.boot/pom.xml +++ b/solon-projects/solon-boot_old/solon.boot/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud/solon-cloud-eventplus/pom.xml b/solon-projects/solon-cloud/solon-cloud-eventplus/pom.xml index 60cd2653f9c1e2d9ee71a0cb35545a4fd5e8c162..b18502b0fb5fd22fb3df22a74bdd339c41f85fd5 100644 --- a/solon-projects/solon-cloud/solon-cloud-eventplus/pom.xml +++ b/solon-projects/solon-cloud/solon-cloud-eventplus/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud/solon-cloud-gateway/pom.xml b/solon-projects/solon-cloud/solon-cloud-gateway/pom.xml index 49fc0760a0f456c47def46ec6f8fe01c90f2cb21..04d3bac9b6abd106ad276eae41faea8efaf7a674 100644 --- a/solon-projects/solon-cloud/solon-cloud-gateway/pom.xml +++ b/solon-projects/solon-cloud/solon-cloud-gateway/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud/solon-cloud-metrics/pom.xml b/solon-projects/solon-cloud/solon-cloud-metrics/pom.xml index 66fd83cec4729f39d63645e157b06b8422375228..331a2bffd8813fbd014898489bf8a60463ac5943 100644 --- a/solon-projects/solon-cloud/solon-cloud-metrics/pom.xml +++ b/solon-projects/solon-cloud/solon-cloud-metrics/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud/solon-cloud-telemetry/pom.xml b/solon-projects/solon-cloud/solon-cloud-telemetry/pom.xml index c2d278e534d96ff0540159d18d36f43c7a04f339..e460365039c506efca2e830fb0c144ccfe6683a8 100644 --- a/solon-projects/solon-cloud/solon-cloud-telemetry/pom.xml +++ b/solon-projects/solon-cloud/solon-cloud-telemetry/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud/solon-cloud-tracing/pom.xml b/solon-projects/solon-cloud/solon-cloud-tracing/pom.xml index b708239838a9232f51a6748494fd8aa96aeddedd..c7f12da3253064856d49d0231358df76b21aa0fa 100644 --- a/solon-projects/solon-cloud/solon-cloud-tracing/pom.xml +++ b/solon-projects/solon-cloud/solon-cloud-tracing/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud/solon-cloud/pom.xml b/solon-projects/solon-cloud/solon-cloud/pom.xml index 53400bfa3f95ce829e359562b80305a3e9fe1469..070848cc3bf01825c71c5dea6b0e88528593bcf7 100644 --- a/solon-projects/solon-cloud/solon-cloud/pom.xml +++ b/solon-projects/solon-cloud/solon-cloud/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud_old/solon.cloud.eventplus/pom.xml b/solon-projects/solon-cloud_old/solon.cloud.eventplus/pom.xml index bc1ad6927548e6df875ebb891545af56dd05a7f9..869148d74f25b37306cb4c214545fdaf557fbade 100644 --- a/solon-projects/solon-cloud_old/solon.cloud.eventplus/pom.xml +++ b/solon-projects/solon-cloud_old/solon.cloud.eventplus/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud_old/solon.cloud.gateway/pom.xml b/solon-projects/solon-cloud_old/solon.cloud.gateway/pom.xml index fae8f221ad04e103cebff6285c59fec816848c57..2b3d98b4a76619a258f2996f04f70660c19ec141 100644 --- a/solon-projects/solon-cloud_old/solon.cloud.gateway/pom.xml +++ b/solon-projects/solon-cloud_old/solon.cloud.gateway/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud_old/solon.cloud.metrics/pom.xml b/solon-projects/solon-cloud_old/solon.cloud.metrics/pom.xml index f0bf6a885dbfa683c1bbdbddf7bdaa0d5535c867..43ee1253a5a2e0dd154951d4ab20ff47cb3938e9 100644 --- a/solon-projects/solon-cloud_old/solon.cloud.metrics/pom.xml +++ b/solon-projects/solon-cloud_old/solon.cloud.metrics/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud_old/solon.cloud.tracing/pom.xml b/solon-projects/solon-cloud_old/solon.cloud.tracing/pom.xml index 46284d3aebedef06d67fca3a2f28a77ccb7520f8..55c7bb42219def6dff570ff15689383cd051e293 100644 --- a/solon-projects/solon-cloud_old/solon.cloud.tracing/pom.xml +++ b/solon-projects/solon-cloud_old/solon.cloud.tracing/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-cloud_old/solon.cloud/pom.xml b/solon-projects/solon-cloud_old/solon.cloud/pom.xml index b116c9847a4f6d272a8e4247ca2b72b3ae88c18c..a79cf3f630ad3cf0189a330eb38372ecf7f6b471 100644 --- a/solon-projects/solon-cloud_old/solon.cloud/pom.xml +++ b/solon-projects/solon-cloud_old/solon.cloud/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-config/solon-config-banner/pom.xml b/solon-projects/solon-config/solon-config-banner/pom.xml index 61620d62ac21f7326593a142f76b511e029f8a4b..098fbbf13a8ed9e700a3823914ff94ab83abc984 100644 --- a/solon-projects/solon-config/solon-config-banner/pom.xml +++ b/solon-projects/solon-config/solon-config-banner/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-config/solon-config-plus/pom.xml b/solon-projects/solon-config/solon-config-plus/pom.xml index 4a60e47cdd9bba90433c6eec62b255b017a07d72..2e441b957576b19268faa5f97e8ad6717e545d79 100644 --- a/solon-projects/solon-config/solon-config-plus/pom.xml +++ b/solon-projects/solon-config/solon-config-plus/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-config/solon-config-yaml/pom.xml b/solon-projects/solon-config/solon-config-yaml/pom.xml index fdcdd787caf05a344507457537a3df5913e277da..27750dce5bfac800ce6c1cab1e5459ea428b94d1 100644 --- a/solon-projects/solon-config/solon-config-yaml/pom.xml +++ b/solon-projects/solon-config/solon-config-yaml/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-cache-caffeine/pom.xml b/solon-projects/solon-data/solon-cache-caffeine/pom.xml index fd73f56bb43399f8a736941412c990b19f3ee05c..6523d03579639bc0fe1adac98614d9aa6cd48af9 100644 --- a/solon-projects/solon-data/solon-cache-caffeine/pom.xml +++ b/solon-projects/solon-data/solon-cache-caffeine/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-cache-jedis/pom.xml b/solon-projects/solon-data/solon-cache-jedis/pom.xml index d88e963fb9786b706b76eec3fae28029a3aaaef1..d8f5f75106de39bafebb0e88518c595180ed0ccb 100644 --- a/solon-projects/solon-data/solon-cache-jedis/pom.xml +++ b/solon-projects/solon-data/solon-cache-jedis/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-cache-redisson/pom.xml b/solon-projects/solon-data/solon-cache-redisson/pom.xml index 8cc5860907529b00c393b85ff80a3dd8ee1acd58..165167aba16b0acefe7d7c3d5ad731aaa365fd1f 100644 --- a/solon-projects/solon-data/solon-cache-redisson/pom.xml +++ b/solon-projects/solon-data/solon-cache-redisson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-cache-spymemcached/pom.xml b/solon-projects/solon-data/solon-cache-spymemcached/pom.xml index d6e2abe79f3cc441977e99d0a2659bbc1bd890cd..516c29841f1b9107ba91918151597d2c265252c9 100644 --- a/solon-projects/solon-data/solon-cache-spymemcached/pom.xml +++ b/solon-projects/solon-data/solon-cache-spymemcached/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-data-dynamicds/pom.xml b/solon-projects/solon-data/solon-data-dynamicds/pom.xml index 163c65cacf6dce224cc85d4a9835dbbb694e0fef..22c0e479bd6a57a8ccdc5f8411a77bb116aa7da2 100644 --- a/solon-projects/solon-data/solon-data-dynamicds/pom.xml +++ b/solon-projects/solon-data/solon-data-dynamicds/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-data-rx-sqlutils/pom.xml b/solon-projects/solon-data/solon-data-rx-sqlutils/pom.xml index e1d0d826d284f110b14e33d6b27f1dd964974d1a..5d307318c7769cdaf87899b2dd99fc771d2d9097 100644 --- a/solon-projects/solon-data/solon-data-rx-sqlutils/pom.xml +++ b/solon-projects/solon-data/solon-data-rx-sqlutils/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-data-shardingds/pom.xml b/solon-projects/solon-data/solon-data-shardingds/pom.xml index 1521c3abbebe4d74abc4a0da69baed8639f32d27..90a4f125f90cc11f7cdbe54f87177bdfd73073c9 100644 --- a/solon-projects/solon-data/solon-data-shardingds/pom.xml +++ b/solon-projects/solon-data/solon-data-shardingds/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-data-sqlink/pom.xml b/solon-projects/solon-data/solon-data-sqlink/pom.xml index fe227f9422107bbc9590c2f9c88f622947dbac93..d5a8efb7e79977ea1af3d5bbb24dcde2cfc7af61 100644 --- a/solon-projects/solon-data/solon-data-sqlink/pom.xml +++ b/solon-projects/solon-data/solon-data-sqlink/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-data-sqlutils/pom.xml b/solon-projects/solon-data/solon-data-sqlutils/pom.xml index 152341b1dc5f13e8cd3d34324ff39f18b6c7a0b7..3868efba184fb87d846c9c1f0c91cab98c601a81 100644 --- a/solon-projects/solon-data/solon-data-sqlutils/pom.xml +++ b/solon-projects/solon-data/solon-data-sqlutils/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data/solon-data/pom.xml b/solon-projects/solon-data/solon-data/pom.xml index 9e808c403bb6cf4f0bbb2bb65281dd25cf2ed07e..829b13508d5d4f490dec347b3dc4e7208a5ef175 100644 --- a/solon-projects/solon-data/solon-data/pom.xml +++ b/solon-projects/solon-data/solon-data/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data_old/solon.cache.caffeine/pom.xml b/solon-projects/solon-data_old/solon.cache.caffeine/pom.xml index bc4a0c2adeced5ecf50640bd14d2861ce72f26ba..40f39b4f8635216fbae50656bd7efa8e769ce193 100644 --- a/solon-projects/solon-data_old/solon.cache.caffeine/pom.xml +++ b/solon-projects/solon-data_old/solon.cache.caffeine/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data_old/solon.cache.jedis/pom.xml b/solon-projects/solon-data_old/solon.cache.jedis/pom.xml index 2992e4fc8daf66b8840923b0d3e79e0f04c5319c..abb461d540a330398063caba5320b1daa1e869d5 100644 --- a/solon-projects/solon-data_old/solon.cache.jedis/pom.xml +++ b/solon-projects/solon-data_old/solon.cache.jedis/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data_old/solon.cache.redisson/pom.xml b/solon-projects/solon-data_old/solon.cache.redisson/pom.xml index cd69f6a8038261f0d4beffadcfa436c029fb3e2e..45a8a64266622b96a7e0a18b7515247d1e7e6f8e 100644 --- a/solon-projects/solon-data_old/solon.cache.redisson/pom.xml +++ b/solon-projects/solon-data_old/solon.cache.redisson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data_old/solon.cache.spymemcached/pom.xml b/solon-projects/solon-data_old/solon.cache.spymemcached/pom.xml index e38aed382881f856ec908bce467f43c15e9f4ca8..e6fa8b9e7142018e5193c9a7336a9abd4600ad3c 100644 --- a/solon-projects/solon-data_old/solon.cache.spymemcached/pom.xml +++ b/solon-projects/solon-data_old/solon.cache.spymemcached/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data_old/solon.data.dynamicds/pom.xml b/solon-projects/solon-data_old/solon.data.dynamicds/pom.xml index aba83294d2570e6e4dd4ee50803c89783500faa8..a1db334a3aa61af5909c89790d50f4a26ac880e9 100644 --- a/solon-projects/solon-data_old/solon.data.dynamicds/pom.xml +++ b/solon-projects/solon-data_old/solon.data.dynamicds/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data_old/solon.data.shardingds/pom.xml b/solon-projects/solon-data_old/solon.data.shardingds/pom.xml index c36382341561261ea683047e4007e6a1bed6654b..3915c9762975e6d3ea50958a9b53a9726648220e 100644 --- a/solon-projects/solon-data_old/solon.data.shardingds/pom.xml +++ b/solon-projects/solon-data_old/solon.data.shardingds/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-data_old/solon.data/pom.xml b/solon-projects/solon-data_old/solon.data/pom.xml index 4d3e13219c9be31b0f0f6d380fa73a68a2cea126..1d6090d6b5077e0655dc6ab4c7d18bdcc26ca92e 100644 --- a/solon-projects/solon-data_old/solon.data/pom.xml +++ b/solon-projects/solon-data_old/solon.data/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-detector/solon-health-detector/pom.xml b/solon-projects/solon-detector/solon-health-detector/pom.xml index bb60510309d96e8ff5e202b5e477c48eedba7eac..fb196a7c85c0c3e613b6d610d9468d437c62ef01 100644 --- a/solon-projects/solon-detector/solon-health-detector/pom.xml +++ b/solon-projects/solon-detector/solon-health-detector/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-detector/solon-health/pom.xml b/solon-projects/solon-detector/solon-health/pom.xml index 949379623db15289c08be7a166b903dfbf892572..02042c640ae166ac7f311bfe929ebcac0dd3e868 100644 --- a/solon-projects/solon-detector/solon-health/pom.xml +++ b/solon-projects/solon-detector/solon-health/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-detector_old/solon.health.detector/pom.xml b/solon-projects/solon-detector_old/solon.health.detector/pom.xml index 16a6abcd6a86b29a3783541111f7192591cebe61..4f52a45310c4b7ce3be319d203e80e865a3b07e0 100644 --- a/solon-projects/solon-detector_old/solon.health.detector/pom.xml +++ b/solon-projects/solon-detector_old/solon.health.detector/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-detector_old/solon.health/pom.xml b/solon-projects/solon-detector_old/solon.health/pom.xml index a11f440323f26940543b76e58505a9e5b2fdd07f..9a71b91a1f52b08aef1aedefa21818dfe0f76057 100644 --- a/solon-projects/solon-detector_old/solon.health/pom.xml +++ b/solon-projects/solon-detector_old/solon.health/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs/solon-docs-openapi2-javadoc/pom.xml b/solon-projects/solon-docs/solon-docs-openapi2-javadoc/pom.xml index 40aa607e665cfe3bf2219629b03f12fb0b23a1e0..e70bcbc02086dd9c41f19b72042184b906a11c19 100644 --- a/solon-projects/solon-docs/solon-docs-openapi2-javadoc/pom.xml +++ b/solon-projects/solon-docs/solon-docs-openapi2-javadoc/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs/solon-docs-openapi2/pom.xml b/solon-projects/solon-docs/solon-docs-openapi2/pom.xml index 13537019fdeedafc990acee3b4c2e559da498f88..8becf8d2b74ed2191a203348c9f85e602920b854 100644 --- a/solon-projects/solon-docs/solon-docs-openapi2/pom.xml +++ b/solon-projects/solon-docs/solon-docs-openapi2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs/solon-docs-openapi2/src/main/java/org/noear/solon/docs/openapi2/OpenApi2Builder.java b/solon-projects/solon-docs/solon-docs-openapi2/src/main/java/org/noear/solon/docs/openapi2/OpenApi2Builder.java index 59964d1852ac750f1052f4433bd25ad9f5c82495..e3609f2f4b9e89961c7e5946ffd0fa4181f6c40e 100644 --- a/solon-projects/solon-docs/solon-docs-openapi2/src/main/java/org/noear/solon/docs/openapi2/OpenApi2Builder.java +++ b/solon-projects/solon-docs/solon-docs-openapi2/src/main/java/org/noear/solon/docs/openapi2/OpenApi2Builder.java @@ -405,7 +405,10 @@ public class OpenApi2Builder { continue; } - String paramSchema = this.getParameterSchema(paramHolder); + String paramSchema = null; + if (isRequiredBody) { + paramSchema = this.getParameterSchema(paramHolder); + } String dataType = paramHolder.dataType(); Parameter parameter; diff --git a/solon-projects/solon-docs/solon-docs-openapi3/pom.xml b/solon-projects/solon-docs/solon-docs-openapi3/pom.xml index 07fafb27c7a0868da7ad448e9a4c541b7d91859c..0352afc208335015868cb81c5d6716e845b35a89 100644 --- a/solon-projects/solon-docs/solon-docs-openapi3/pom.xml +++ b/solon-projects/solon-docs/solon-docs-openapi3/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs/solon-docs/pom.xml b/solon-projects/solon-docs/solon-docs/pom.xml index 2c32df3d106567a6daea1f2687449c760d8266cd..9ca9dc8ac4a219347b6ca37849f8c3dda575c585 100644 --- a/solon-projects/solon-docs/solon-docs/pom.xml +++ b/solon-projects/solon-docs/solon-docs/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs/solon-openapi2-knife4j/pom.xml b/solon-projects/solon-docs/solon-openapi2-knife4j/pom.xml index 4fb1736a10801f3513efe54d631906aaa91f0e0b..2cb19717d10e3c0b057bff042c5f8205af919649 100644 --- a/solon-projects/solon-docs/solon-openapi2-knife4j/pom.xml +++ b/solon-projects/solon-docs/solon-openapi2-knife4j/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs/solon-swagger2-knife4j/pom.xml b/solon-projects/solon-docs/solon-swagger2-knife4j/pom.xml index 958f62c06c4e8ae879f7063d4d74a223b068a194..4c276741cfe3c558cdb743828cdbb8accef09682 100644 --- a/solon-projects/solon-docs/solon-swagger2-knife4j/pom.xml +++ b/solon-projects/solon-docs/solon-swagger2-knife4j/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs_old/solon.docs.openapi2/pom.xml b/solon-projects/solon-docs_old/solon.docs.openapi2/pom.xml index bd16c1398b40ce2832ee1d61295928bbebec63d4..66a7710a623f9901f6aa5b1580743edc15b5899a 100644 --- a/solon-projects/solon-docs_old/solon.docs.openapi2/pom.xml +++ b/solon-projects/solon-docs_old/solon.docs.openapi2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-docs_old/solon.docs/pom.xml b/solon-projects/solon-docs_old/solon.docs/pom.xml index 544658e3dd98e7d9bb01df599dc08c0f26f3737b..c184eaca1e7abe38f06f1c0687e15f5d72f0601b 100644 --- a/solon-projects/solon-docs_old/solon.docs/pom.xml +++ b/solon-projects/solon-docs_old/solon.docs/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-faas/solon-faas-luffy/pom.xml b/solon-projects/solon-faas/solon-faas-luffy/pom.xml index 9d7499e00784721757aad44d1c8b4008e674ac79..1592f9775ca04c6919be59ecab97db2c2cb08d4e 100644 --- a/solon-projects/solon-faas/solon-faas-luffy/pom.xml +++ b/solon-projects/solon-faas/solon-faas-luffy/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-faas_old/solon.luffy/pom.xml b/solon-projects/solon-faas_old/solon.luffy/pom.xml index a89a7dedbf10f14a09bf7bcba6a01bb50fb7f384..2d77688ce5d210ad763bfc65bfc5363c87aff943 100644 --- a/solon-projects/solon-faas_old/solon.luffy/pom.xml +++ b/solon-projects/solon-faas_old/solon.luffy/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-flow/solon-flow/pom.xml b/solon-projects/solon-flow/solon-flow/pom.xml index 1599905a93ce51cda0a8a227ad913f5e2cfc03c7..e28c1d5aa898188a4f54eaecdecd78930daaf10b 100644 --- a/solon-projects/solon-flow/solon-flow/pom.xml +++ b/solon-projects/solon-flow/solon-flow/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/Chain.java b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/Chain.java index bfb675101fa058330ddaa7bf89d3d5620f5cf802..542b965f4e2a620dc0c2cf2500cb03dd4939ba68 100644 --- a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/Chain.java +++ b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/Chain.java @@ -131,6 +131,26 @@ public class Chain { return nodes.get(id); } + /** + * 校验 + */ + public void check() { + //如果没有配置 start 节点 + if (start == null) { + //找到没有流入链接的节点,作为开始节点 + for (Node node : nodes.values()) { + if (Utils.isEmpty(node.prveLinks())) { + start = node; + break; + } + } + } + + if (start == null) { + throw new IllegalStateException("No start node found"); + } + } + /// //////// @@ -225,6 +245,9 @@ public class Chain { chain.addNode(nodeDecl); } + //校验结构 + chain.check(); + return chain; } diff --git a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/ChainContext.java b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/ChainContext.java index 43e4c95d15558e79275916f6a609e3d9c4e73271..40a7a703323c346e83796c471b25410a6b3eead7 100644 --- a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/ChainContext.java +++ b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/ChainContext.java @@ -15,25 +15,25 @@ */ package org.noear.solon.flow; -import org.noear.solon.flow.driver.SimpleChainDriver; +import org.noear.liquor.eval.Scripts; import org.noear.solon.lang.Preview; -import java.io.Serializable; -import java.util.HashMap; +import java.lang.reflect.InvocationTargetException; +import java.util.LinkedHashMap; import java.util.Map; /** - * 链上下文 + * 链上下文(不支持序列化) * * @author noear * @since 3.0 */ @Preview("3.0") -public class ChainContext implements Serializable { +public class ChainContext { //存放数据模型 - private final Map model; + private transient final Map model = new LinkedHashMap<>(); //存放执行结果(可选) - public Object result; + public transient Object result; //控制过程计数 private transient final Counter counter = new Counter(); @@ -48,10 +48,9 @@ public class ChainContext implements Serializable { } public ChainContext(Map model) { - if (model == null) { - this.model = new HashMap<>(); - } else { - this.model = model; + this.model.put("context", this); + if (model != null) { + this.model.putAll(model); } } @@ -62,6 +61,14 @@ public class ChainContext implements Serializable { return engine; } + /** + * 运行脚本 + */ + public Object run(String script) throws InvocationTargetException { + //按脚本运行 + return Scripts.eval(script, this.model()); + } + /** * 计数器 */ @@ -93,7 +100,7 @@ public class ChainContext implements Serializable { } /** - * 设置 + * 推入 */ public ChainContext put(String key, Object value) { model.put(key, value); @@ -101,7 +108,15 @@ public class ChainContext implements Serializable { } /** - * 设置 + * 推入 + */ + public ChainContext putIfAbsent(String key, Object value) { + model.putIfAbsent(key, value); + return this; + } + + /** + * 推入全部 */ public ChainContext putAll(Map model) { model.putAll(model); @@ -121,4 +136,11 @@ public class ChainContext implements Serializable { public T getOrDefault(String key, T def) { return (T) model.getOrDefault(key, def); } + + /** + * 移除 + */ + public void remove(String key) { + model.remove(key); + } } \ No newline at end of file diff --git a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngine.java b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngine.java index 08ee562bc4749334960af3bb2f1b3e24d679a33b..ecf2909798de51602cf8140431d9951d170c6435 100644 --- a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngine.java +++ b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngine.java @@ -17,6 +17,8 @@ package org.noear.solon.flow; import org.noear.solon.lang.Preview; +import java.util.Collection; + /** * 流引擎 * @@ -62,7 +64,6 @@ public interface FlowEngine { */ void load(Chain chain); - /** * 卸载链 * @@ -70,6 +71,11 @@ public interface FlowEngine { */ void unload(String chainId); + /** + * 获取链集合 + */ + Collection chains(); + /** * 评估 * diff --git a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngineImpl.java b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngineImpl.java index 98154cb9547c1c6604ca9611a99a86b00da49048..86939ac1a778ed204f4f694d2449fab6ac63649e 100644 --- a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngineImpl.java +++ b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/FlowEngineImpl.java @@ -18,10 +18,7 @@ package org.noear.solon.flow; import org.noear.solon.Utils; import org.noear.solon.flow.driver.SimpleChainDriver; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Stack; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; /** @@ -63,6 +60,11 @@ class FlowEngineImpl implements FlowEngine { chainMap.remove(chainId); } + @Override + public Collection chains() { + return chainMap.values(); + } + /** * 评估 * diff --git a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/driver/SimpleChainDriver.java b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/driver/SimpleChainDriver.java index f28cba89b592f4591024b33e51f21f1100eb4bb8..1cbe2c74179910fc342096f854b9d6638a1f9f63 100644 --- a/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/driver/SimpleChainDriver.java +++ b/solon-projects/solon-flow/solon-flow/src/main/java/org/noear/solon/flow/driver/SimpleChainDriver.java @@ -15,7 +15,6 @@ */ package org.noear.solon.flow.driver; -import org.noear.liquor.eval.CodeSpec; import org.noear.liquor.eval.Exprs; import org.noear.liquor.eval.Scripts; import org.noear.solon.Solon; @@ -24,9 +23,6 @@ import org.noear.solon.flow.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.LinkedHashMap; -import java.util.Map; - /** * 简单的链驱动器 * @@ -83,11 +79,7 @@ public class SimpleChainDriver implements ChainDriver { } protected boolean tryAsScriptCondition(ChainContext context, Condition condition, String description) throws Throwable { - Map argsMap = new LinkedHashMap<>(); - argsMap.put("context", context); - argsMap.putAll(context.model()); - - return (boolean) Exprs.eval(description, argsMap); + return (boolean) Exprs.eval(description, context.model()); } /// ////////////// @@ -149,13 +141,12 @@ public class SimpleChainDriver implements ChainDriver { */ protected void tryAsScriptTask(ChainContext context, Task task, String description) throws Throwable { //按脚本运行 - Map argsMap = new LinkedHashMap<>(); - argsMap.put("context", context); - argsMap.put("node", task.node()); - argsMap.putAll(context.model()); - - CodeSpec codeSpec = new CodeSpec(description); - Object[] args = codeSpec.bind(argsMap); - Scripts.eval(codeSpec, args); + try { + context.put("node", task.node()); + + Scripts.eval(description, context.model()); + } finally { + context.remove("node"); + } } } \ No newline at end of file diff --git a/solon-projects/solon-flow/solon-flow/src/test/java/features/flow/app/AppTest.java b/solon-projects/solon-flow/solon-flow/src/test/java/features/flow/app/AppTest.java index eadf5ecbb8aaa2ff220e9edd40d8dad57dd604c5..491892a13a1d31a3ed2be80d312cdcf87a58a1c7 100644 --- a/solon-projects/solon-flow/solon-flow/src/test/java/features/flow/app/AppTest.java +++ b/solon-projects/solon-flow/solon-flow/src/test/java/features/flow/app/AppTest.java @@ -181,15 +181,4 @@ public class AppTest { flowEngine.eval("r1", context); assert order.getScore() == 500; } - - @Test - public void context_test() { - String json = "{\"model\":{\"day\":7},\"result\":10}"; - ChainContext context = ONode.load(json).toObject(ChainContext.class); - - String json2 = ONode.load(context).toJson(); - System.out.println(json2); - - assert json2.equals(json); - } } diff --git a/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case1.chain.json b/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case1.chain.json index e8d1d187232dce7faea3ea50b36c3f542a390a23..6a3a0d8d31d00d547a93b2c648aa09e83abbb692 100644 --- a/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case1.chain.json +++ b/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case1.chain.json @@ -1,8 +1,6 @@ { "id": "c1", "nodes": [ - { "type": "start"}, - { "task": "context.result=111;"}, - { "type": "end"} + { "task": "context.result=111;"} ] } \ No newline at end of file diff --git a/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case7.chain.yml b/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case7.chain.yml index 9cd02d3e7e3e23521dd638533803e0770c306601..6616c30c46025ed2254bb144d1472e0331c3c503 100644 --- a/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case7.chain.yml +++ b/solon-projects/solon-flow/solon-flow/src/test/resources/flow/script_case7.chain.yml @@ -1,5 +1,8 @@ id: "c7" title: "简单计算" +meta: + scrip1: | + context.result=((int)context.result)+1; nodes: - { type: "start"} - { title: "初始化", task: "context.result=0;"} @@ -21,7 +24,7 @@ nodes: - { id: "n4", link: "g5", task: "context.result=((int)context.result)+1;"} - { id: "n5", link: "g4", task: "context.result=((int)context.result)+1;"} - { id: "n6", link: "g4", task: "context.result=((int)context.result)+1;"} - - { id: "n7", link: "g4", task: "context.result=((int)context.result)+1;"} + - { id: "n7", link: "g4", task: 'context.run(node.chain().meta().get("scrip1").toString());'} - { id: "g4", link: "g5", type: "inclusive" } - { id: "g5", link: "g6", type: "inclusive" } - { id: "g6", type: "inclusive" } diff --git a/solon-projects/solon-logging/solon-logging-log4j2/pom.xml b/solon-projects/solon-logging/solon-logging-log4j2/pom.xml index a939ad8c0cd50cb1168c9d6ad6100e2e4f1cf0c2..380c66e8c1d08ec4733316a6aa358aa1be7619dd 100644 --- a/solon-projects/solon-logging/solon-logging-log4j2/pom.xml +++ b/solon-projects/solon-logging/solon-logging-log4j2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-logging/solon-logging-logback/pom.xml b/solon-projects/solon-logging/solon-logging-logback/pom.xml index 3d6f545d918fc58aa2a1eaf97c8b87b6aeaa5a05..d78f545f2ef29fcbf94a8c3c1276a4ead8b668b6 100644 --- a/solon-projects/solon-logging/solon-logging-logback/pom.xml +++ b/solon-projects/solon-logging/solon-logging-logback/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-logging/solon-logging-logback/src/main/java/ch/qos/logback/solon/integration/DefaultLogbackConfiguration.java b/solon-projects/solon-logging/solon-logging-logback/src/main/java/ch/qos/logback/solon/integration/DefaultLogbackConfiguration.java index 16aab45f3fa210b83b224690351b6634cf888090..97f7ccb5e64073cc5d45fe31ad46de5c27be7091 100644 --- a/solon-projects/solon-logging/solon-logging-logback/src/main/java/ch/qos/logback/solon/integration/DefaultLogbackConfiguration.java +++ b/solon-projects/solon-logging/solon-logging-logback/src/main/java/ch/qos/logback/solon/integration/DefaultLogbackConfiguration.java @@ -165,7 +165,7 @@ public class DefaultLogbackConfiguration { SizeAndTimeBasedRollingPolicy rollingPolicy = new SizeAndTimeBasedRollingPolicy<>(); rollingPolicy.setContext(config.getContext()); rollingPolicy.setFileNamePattern(resolve(config, "${FILE_LOG_ROLLING}")); - rollingPolicy.setMaxHistory(resolveInt(config, "${FILE_LOG_MAX_HISTORY}}")); + rollingPolicy.setMaxHistory(resolveInt(config, "${FILE_LOG_MAX_HISTORY}")); rollingPolicy.setMaxFileSize(resolveFileSize(config, "${FILE_LOG_MAX_FILE_SIZE}")); //rollingPolicy.setCleanHistoryOnStart(resolveBoolean(config, "${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}")); diff --git a/solon-projects/solon-logging/solon-logging-simple/pom.xml b/solon-projects/solon-logging/solon-logging-simple/pom.xml index e5eabeff4b7c5aa6b930486ed69fe7e599b0db31..416a3a3df32120d056068219a260097309b0f1a6 100644 --- a/solon-projects/solon-logging/solon-logging-simple/pom.xml +++ b/solon-projects/solon-logging/solon-logging-simple/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-logging/solon-logging/pom.xml b/solon-projects/solon-logging/solon-logging/pom.xml index 29f5d18d9f0bf6a46b57cb552a101d2a98456c3f..9f63f20415c2a6cfdd1d8d6349afd281886a229e 100644 --- a/solon-projects/solon-logging/solon-logging/pom.xml +++ b/solon-projects/solon-logging/solon-logging/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-logging_old/solon.logging.log4j2/pom.xml b/solon-projects/solon-logging_old/solon.logging.log4j2/pom.xml index fabfe71e906489a6d2aa56c3e2b56ef9e1bdcb13..f75bdb82a570d9590199d65da11f6a82e625e7e6 100644 --- a/solon-projects/solon-logging_old/solon.logging.log4j2/pom.xml +++ b/solon-projects/solon-logging_old/solon.logging.log4j2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-logging_old/solon.logging.logback/pom.xml b/solon-projects/solon-logging_old/solon.logging.logback/pom.xml index 9efb0a7be85054a1c224844d6fe148c39f57f3b6..90ca32b8e35a6a71ac45bfe82b0d8e65cd168e7b 100644 --- a/solon-projects/solon-logging_old/solon.logging.logback/pom.xml +++ b/solon-projects/solon-logging_old/solon.logging.logback/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-logging_old/solon.logging.simple/pom.xml b/solon-projects/solon-logging_old/solon.logging.simple/pom.xml index 5a41fbbf9165dcecd66f0a523c449e6acb571431..d1faa5f71eb96c49a2f01a86dfc23c9b3826bd76 100644 --- a/solon-projects/solon-logging_old/solon.logging.simple/pom.xml +++ b/solon-projects/solon-logging_old/solon.logging.simple/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-logging_old/solon.logging/pom.xml b/solon-projects/solon-logging_old/solon.logging/pom.xml index ce6ed1b502725cb3f814d982902fca262a2f702c..622de28ff2b6f10029c6b0ca17d95d9736c098b6 100644 --- a/solon-projects/solon-logging_old/solon.logging/pom.xml +++ b/solon-projects/solon-logging_old/solon.logging/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-native/solon-aot/pom.xml b/solon-projects/solon-native/solon-aot/pom.xml index 475263de2e2af2eaa75b49c49db89b3b3f68c039..db5d0b6ab536ddf38be99b9140cadb4ddce5bd97 100644 --- a/solon-projects/solon-native/solon-aot/pom.xml +++ b/solon-projects/solon-native/solon-aot/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-native_old/solon.aot/pom.xml b/solon-projects/solon-native_old/solon.aot/pom.xml index a16c291ea7820919ba534b8bb9045f6ca96ffed2..075e5d667b0dbe3cbc1f205c69f4edd8f6f38e61 100644 --- a/solon-projects/solon-native_old/solon.aot/pom.xml +++ b/solon-projects/solon-native_old/solon.aot/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-net/solon-net-httputils/pom.xml b/solon-projects/solon-net/solon-net-httputils/pom.xml index d8b47767395967c34a47c64ad6bd0eea4b9d7dad..1842076252a980d0c3169f71f0d82d606d263ff7 100644 --- a/solon-projects/solon-net/solon-net-httputils/pom.xml +++ b/solon-projects/solon-net/solon-net-httputils/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-net/solon-net-stomp/pom.xml b/solon-projects/solon-net/solon-net-stomp/pom.xml index 13fe0f7d1a9f751643749db3943c08a0cae78398..0a5589b0875e4995b2dc0a6331a32dcbb6f266e5 100644 --- a/solon-projects/solon-net/solon-net-stomp/pom.xml +++ b/solon-projects/solon-net/solon-net-stomp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-net/solon-net/pom.xml b/solon-projects/solon-net/solon-net/pom.xml index 1b0e60a35dea06774245a4adae0c9dcc107d20b9..b38cb04fa6268e6636074a95b79b072093e5805d 100644 --- a/solon-projects/solon-net/solon-net/pom.xml +++ b/solon-projects/solon-net/solon-net/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-net_old/solon.net.httputils/pom.xml b/solon-projects/solon-net_old/solon.net.httputils/pom.xml index ee4a231865cf8740e57d50fc2a22da2215d5fd2c..98175953955d7a0dc841108d3946b2d18d2b313a 100644 --- a/solon-projects/solon-net_old/solon.net.httputils/pom.xml +++ b/solon-projects/solon-net_old/solon.net.httputils/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-net_old/solon.net/pom.xml b/solon-projects/solon-net_old/solon.net/pom.xml index b00e99ee2b34fde364a17fc21e4d89e9eac336be..177aab350b2476b262bd45ba1ea3f1134850fc6f 100644 --- a/solon-projects/solon-net_old/solon.net/pom.xml +++ b/solon-projects/solon-net_old/solon.net/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-rx/solon-rx/pom.xml b/solon-projects/solon-rx/solon-rx/pom.xml index 8fcb769ab6a2a12b59be99edc857c7532abb8c4d..f2693a14b4564b9cb5bf11c3f6cf2e1ca5f5ada5 100644 --- a/solon-projects/solon-rx/solon-rx/pom.xml +++ b/solon-projects/solon-rx/solon-rx/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-scheduling/solon-scheduling-quartz/pom.xml b/solon-projects/solon-scheduling/solon-scheduling-quartz/pom.xml index da2c0eb7d861ca0ca0384698d251996b8f2edac6..dffa0ce3c8e0cc3cf3f96e70b99337a3b1716f13 100644 --- a/solon-projects/solon-scheduling/solon-scheduling-quartz/pom.xml +++ b/solon-projects/solon-scheduling/solon-scheduling-quartz/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-scheduling/solon-scheduling-simple/pom.xml b/solon-projects/solon-scheduling/solon-scheduling-simple/pom.xml index 57dd3a3ff44f98913114e1534cb8cf7bff3e0e46..4f6df0f82aee6a45392c13e78905a27009b941a3 100644 --- a/solon-projects/solon-scheduling/solon-scheduling-simple/pom.xml +++ b/solon-projects/solon-scheduling/solon-scheduling-simple/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-scheduling/solon-scheduling/pom.xml b/solon-projects/solon-scheduling/solon-scheduling/pom.xml index 70b61b3f8e7b5f93f2ca0715d8400dc485815927..660b5761de14977939d0ab3b33fd8ac22e633409 100644 --- a/solon-projects/solon-scheduling/solon-scheduling/pom.xml +++ b/solon-projects/solon-scheduling/solon-scheduling/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-scheduling_old/solon.scheduling.quartz/pom.xml b/solon-projects/solon-scheduling_old/solon.scheduling.quartz/pom.xml index 54d1352d93c4229893f4c49a9cc160dbc785efd1..0e04f40373c7078c387a4ad84223eb34ec713894 100644 --- a/solon-projects/solon-scheduling_old/solon.scheduling.quartz/pom.xml +++ b/solon-projects/solon-scheduling_old/solon.scheduling.quartz/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-scheduling_old/solon.scheduling.simple/pom.xml b/solon-projects/solon-scheduling_old/solon.scheduling.simple/pom.xml index f038e4cc1b055f33e2ce98dfa965939f828e9b31..e54dd5e87b521189bc90020e69220b6cb7117fe2 100644 --- a/solon-projects/solon-scheduling_old/solon.scheduling.simple/pom.xml +++ b/solon-projects/solon-scheduling_old/solon.scheduling.simple/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-scheduling_old/solon.scheduling/pom.xml b/solon-projects/solon-scheduling_old/solon.scheduling/pom.xml index 0ff14d6f72cf3fd04ed66f4a904f4490dd163ed5..c4fcfb2c27457eb27eaa34ca3ea8731ec7bce039 100644 --- a/solon-projects/solon-scheduling_old/solon.scheduling/pom.xml +++ b/solon-projects/solon-scheduling_old/solon.scheduling/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security/solon-security-auth/pom.xml b/solon-projects/solon-security/solon-security-auth/pom.xml index c0bb2ace330d0dffe7ecdb6f10c3d79936a463fa..b25c2ba871e5f2f9c888a94cd15e5bc5fadab4b0 100644 --- a/solon-projects/solon-security/solon-security-auth/pom.xml +++ b/solon-projects/solon-security/solon-security-auth/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security/solon-security-validation/pom.xml b/solon-projects/solon-security/solon-security-validation/pom.xml index e146e8ae67e9630ad6d017791e1fa05ae0719cb0..de563cdf28aebddb0258ff35014aa3c5f23baadf 100644 --- a/solon-projects/solon-security/solon-security-validation/pom.xml +++ b/solon-projects/solon-security/solon-security-validation/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security/solon-security-vault/pom.xml b/solon-projects/solon-security/solon-security-vault/pom.xml index 0e1c5bb4023240bf3d213b2a3f360dddaad46054..7c78af8163d79be4eb50e229cebcfd59eff0ca01 100644 --- a/solon-projects/solon-security/solon-security-vault/pom.xml +++ b/solon-projects/solon-security/solon-security-vault/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security_old/solon.auth/pom.xml b/solon-projects/solon-security_old/solon.auth/pom.xml index 28299638c0c89b348594d3631bd3df03102c3acb..4d575e9ba7bedb9e57b62c2236c7fd2985fd2972 100644 --- a/solon-projects/solon-security_old/solon.auth/pom.xml +++ b/solon-projects/solon-security_old/solon.auth/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security_old/solon.security.auth/pom.xml b/solon-projects/solon-security_old/solon.security.auth/pom.xml index d9f92197b6bb9ff387fec1f7ed71144038349aaf..61c167ef24ad00fed31b336fdb47c47ee85473ba 100644 --- a/solon-projects/solon-security_old/solon.security.auth/pom.xml +++ b/solon-projects/solon-security_old/solon.security.auth/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security_old/solon.security.validation/pom.xml b/solon-projects/solon-security_old/solon.security.validation/pom.xml index 7eaddc1f1ad77c88090add94001b38a4d6b85a17..3e290e9f283be85217b2ac0779456ff36da57090 100644 --- a/solon-projects/solon-security_old/solon.security.validation/pom.xml +++ b/solon-projects/solon-security_old/solon.security.validation/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security_old/solon.security.vault/pom.xml b/solon-projects/solon-security_old/solon.security.vault/pom.xml index 0b97968154c9947fecb58e3f45a4bd2fd6e2f90c..3788d7fab3be1cc6512459f7257af4953d702ea8 100644 --- a/solon-projects/solon-security_old/solon.security.vault/pom.xml +++ b/solon-projects/solon-security_old/solon.security.vault/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security_old/solon.validation/pom.xml b/solon-projects/solon-security_old/solon.validation/pom.xml index 212a4f241b7e9561a6800701b12a9d1e6de6f1a6..1df03c15e43225e6db56e55ece0ce9ca8472bb3f 100644 --- a/solon-projects/solon-security_old/solon.validation/pom.xml +++ b/solon-projects/solon-security_old/solon.validation/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-security_old/solon.vault/pom.xml b/solon-projects/solon-security_old/solon.vault/pom.xml index 4d5d91941a83ce3afa95b6b610a07ab2d06d7b9f..08a005316ca3bdadf722ef9c5613b2174f4552ac 100644 --- a/solon-projects/solon-security_old/solon.vault/pom.xml +++ b/solon-projects/solon-security_old/solon.vault/pom.xml @@ -6,7 +6,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-abc/pom.xml b/solon-projects/solon-serialization/solon-serialization-abc/pom.xml index 344ff4b5cd003b1af5c758ef31f0b5ebc6986278..50b47e18096a79f7f10ed2a28c698fda66ee92d0 100644 --- a/solon-projects/solon-serialization/solon-serialization-abc/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-abc/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-fastjson/pom.xml b/solon-projects/solon-serialization/solon-serialization-fastjson/pom.xml index eb32a2a0ca89a54936d8e66b6a698714449ee310..52981e545462b846ce5d66d21b157ea874c5f17b 100644 --- a/solon-projects/solon-serialization/solon-serialization-fastjson/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-fastjson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-fastjson2/pom.xml b/solon-projects/solon-serialization/solon-serialization-fastjson2/pom.xml index 138881fcd2073482862d1b760e562c0d0bfe3c18..ad3517f7ad287727d1079bba39f1ad1e2b84a4e9 100644 --- a/solon-projects/solon-serialization/solon-serialization-fastjson2/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-fastjson2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-fury/pom.xml b/solon-projects/solon-serialization/solon-serialization-fury/pom.xml index 1b23ff56865ae4a6e90e2856c97267def43a7c04..7e6e7a07c8f92798001968907a09f66b376c6b33 100644 --- a/solon-projects/solon-serialization/solon-serialization-fury/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-fury/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-gson/pom.xml b/solon-projects/solon-serialization/solon-serialization-gson/pom.xml index 88baaecdd9a471d0195407d92c3936ac2d1e6e34..178b41f52969def64d46007e2b5187f3b926cc08 100644 --- a/solon-projects/solon-serialization/solon-serialization-gson/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-gson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-hessian/pom.xml b/solon-projects/solon-serialization/solon-serialization-hessian/pom.xml index ff01b16b5256402d4ac89ece0c8c31b4c58af3fb..6217380bce745cc8c929ac614d2c6a654e64f068 100644 --- a/solon-projects/solon-serialization/solon-serialization-hessian/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-hessian/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-jackson-xml/pom.xml b/solon-projects/solon-serialization/solon-serialization-jackson-xml/pom.xml index b97b0e097d37cfddb4ff89b0c7a4f8eccff24667..fa0029fca88ac9360dd103f297b54e177f52c7a4 100644 --- a/solon-projects/solon-serialization/solon-serialization-jackson-xml/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-jackson-xml/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-jackson/pom.xml b/solon-projects/solon-serialization/solon-serialization-jackson/pom.xml index 2c0f5a5d141e2185d7bf7962bd7724ffba9afa7f..39bc63e0519701e99a1ef1ec6656e067bf44f8b8 100644 --- a/solon-projects/solon-serialization/solon-serialization-jackson/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-jackson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-jackson/src/main/java/org/noear/solon/serialization/jackson/impl/TimeDeserializer.java b/solon-projects/solon-serialization/solon-serialization-jackson/src/main/java/org/noear/solon/serialization/jackson/impl/TimeDeserializer.java index ab0b53c297bbebeaefc7503adca4a9cd5c4d9268..a30f1ab46ed5e37eec25c52942ded65998758361 100644 --- a/solon-projects/solon-serialization/solon-serialization-jackson/src/main/java/org/noear/solon/serialization/jackson/impl/TimeDeserializer.java +++ b/solon-projects/solon-serialization/solon-serialization-jackson/src/main/java/org/noear/solon/serialization/jackson/impl/TimeDeserializer.java @@ -44,6 +44,10 @@ public class TimeDeserializer extends JsonDeserializer { try { Date date = DateUtil.parse(val); + if (date == null) { + return null; + } + if (type == LocalDateTime.class) { return (T) LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); } else if (type == LocalDate.class) { diff --git a/solon-projects/solon-serialization/solon-serialization-kryo/pom.xml b/solon-projects/solon-serialization/solon-serialization-kryo/pom.xml index f7e66ec08977287db814ecc8bffecf5b5715f94b..43c900a4bae94d6a418eae0e29d2eef84116c784 100644 --- a/solon-projects/solon-serialization/solon-serialization-kryo/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-kryo/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-properties/pom.xml b/solon-projects/solon-serialization/solon-serialization-properties/pom.xml index a27bdb3e8fd0fdf48d6ad9bd029b719bed090374..85db45adc3f70d742966ebe1514cae8bce690786 100644 --- a/solon-projects/solon-serialization/solon-serialization-properties/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-properties/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-protostuff/pom.xml b/solon-projects/solon-serialization/solon-serialization-protostuff/pom.xml index 9e7f167f6aaa9d64d6c8bf3e6725cbc61efc3994..f03cebe8aebf8f90ef3b5c6af20365c2c5645b21 100644 --- a/solon-projects/solon-serialization/solon-serialization-protostuff/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-protostuff/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization-snack3/pom.xml b/solon-projects/solon-serialization/solon-serialization-snack3/pom.xml index 4529e54d60d89dd8dcde9887fe5298c6b2ccff93..5937bc4f5317fc2e64548b80059df1d6c17ffd61 100644 --- a/solon-projects/solon-serialization/solon-serialization-snack3/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization-snack3/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization/pom.xml b/solon-projects/solon-serialization/solon-serialization/pom.xml index 0a7234e2d08423159a007d6f40bbba8f2f0b2420..fb6aa3dcf837e625884050e9d3e6c63abd65d6c4 100644 --- a/solon-projects/solon-serialization/solon-serialization/pom.xml +++ b/solon-projects/solon-serialization/solon-serialization/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization/solon-serialization/src/main/java/org/noear/solon/serialization/StringSerializerRender.java b/solon-projects/solon-serialization/solon-serialization/src/main/java/org/noear/solon/serialization/StringSerializerRender.java index 61dacf9af5f49c25849142aba53d4776d05460d1..2d17684d56af70c487df1d229625614cb5b8cf27 100644 --- a/solon-projects/solon-serialization/solon-serialization/src/main/java/org/noear/solon/serialization/StringSerializerRender.java +++ b/solon-projects/solon-serialization/solon-serialization/src/main/java/org/noear/solon/serialization/StringSerializerRender.java @@ -38,7 +38,7 @@ public class StringSerializerRender implements Render { /** * 是否类型化的 - * */ + */ public boolean isTyped() { return typed; } @@ -133,7 +133,10 @@ public class StringSerializerRender implements Render { if (data instanceof String && isTyped() == false) { ctx.output(text); } else { - ctx.contentType(serializer.mimeType()); + if (ctx.contentTypeNew() == null) { + //如果没有设置过,用默认的 //如 ndjson 是在外面设定的 + ctx.contentType(serializer.mimeType()); + } ctx.output(text); } } diff --git a/solon-projects/solon-serialization_old/solon.serialization.fastjson/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.fastjson/pom.xml index 5dd06fadf804163b36e9b659fa2d667a834d1373..4db9b6474fa2d68c0eaff2be885664ff843282c6 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.fastjson/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.fastjson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.fastjson2/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.fastjson2/pom.xml index 3a63bf1edd54e2eaa2109e965075c8a0cfa67156..eb27a9003951c8e3c02975f40a436231216b13cc 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.fastjson2/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.fastjson2/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.fury/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.fury/pom.xml index 2a41f2a5b0243a3b20486f48b702158a109b0d91..01e31cd987addc722156fd549aee7ddef72b42cd 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.fury/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.fury/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.gson/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.gson/pom.xml index 5e15d5bb1a16a1122261726268ec3839fd0f8603..bd6c3b6744dc9969a663948437f3b33c076ab2b7 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.gson/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.gson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.hessian/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.hessian/pom.xml index f087c5789d721c445af8b7b1d23d30a70ee631f9..813dcd0b1dcb7fe4ee61558d758101716da70858 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.hessian/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.hessian/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.jackson.xml/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.jackson.xml/pom.xml index c0fc71f00f0d084bc7b34c122ca556515a844064..ae6668fa2e64f08b76b48ee9be25f67738b55cc6 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.jackson.xml/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.jackson.xml/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.jackson/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.jackson/pom.xml index 5a28ba50bda4903da4f6d56e5e68764bda86555d..f8d5c0e6fea62cd5e9a1ad1cdeaff3b6a6b6822f 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.jackson/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.jackson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.properties/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.properties/pom.xml index 8d5830a5aa300d492f7ef0ad4f91526aae30a690..da7413991fc662ca2c329e465810809c05aa7b35 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.properties/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.properties/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.protostuff/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.protostuff/pom.xml index ac98a4946b8770d74d7bd38af4e9476dde3036e0..91252cf012941b7656b64f851eb4a769f0e7a272 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.protostuff/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.protostuff/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization.snack3/pom.xml b/solon-projects/solon-serialization_old/solon.serialization.snack3/pom.xml index 824d5e2a4a47eb3559a7560676dab4cd604c6fb2..7553e589e0f72318fe7dc8bf101a66206bdb0da7 100644 --- a/solon-projects/solon-serialization_old/solon.serialization.snack3/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization.snack3/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-serialization_old/solon.serialization/pom.xml b/solon-projects/solon-serialization_old/solon.serialization/pom.xml index 6b9ba557bf754577984afff0fdabeaa46e18ffd5..51642c8148db131c43597c1253fb21eb1e763c3e 100644 --- a/solon-projects/solon-serialization_old/solon.serialization/pom.xml +++ b/solon-projects/solon-serialization_old/solon.serialization/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-testing/solon-test-junit4/pom.xml b/solon-projects/solon-testing/solon-test-junit4/pom.xml index 5c5c73fc6a5f1c74b0e87899dcdd56547f2da6bd..c5ccb6581a2fd6e14427f71a589df553a6d7e66b 100644 --- a/solon-projects/solon-testing/solon-test-junit4/pom.xml +++ b/solon-projects/solon-testing/solon-test-junit4/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-testing/solon-test-junit5/pom.xml b/solon-projects/solon-testing/solon-test-junit5/pom.xml index 86aae7af0d9b3a8b8df989a11ae92145b4bc2d76..1f8282068a4afeccadf1d07bdc7c1a72daa11e9f 100644 --- a/solon-projects/solon-testing/solon-test-junit5/pom.xml +++ b/solon-projects/solon-testing/solon-test-junit5/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-testing/solon-test/pom.xml b/solon-projects/solon-testing/solon-test/pom.xml index 0bd12c0168521053b03339d7ec6bc0081994dbb2..a2a9345f19e1cd7f23ce54fe742fb4295bff6bb3 100644 --- a/solon-projects/solon-testing/solon-test/pom.xml +++ b/solon-projects/solon-testing/solon-test/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-tool/solon-maven-plugin/pom.xml b/solon-projects/solon-tool/solon-maven-plugin/pom.xml index 39213c84d2d047156def83cda1fff1d3933049d1..6d09c4a165299bab78432c3b7811cbb094701c60 100644 --- a/solon-projects/solon-tool/solon-maven-plugin/pom.xml +++ b/solon-projects/solon-tool/solon-maven-plugin/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view-beetl/pom.xml b/solon-projects/solon-view/solon-view-beetl/pom.xml index ffc18284d7d9dfc0f75b57e09fcc5532cbbdb04b..5a5ba61c2ca28444eea1b4d1b273f929dcdd4317 100644 --- a/solon-projects/solon-view/solon-view-beetl/pom.xml +++ b/solon-projects/solon-view/solon-view-beetl/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view-enjoy/pom.xml b/solon-projects/solon-view/solon-view-enjoy/pom.xml index d52b25e74468ed36259de13f3bc15062f8438562..c7421225e058a8392edd21a7157be7901de73aff 100644 --- a/solon-projects/solon-view/solon-view-enjoy/pom.xml +++ b/solon-projects/solon-view/solon-view-enjoy/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view-freemarker/pom.xml b/solon-projects/solon-view/solon-view-freemarker/pom.xml index 88e39358b999544dd32ee5abe55c59d94b364fb0..ed3dfadc65fc18f54ea7b8bb33f6d9da593f5993 100644 --- a/solon-projects/solon-view/solon-view-freemarker/pom.xml +++ b/solon-projects/solon-view/solon-view-freemarker/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view-jsp-jakarta/pom.xml b/solon-projects/solon-view/solon-view-jsp-jakarta/pom.xml index 504015de5d5726c52cf00ad63978b0d6f7f98b9e..d61c47cab6dc459e04f675858b940cfe3109f7f7 100644 --- a/solon-projects/solon-view/solon-view-jsp-jakarta/pom.xml +++ b/solon-projects/solon-view/solon-view-jsp-jakarta/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view-jsp/pom.xml b/solon-projects/solon-view/solon-view-jsp/pom.xml index 4e82e4eedc138bb00dbdbdd7ccf667fade109249..059407d469ff4428f421ce7a5a82f8524b37a198 100644 --- a/solon-projects/solon-view/solon-view-jsp/pom.xml +++ b/solon-projects/solon-view/solon-view-jsp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view-thymeleaf/pom.xml b/solon-projects/solon-view/solon-view-thymeleaf/pom.xml index 005f14f627854066d2850a92fdd56291ee7a116e..2b667aaf5f0ebea902cfbf6547f1ae9cc948e9b7 100644 --- a/solon-projects/solon-view/solon-view-thymeleaf/pom.xml +++ b/solon-projects/solon-view/solon-view-thymeleaf/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view-velocity/pom.xml b/solon-projects/solon-view/solon-view-velocity/pom.xml index c594d77339cc625afcaa754f70ab912ec657267d..101b202189836d5e0b5e88ece7c6bad5d06ba223 100644 --- a/solon-projects/solon-view/solon-view-velocity/pom.xml +++ b/solon-projects/solon-view/solon-view-velocity/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view/solon-view/pom.xml b/solon-projects/solon-view/solon-view/pom.xml index f8c555d4ede2fa5a375e76d0b72fac00ad0b5eac..fa924bab384d39f9ce602805b8f1a86b7e1b40a8 100644 --- a/solon-projects/solon-view/solon-view/pom.xml +++ b/solon-projects/solon-view/solon-view/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view_old/solon.view.beetl/pom.xml b/solon-projects/solon-view_old/solon.view.beetl/pom.xml index 934dabf4b1857dea3d010b85ee73fbf9ef015229..d0e9224f93350235a36f5850f073be083a4db6c7 100644 --- a/solon-projects/solon-view_old/solon.view.beetl/pom.xml +++ b/solon-projects/solon-view_old/solon.view.beetl/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view_old/solon.view.enjoy/pom.xml b/solon-projects/solon-view_old/solon.view.enjoy/pom.xml index 2a557ad78312c573fb703f27ec2467a5a73272d3..98f324945e8ee6f56229ae1008a1c13ed83a8c12 100644 --- a/solon-projects/solon-view_old/solon.view.enjoy/pom.xml +++ b/solon-projects/solon-view_old/solon.view.enjoy/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view_old/solon.view.freemarker/pom.xml b/solon-projects/solon-view_old/solon.view.freemarker/pom.xml index d1328349da5331cd0e5eca51b93734eb58acf597..c41ba0ddb807c08aec04d72913ea4b5f4d6c2eb0 100644 --- a/solon-projects/solon-view_old/solon.view.freemarker/pom.xml +++ b/solon-projects/solon-view_old/solon.view.freemarker/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view_old/solon.view.jsp/pom.xml b/solon-projects/solon-view_old/solon.view.jsp/pom.xml index 67235fa28fd9658311b5eb0beee938f09ad12d8e..045dee703cecf0821c88817e2d7a40916137269b 100644 --- a/solon-projects/solon-view_old/solon.view.jsp/pom.xml +++ b/solon-projects/solon-view_old/solon.view.jsp/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view_old/solon.view.thymeleaf/pom.xml b/solon-projects/solon-view_old/solon.view.thymeleaf/pom.xml index 2b05cb94876a96c9bc85a4bcc68ad50cff5f7b55..1f3d43d0a6df5e5620cc72af60f3ba435c27e342 100644 --- a/solon-projects/solon-view_old/solon.view.thymeleaf/pom.xml +++ b/solon-projects/solon-view_old/solon.view.thymeleaf/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view_old/solon.view.velocity/pom.xml b/solon-projects/solon-view_old/solon.view.velocity/pom.xml index 2f2fce88dd1f80b559c033ecf585149ab03f1bab..91726b3dea38af0831bc1d5858cda83a4312b07e 100644 --- a/solon-projects/solon-view_old/solon.view.velocity/pom.xml +++ b/solon-projects/solon-view_old/solon.view.velocity/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-view_old/solon.view/pom.xml b/solon-projects/solon-view_old/solon.view/pom.xml index 17f6b1cc6cd4e2f908a40f868565f62afef3de4d..568f81c725d82eae2558d856e8a412568632fcb7 100644 --- a/solon-projects/solon-view_old/solon.view/pom.xml +++ b/solon-projects/solon-view_old/solon.view/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-sessionstate-jedis/pom.xml b/solon-projects/solon-web/solon-sessionstate-jedis/pom.xml index 4cb8f88e6ac292c96cb6da8df1f5633e511f8d91..d19179284295558c4dda30d5531db24b5c7a869e 100644 --- a/solon-projects/solon-web/solon-sessionstate-jedis/pom.xml +++ b/solon-projects/solon-web/solon-sessionstate-jedis/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-sessionstate-jwt/pom.xml b/solon-projects/solon-web/solon-sessionstate-jwt/pom.xml index e9475a993a8dd8e3277a5035c907ccecc28b3fe9..225ca92443491b2f23801279ce9d93281a70f125 100644 --- a/solon-projects/solon-web/solon-sessionstate-jwt/pom.xml +++ b/solon-projects/solon-web/solon-sessionstate-jwt/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-sessionstate-local/pom.xml b/solon-projects/solon-web/solon-sessionstate-local/pom.xml index 07a885a63d0a41893a5576da1ca92cf6dd18b5dd..51a0738b318ddc2781c2a3f6b7d812d345116bc4 100644 --- a/solon-projects/solon-web/solon-sessionstate-local/pom.xml +++ b/solon-projects/solon-web/solon-sessionstate-local/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-sessionstate-redisson/pom.xml b/solon-projects/solon-web/solon-sessionstate-redisson/pom.xml index beb0170b40638e864d424c95da0d3c0124969817..2333eec89dedada74cb4103336dcbd5487e1459d 100644 --- a/solon-projects/solon-web/solon-sessionstate-redisson/pom.xml +++ b/solon-projects/solon-web/solon-sessionstate-redisson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-cors/pom.xml b/solon-projects/solon-web/solon-web-cors/pom.xml index 428bdd893b2f364a8148b10b35e73e4f05db2a63..ac4d7f8332c92d04d3f79bd6e1c9e0dd4e20c8a9 100644 --- a/solon-projects/solon-web/solon-web-cors/pom.xml +++ b/solon-projects/solon-web/solon-web-cors/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-rx/pom.xml b/solon-projects/solon-web/solon-web-rx/pom.xml index 15acfd509a4a135145e86bc8ad686048212b13cc..b25b7cda650af21fadd35a805019f810cf299fdf 100644 --- a/solon-projects/solon-web/solon-web-rx/pom.xml +++ b/solon-projects/solon-web/solon-web-rx/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml @@ -25,17 +25,24 @@ solon-boot - - org.slf4j - slf4j-api - - io.projectreactor reactor-core ${reactor-core.version} + + io.smallrye.reactive + mutiny + ${mutiny.version} + true + + + + org.slf4j + slf4j-api + + org.noear solon-web diff --git a/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReturnReactiveHandler.java b/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReturnRxHandler.java similarity index 58% rename from solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReturnReactiveHandler.java rename to solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReturnRxHandler.java index 416994d90babcdd88eefc2d2d07c8d8bb75c552f..1be351da1d39a9e0789bcd842c07236588fb6668 100644 --- a/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReturnReactiveHandler.java +++ b/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReturnRxHandler.java @@ -15,9 +15,11 @@ */ package org.noear.solon.web.rx.integration; +import org.noear.solon.web.util.MimeType; import org.noear.solon.core.handle.Action; import org.noear.solon.core.handle.ActionReturnHandler; import org.noear.solon.core.handle.Context; +import org.noear.solon.core.util.ClassUtil; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; @@ -27,7 +29,13 @@ import reactor.core.publisher.Flux; * @author noear * @since 2.3 */ -public class ActionReturnReactiveHandler implements ActionReturnHandler { +public class ActionReturnRxHandler implements ActionReturnHandler { + private final boolean hasReactor; + + public ActionReturnRxHandler() { + hasReactor = ClassUtil.hasClass(() -> Flux.class); + } + @Override public boolean matched(Context ctx, Class returnType) { return Publisher.class.isAssignableFrom(returnType); @@ -40,11 +48,30 @@ public class ActionReturnReactiveHandler implements ActionReturnHandler { throw new IllegalStateException("This boot plugin does not support asynchronous mode"); } + boolean isStreaming = isStreaming(ctx); + Publisher publisher = postPublisher(ctx, action, result, isStreaming); + + publisher.subscribe(new ActionRxSubscriber(ctx, action, isStreaming)); + } + } + + protected boolean isStreaming(Context ctx) { + return MimeType.isStreaming(ctx.acceptNew()); + } + + /** + * 确认发布者 + */ + protected Publisher postPublisher(Context ctx, Action action, Object result, boolean isStreaming) throws Throwable { + if (hasReactor) { + //reactor 排除也不会出错 if (result instanceof Flux) { - ((Publisher) result).subscribe(new ActionReactiveSubscriber(ctx, action, true)); - } else { - ((Publisher) result).subscribe(new ActionReactiveSubscriber(ctx, action, false)); + if (isStreaming == false) { + return ((Flux) result).collectList(); + } } } + + return (Publisher) result; } -} +} \ No newline at end of file diff --git a/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReactiveSubscriber.java b/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionRxSubscriber.java similarity index 46% rename from solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReactiveSubscriber.java rename to solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionRxSubscriber.java index 2da2ada815a0d68af3e49545d8ae5e810a71b9a3..f315867c27e80626f16661c8bc11a6dceed628e6 100644 --- a/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionReactiveSubscriber.java +++ b/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/ActionRxSubscriber.java @@ -15,87 +15,60 @@ */ package org.noear.solon.web.rx.integration; -import org.noear.solon.boot.web.MimeType; import org.noear.solon.core.handle.Action; import org.noear.solon.core.handle.Context; -import org.noear.solon.core.util.RunUtil; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.List; - /** * Action 响应式订阅者 * * @author noear * @since 2.3 */ -public class ActionReactiveSubscriber implements Subscriber { - static final Logger log = LoggerFactory.getLogger(ActionReactiveSubscriber.class); +public class ActionRxSubscriber implements Subscriber { + static final Logger log = LoggerFactory.getLogger(ActionRxSubscriber.class); private Context ctx; private Action action; - private boolean isMultiple; - private boolean isStreamX; - private List list; - private boolean isFirst; + private boolean isStreaming; - public ActionReactiveSubscriber(Context ctx, Action action, boolean isMultiple) { + public ActionRxSubscriber(Context ctx, Action action, boolean isStreaming) { this.ctx = ctx; this.action = action; - this.isMultiple = isMultiple; - - if (ctx.contentTypeNew() != null) { - this.isStreamX = ctx.contentTypeNew().startsWith(MimeType.APPLICATION_X_NDJSON_VALUE); - } else { - this.isStreamX = false; - } - - if (isStreamX == false) { - this.list = new ArrayList<>(); - } + this.isStreaming = isStreaming; } private void request(Subscription subscription) { - if (isMultiple) { - subscription.request(Long.MAX_VALUE); - } else { - subscription.request(1); - } + subscription.request(Long.MAX_VALUE); } @Override public void onSubscribe(Subscription subscription) { - isFirst = true; - - //启动异步模式(-1 表示不超时) if (ctx.asyncStarted()) { - RunUtil.async(() -> request(subscription)); + //如果已是异步 + request(subscription); } else { + //如果不是,启动异步模式(-1 表示不超时) ctx.asyncStart(-1L, () -> request(subscription)); } } + private static final byte[] CRLF = "\n".getBytes(); + @Override public void onNext(Object o) { try { - if (isStreamX) { - try { - if (isFirst == false) { - ctx.output("\n"); - } - action.render(o, ctx, true); - } catch (Throwable e) { - log.warn(e.getMessage(), e); - } - } else { - list.add(o); + action.render(o, ctx, true); + + if (isStreaming) { + ctx.output(CRLF); + ctx.flush(); //流式输出,每次都要刷一下(避免缓存未输出) } - } finally { - isFirst = false; + } catch (Throwable e) { + log.warn(e.getMessage(), e); } } @@ -114,21 +87,7 @@ public class ActionReactiveSubscriber implements Subscriber { @Override public void onComplete() { if (ctx.asyncSupported()) { - try { - if (isStreamX == false) { - if (isMultiple) { - action.render(list, ctx, false); - } else { - if (list.size() > 0) { - action.render(list.get(0), ctx, false); - } - } - } - } catch (Throwable e) { - log.warn(e.getMessage(), e); - } finally { - ctx.asyncComplete(); - } + ctx.asyncComplete(); } } } \ No newline at end of file diff --git a/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/XPluginImpl.java b/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/WebRxPlugin.java similarity index 92% rename from solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/XPluginImpl.java rename to solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/WebRxPlugin.java index 2f5d1914e7e6ce8784c6396f8e9d72791a19decd..03e3b336ef41306dc64c113aad3d2d12dbf83b89 100644 --- a/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/XPluginImpl.java +++ b/solon-projects/solon-web/solon-web-rx/src/main/java/org/noear/solon/web/rx/integration/WebRxPlugin.java @@ -22,9 +22,9 @@ import org.noear.solon.core.Plugin; * @author noear * @since 2.3 */ -public class XPluginImpl implements Plugin { +public class WebRxPlugin implements Plugin { @Override public void start(AppContext context) throws Throwable { - context.app().chainManager().addReturnHandler(new ActionReturnReactiveHandler()); + context.app().chainManager().addReturnHandler(new ActionReturnRxHandler()); } } diff --git a/solon-projects/solon-web/solon-web-rx/src/main/resources/META-INF/solon/solon.web.rx.properties b/solon-projects/solon-web/solon-web-rx/src/main/resources/META-INF/solon/solon.web.rx.properties index ff360ab5ae53cd0ea5c96c6255c35ce62a3af2b6..0c58a74ac79a56258c6aee85fa14a62db2cf0dae 100644 --- a/solon-projects/solon-web/solon-web-rx/src/main/resources/META-INF/solon/solon.web.rx.properties +++ b/solon-projects/solon-web/solon-web-rx/src/main/resources/META-INF/solon/solon.web.rx.properties @@ -1,2 +1,2 @@ -solon.plugin=org.noear.solon.web.rx.integration.XPluginImpl +solon.plugin=org.noear.solon.web.rx.integration.WebRxPlugin solon.plugin.priority=1 \ No newline at end of file diff --git a/solon-projects/solon-web/solon-web-rx/src/test/java/demo/App.java b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/App.java index 1cf20a6f1f4a35a3830c31de6536e61a2791a03f..43122f4a1daa472b66c01b4ad87fce60029dc9e9 100644 --- a/solon-projects/solon-web/solon-web-rx/src/test/java/demo/App.java +++ b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/App.java @@ -16,53 +16,12 @@ package demo; import org.noear.solon.Solon; -import org.noear.solon.annotation.Controller; -import org.noear.solon.annotation.Mapping; -import org.noear.solon.annotation.Produces; -import org.noear.solon.boot.web.MimeType; -import org.noear.solon.core.handle.Context; -import org.noear.solon.core.util.RunUtil; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.core.publisher.MonoSink; - -import java.time.Duration; -import java.util.concurrent.atomic.AtomicReference; /** * @author noear 2023/6/19 created */ -@Controller public class App { public static void main(String[] args) { Solon.start(App.class, args); } - - @Mapping("m1") - public Mono m1(String name) { - return Mono.just("Hello " + name); - } - - @Mapping("f1") - public Flux f1(String name) { - return Flux.just("Hello " + name, "hello2 " + name); - } - - @Produces(MimeType.APPLICATION_X_NDJSON_VALUE) - @Mapping("f2") - public Flux f2(String name) { - return Flux.just("Hello " + name, "hello2 " + name); - } - - @Mapping("t1") - public Mono t1(Context ctx) { - ctx.asyncStart(100L, null); - return Mono.delay(Duration.ofMillis(500)); - } - - @Mapping("t2") - public Mono t2(Context ctx) { - ctx.asyncStart(500L, null); - return Mono.delay(Duration.ofMillis(100)); - } } diff --git a/solon-projects/solon-web/solon-web-rx/src/test/java/demo/AppRouterInterceptor.java b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/AppRouterInterceptor.java deleted file mode 100644 index 08198cf26a26bcd752e8d1ad2e00a9a3c253d4c9..0000000000000000000000000000000000000000 --- a/solon-projects/solon-web/solon-web-rx/src/test/java/demo/AppRouterInterceptor.java +++ /dev/null @@ -1,27 +0,0 @@ -package demo; - -import org.noear.solon.annotation.Component; -import org.noear.solon.boot.web.MimeType; -import org.noear.solon.core.handle.Action; -import org.noear.solon.core.handle.Context; -import org.noear.solon.core.handle.Handler; -import org.noear.solon.core.route.RouterInterceptor; -import org.noear.solon.core.route.RouterInterceptorChain; -import reactor.core.publisher.Flux; - -/** - * @author noear 2024/8/30 created - */ -//@Component -public class AppRouterInterceptor implements RouterInterceptor { - @Override - public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable { - //根据返回类型,构建 contentType - Action action = (Action) mainHandler; - if (action != null && action.method().getReturnType() == Flux.class) { - ctx.contentType(MimeType.APPLICATION_X_NDJSON_VALUE); - } - - chain.doIntercept(ctx, mainHandler); - } -} diff --git a/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case1Controller.java b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case1Controller.java new file mode 100644 index 0000000000000000000000000000000000000000..cd11dffda31edf60a7e68bf5735e5620467c8e6d --- /dev/null +++ b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case1Controller.java @@ -0,0 +1,68 @@ +/* + * Copyright 2017-2025 noear.org and authors + * + * 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 + * + * https://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 demo; + +import org.noear.solon.annotation.Controller; +import org.noear.solon.annotation.Mapping; +import org.noear.solon.annotation.Produces; +import org.noear.solon.web.util.MimeType; +import org.noear.solon.core.handle.Context; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.time.Duration; +import java.util.List; + +/** + * @author noear 2023/6/19 created + */ +@Mapping("case1") +@Controller +public class Case1Controller { + @Mapping("m1") + public Mono m1(String name) { + return Mono.just("Hello " + name); + } + + @Mapping("f1") + public Flux f1(String name) { + return Flux.just("Hello " + name, "hello2 " + name); + } + + @Produces(MimeType.APPLICATION_X_NDJSON_VALUE) + @Mapping("f2") + public Flux f2(String name) { + return Flux.just("Hello " + name, "hello2 " + name); + } + + @Mapping("f3") + public Mono> f3(String name) { + return Flux.just("Hello " + name, "hello2 " + name) + .collectList(); + } + + @Mapping("t1") + public Mono t1(Context ctx) { + ctx.asyncStart(100L, null); + return Mono.delay(Duration.ofMillis(500)); + } + + @Mapping("t2") + public Mono t2(Context ctx) { + ctx.asyncStart(500L, null); + return Mono.delay(Duration.ofMillis(100)); + } +} diff --git a/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case2Controller.java b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case2Controller.java new file mode 100644 index 0000000000000000000000000000000000000000..bd2e8fe365dd844eb353db6e7a27003277f9f13f --- /dev/null +++ b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case2Controller.java @@ -0,0 +1,69 @@ +/* + * Copyright 2017-2025 noear.org and authors + * + * 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 + * + * https://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 demo; + +import io.smallrye.mutiny.Multi; +import io.smallrye.mutiny.Uni; +import org.noear.solon.annotation.Controller; +import org.noear.solon.annotation.Mapping; +import org.noear.solon.annotation.Produces; +import org.noear.solon.web.util.MimeType; +import org.noear.solon.core.handle.Context; + +import java.time.Duration; +import java.util.List; + +/** + * @author noear 2023/6/19 created + */ +@Mapping("case2") +@Controller +public class Case2Controller { + + @Mapping("m1") + public Uni m1(String name) { + return Uni.createFrom().item("Hello " + name); + } + + @Mapping("f1") + public Multi f1(String name) { + return Multi.createFrom().items("Hello " + name, "hello2 " + name); + } + + @Produces(MimeType.APPLICATION_X_NDJSON_VALUE) + @Mapping("f2") + public Multi f2(String name) { + return Multi.createFrom().items("Hello " + name, "hello2 " + name); + } + + @Mapping("f3") + public Uni> f3(String name) { + return Multi.createFrom().items("Hello " + name, "hello2 " + name) + .collect().asList(); + } + + @Mapping("t1") + public Uni t1(Context ctx) { + ctx.asyncStart(100L, null); + return Uni.createFrom().item(1L).onItem().delayIt().by(Duration.ofMillis(500)); + } + + @Mapping("t2") + public Uni t2(Context ctx) { + ctx.asyncStart(500L, null); + return Uni.createFrom().item(1L).onItem().delayIt().by(Duration.ofMillis(100)); + } +} diff --git a/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case2ReturnRxHandler.java b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case2ReturnRxHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..4f4c1635d5c4fd6e30e83cc791e10dc12c061440 --- /dev/null +++ b/solon-projects/solon-web/solon-web-rx/src/test/java/demo/Case2ReturnRxHandler.java @@ -0,0 +1,34 @@ +package demo; + +import io.smallrye.mutiny.Multi; +import io.smallrye.mutiny.Uni; +import org.noear.solon.annotation.Component; +import org.noear.solon.core.handle.Action; +import org.noear.solon.core.handle.Context; +import org.noear.solon.web.rx.integration.ActionReturnRxHandler; +import org.reactivestreams.Publisher; + +/** + * @author noear 2025/1/29 created + */ +@Component(index = -1) +public class Case2ReturnRxHandler extends ActionReturnRxHandler { + @Override + public boolean matched(Context ctx, Class returnType) { + return Multi.class.isAssignableFrom(returnType) + || Uni.class.isAssignableFrom(returnType); + } + + @Override + protected Publisher postPublisher(Context ctx, Action action, Object result, boolean isStreaming) throws Throwable { + if (result instanceof Multi) { + if (isStreaming == false) { + return ((Multi) result).collect().asList().toMulti(); + } + } else if (result instanceof Uni) { + return ((Uni) result).toMulti(); + } + + return (Publisher) result; + } +} diff --git a/solon-projects/solon-web/solon-web-rx/src/test/java/features/AppTest.java b/solon-projects/solon-web/solon-web-rx/src/test/java/features/Case1AppTest.java similarity index 45% rename from solon-projects/solon-web/solon-web-rx/src/test/java/features/AppTest.java rename to solon-projects/solon-web/solon-web-rx/src/test/java/features/Case1AppTest.java index a45cecd8a392a520c90fe17020549d57111d3bfe..d37c8d4099116ce5989ad06ccbf3d1c3761b1036 100644 --- a/solon-projects/solon-web/solon-web-rx/src/test/java/features/AppTest.java +++ b/solon-projects/solon-web/solon-web-rx/src/test/java/features/Case1AppTest.java @@ -2,7 +2,7 @@ package features; import demo.App; import org.junit.jupiter.api.Test; -import org.noear.solon.boot.web.MimeType; +import org.noear.solon.web.util.MimeType; import org.noear.solon.test.HttpTester; import org.noear.solon.test.SolonTest; @@ -10,37 +10,42 @@ import org.noear.solon.test.SolonTest; * @author noear 2024/8/30 created */ @SolonTest(value = App.class,args = "--server.port=7071") -public class AppTest extends HttpTester { +public class Case1AppTest extends HttpTester { @Test public void test1() throws Exception { - assert path("/m1?name=d").get().equals("Hello d"); + assert path("/case1/m1?name=d").get().equals("Hello d"); } @Test public void test2() throws Exception { - assert path("/f1?name=d").get().equals("[\"Hello d\",\"hello2 d\"]"); + assert path("/case1/f1?name=d").get().equals("[\"Hello d\",\"hello2 d\"]"); } @Test public void test3() throws Exception { - assert path("/f1?name=d").header("accept", MimeType.APPLICATION_X_NDJSON_VALUE).get().equals("Hello d\n" + - "hello2 d"); + assert path("/case1/f1?name=d").header("accept", MimeType.APPLICATION_X_NDJSON_VALUE).get().equals("Hello d\n" + + "hello2 d\n"); } @Test public void test4() throws Exception { - assert path("/f2?name=d").get().equals("Hello d\n" + - "hello2 d"); + assert path("/case1/f2?name=d").get().equals("Hello d\n" + + "hello2 d\n"); } @Test public void test5() throws Exception { - assert 500 == path("/t1?").head(); + assert path("/case1/f3?name=d").get().equals("[\"Hello d\",\"hello2 d\"]"); } @Test public void test6() throws Exception { - assert 200 == path("/t2?").head(); + assert 500 == path("/case1/t1?").head(); + } + + @Test + public void test7() throws Exception { + assert 200 == path("/case1/t2?").head(); } } diff --git a/solon-projects/solon-web/solon-web-rx/src/test/java/features/Case2AppTest.java b/solon-projects/solon-web/solon-web-rx/src/test/java/features/Case2AppTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d0017c5bc7f96dc6bbea4891dd3d1821be9fcf73 --- /dev/null +++ b/solon-projects/solon-web/solon-web-rx/src/test/java/features/Case2AppTest.java @@ -0,0 +1,51 @@ +package features; + +import demo.App; +import org.junit.jupiter.api.Test; +import org.noear.solon.web.util.MimeType; +import org.noear.solon.test.HttpTester; +import org.noear.solon.test.SolonTest; + +/** + * @author noear 2024/8/30 created + */ +@SolonTest(value = App.class,args = "--server.port=7071") +public class Case2AppTest extends HttpTester { + @Test + public void test1() throws Exception { + assert path("/case2/m1?name=d").get().equals("Hello d"); + } + + @Test + public void test2() throws Exception { + assert path("/case2/f1?name=d").get().equals("[\"Hello d\",\"hello2 d\"]"); + } + + @Test + public void test3() throws Exception { + assert path("/case2/f1?name=d").header("accept", MimeType.APPLICATION_X_NDJSON_VALUE).get().equals("Hello d\n" + + "hello2 d\n"); + + } + + @Test + public void test4() throws Exception { + assert path("/case2/f2?name=d").get().equals("Hello d\n" + + "hello2 d\n"); + } + + @Test + public void test5() throws Exception { + assert path("/case2/f3?name=d").get().equals("[\"Hello d\",\"hello2 d\"]"); + } + + @Test + public void test6() throws Exception { + assert 500 == path("/case2/t1?").head(); + } + + @Test + public void test7() throws Exception { + assert 200 == path("/case2/t2?").head(); + } +} diff --git a/solon-projects/solon-web/solon-web-sdl/pom.xml b/solon-projects/solon-web/solon-web-sdl/pom.xml index f6198e71f74b1542c0765022d657ded09d2185d8..53c954de094ad0339332f3a034c28a59e5c86965 100644 --- a/solon-projects/solon-web/solon-web-sdl/pom.xml +++ b/solon-projects/solon-web/solon-web-sdl/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-servlet-jakarta/pom.xml b/solon-projects/solon-web/solon-web-servlet-jakarta/pom.xml index d93e10be03f143241c80e4172c726a57015df94c..da315a4fda5c8e3159b228361019291b99df645a 100644 --- a/solon-projects/solon-web/solon-web-servlet-jakarta/pom.xml +++ b/solon-projects/solon-web/solon-web-servlet-jakarta/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-servlet/pom.xml b/solon-projects/solon-web/solon-web-servlet/pom.xml index 10d578f674b8e733d303d35f94f39b3d31ad974d..54dd53f4b2021c5a80b73443184e2b01302b1e4a 100644 --- a/solon-projects/solon-web/solon-web-servlet/pom.xml +++ b/solon-projects/solon-web/solon-web-servlet/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-sse/pom.xml b/solon-projects/solon-web/solon-web-sse/pom.xml index a5f7e63d624a35b259edae76264cc815c526853d..3d028af2d7c17a50de69f9e797eb580ad3bdf673 100644 --- a/solon-projects/solon-web/solon-web-sse/pom.xml +++ b/solon-projects/solon-web/solon-web-sse/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml @@ -17,12 +17,30 @@ org.noear - solon + solon-boot org.slf4j slf4j-api + + + org.noear + solon-logging-simple + test + + + + org.noear + solon-web + test + + + + org.noear + solon-web-rx + test + \ No newline at end of file diff --git a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitter.java b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitter.java index afd312d760f41c60d283b9562fe6bd5f2ba4ea40..f05f2bb4c96d65dfa9a0ee48426c93ba18c2686a 100644 --- a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitter.java +++ b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitter.java @@ -20,7 +20,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.function.Consumer; +import java.util.function.Function; /** * Sse 发射器(操作界面) @@ -31,9 +34,12 @@ import java.util.function.Consumer; public class SseEmitter { static final Logger log = LoggerFactory.getLogger(SseEmitter.class); - private SseEmitterHandler handler; + private SseEmitterHandler eventHandler; + private List eventCached = new ArrayList<>(); + protected Runnable onCompletion; protected Runnable onTimeout; + protected Function onSendPost; protected Consumer onError; protected ConsumerEx onInited; @@ -56,6 +62,14 @@ public class SseEmitter { return this; } + /** + * 发送确认方法 + */ + public SseEmitter onSendPost(Function onSendPost) { + this.onSendPost = onSendPost; + return this; + } + /** * 异常回调方法 */ @@ -95,7 +109,18 @@ public class SseEmitter { * @param event 事件数据 */ public void send(SseEvent event) throws IOException { - handler.send(event); + if (onSendPost != null) { + event = onSendPost.apply(event); + } + + if (event != null) { + if (eventHandler == null) { + //如果未初始化事件处理,先缓存事件 + eventCached.add(event); + } else { + eventHandler.send(event); + } + } } /** @@ -103,7 +128,7 @@ public class SseEmitter { */ public void complete() { try { - handler.complete(); + eventHandler.complete(); } catch (IOException e) { log.warn(e.getMessage(), e); } @@ -114,10 +139,16 @@ public class SseEmitter { * 初始化 */ protected void initialize(SseEmitterHandler handler) throws Throwable { - this.handler = handler; + this.eventHandler = handler; + + //1.发送初始化之前的事件 + for (SseEvent event : eventCached) { + eventHandler.send(event); + } + //2.开始初始化(一般也是发消息) if (onInited != null) { onInited.accept(this); } } -} +} \ No newline at end of file diff --git a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitterHandler.java b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitterHandler.java index fb850d05c245644167ec377c06f7784997be1b80..247ea7106395f955042677c994a896f1aab779b4 100644 --- a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitterHandler.java +++ b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEmitterHandler.java @@ -15,6 +15,7 @@ */ package org.noear.solon.web.sse; +import org.noear.solon.web.util.MimeType; import org.noear.solon.core.handle.Context; import java.io.IOException; @@ -42,13 +43,14 @@ public class SseEmitterHandler { * 开始 */ public void start() throws Throwable { - ctx.contentType("text/event-stream;charset=utf-8"); + ctx.contentType(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE); ctx.asyncListener(new AsyncListenerImpl(this)); ctx.asyncStart(emitter.timeout, null); emitter.initialize(this); } + private static final byte[] CRLF = "\n".getBytes(); /** * 发送事件内容 @@ -66,12 +68,21 @@ public class SseEmitterHandler { SYNC_LOCK.lock(); try { - ctx.output(event.build()); + if (ctx.isHeadersSent() == false) { + ctx.contentType(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE); + } + + ctx.output(event.toString()); + ctx.output(CRLF); ctx.flush(); - } catch (IOException e) { + } catch (Throwable e) { stopOnError(e); - throw e; + if (e instanceof IOException) { + throw (IOException) e; + } else { + throw new IOException(e); + } } finally { SYNC_LOCK.unlock(); } diff --git a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEvent.java b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEvent.java index 22670129afbcc36844fd4b29a7887ace30e530ee..485634bc70fc84c9d2c9823ca319be5c132b0662 100644 --- a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEvent.java +++ b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseEvent.java @@ -23,7 +23,7 @@ package org.noear.solon.web.sse; */ public class SseEvent { - private final StringBuilder sb = new StringBuilder(); + private final StringBuilder buf = new StringBuilder(); /** * 添加 SSE "id" 行. @@ -57,15 +57,24 @@ public class SseEvent { return this; } + /** * 构建为事件文本 - * */ + * + * @deprecated 3.1 {@link #toString()} + */ + @Deprecated public String build() { - return append("\n").sb.toString(); + return toString(); + } + + @Override + public String toString() { + return buf.toString(); } SseEvent append(String text) { - this.sb.append(text); + this.buf.append(text); return this; } } \ No newline at end of file diff --git a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseRender.java b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseRender.java new file mode 100644 index 0000000000000000000000000000000000000000..04923f5589ff0098b1e7febdb550c3d76d25a1e4 --- /dev/null +++ b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/SseRender.java @@ -0,0 +1,70 @@ +/* + * Copyright 2017-2025 noear.org and authors + * + * 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 + * + * https://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 org.noear.solon.web.sse; + +import org.noear.solon.Solon; +import org.noear.solon.web.util.MimeType; +import org.noear.solon.core.handle.Context; +import org.noear.solon.core.handle.Render; + +/** + * sse 渲染器 + * + * @author noear + * @since 3.1 + */ +public class SseRender implements Render { + private static final SseRender instance = new SseRender(); + + public static SseRender getInstance() { + return instance; + } + + @Override + public boolean matched(Context ctx, String accept) { + if (accept == null) { + return false; + } else { + return accept.startsWith(MimeType.TEXT_EVENT_STREAM_VALUE); + } + } + + @Override + public String renderAndReturn(Object data, Context ctx) throws Throwable { + SseEvent event; + if (data instanceof SseEvent) { + event = (SseEvent) data; + } else { + if (data instanceof String) { + event = new SseEvent().data(data); + } else { + String json = Solon.app().renderOfJson().renderAndReturn(data, ctx); + event = new SseEvent().data(json); + } + } + + return event.toString(); + } + + @Override + public void render(Object data, Context ctx) throws Throwable { + if (ctx.isHeadersSent() == false) { + ctx.contentType(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE); + } + + ctx.output(renderAndReturn(data, ctx)); + } +} diff --git a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/integration/XPluginImpl.java b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/integration/WebSsePlugin.java similarity index 84% rename from solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/integration/XPluginImpl.java rename to solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/integration/WebSsePlugin.java index 71f5b2f9210e3b5b0137138e3ec874ff777ba8ec..7d165d8b0d571467812a1c8ea48ab7484e98c17e 100644 --- a/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/integration/XPluginImpl.java +++ b/solon-projects/solon-web/solon-web-sse/src/main/java/org/noear/solon/web/sse/integration/WebSsePlugin.java @@ -17,14 +17,16 @@ package org.noear.solon.web.sse.integration; import org.noear.solon.core.AppContext; import org.noear.solon.core.Plugin; +import org.noear.solon.web.sse.SseRender; /** * @author noear * @since 2.3 */ -public class XPluginImpl implements Plugin { +public class WebSsePlugin implements Plugin { @Override public void start(AppContext context) throws Throwable { + context.app().renderManager().register("@see", SseRender.getInstance()); context.app().chainManager().addReturnHandler(new ActionReturnSseHandler()); } } diff --git a/solon-projects/solon-web/solon-web-sse/src/main/resources/META-INF/solon/solon.web.sse.properties b/solon-projects/solon-web/solon-web-sse/src/main/resources/META-INF/solon/solon.web.sse.properties index 7d65affb4e15122ca7eaf734980594ffb4ab801f..c6d92cbaf57aa710e8c32667b14cb7bff01ee8f8 100644 --- a/solon-projects/solon-web/solon-web-sse/src/main/resources/META-INF/solon/solon.web.sse.properties +++ b/solon-projects/solon-web/solon-web-sse/src/main/resources/META-INF/solon/solon.web.sse.properties @@ -1,2 +1,2 @@ -solon.plugin=org.noear.solon.web.sse.integration.XPluginImpl +solon.plugin=org.noear.solon.web.sse.integration.WebSsePlugin solon.plugin.priority=18 \ No newline at end of file diff --git a/solon-projects/solon-web/solon-web-sse/src/test/java/org/noear/solon/web/sse/demo/controller/SseDemoController.java b/solon-projects/solon-web/solon-web-sse/src/test/java/org/noear/solon/web/sse/demo/controller/SseDemoController.java index 8b9ee851858bbba5b177ec3e00fd06b62be73573..8c6c7f530fe6ec2a75127f53e25c35ef27a48277 100644 --- a/solon-projects/solon-web/solon-web-sse/src/test/java/org/noear/solon/web/sse/demo/controller/SseDemoController.java +++ b/solon-projects/solon-web/solon-web-sse/src/test/java/org/noear/solon/web/sse/demo/controller/SseDemoController.java @@ -19,8 +19,11 @@ import org.noear.solon.Utils; import org.noear.solon.annotation.Controller; import org.noear.solon.annotation.Get; import org.noear.solon.annotation.Mapping; +import org.noear.solon.annotation.Produces; +import org.noear.solon.web.util.MimeType; import org.noear.solon.web.sse.SseEmitter; import org.noear.solon.web.sse.SseEvent; +import reactor.core.publisher.Flux; import java.io.IOException; import java.util.HashMap; @@ -30,9 +33,26 @@ import java.util.Map; public class SseDemoController { static Map emitterMap = new HashMap<>(); + + @Produces(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE) + @Mapping("/sse/rx") + public Flux sse_rx(String id) throws IOException { + return Flux.just( + new SseEvent().data("hello"), + new SseEvent().id(Utils.guid()).name("update").data("test")); + } + + @Produces(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE) + @Mapping("/sse/rx2") + public Flux sse_rx2() throws IOException { + return Flux.just( + new User("d1"), + new User("d2")); + } + @Mapping("/sse/{id}") - public SseEmitter sse(String id) { - return new SseEmitter(0L) + public SseEmitter sse(String id) throws IOException { + SseEmitter emitter = new SseEmitter(-1L) .onCompletion(() -> { emitterMap.remove(id); System.out.println("::onCompletion"); @@ -40,8 +60,12 @@ public class SseDemoController { }) .onError(e -> { e.printStackTrace(); - }) - .onInited(e -> emitterMap.put(id, e)); + }); + + emitterMap.put(id, emitter); + emitter.send("你好!"); + + return emitter; } @Mapping("/sse2/{id}") diff --git a/solon-projects/solon-web/solon-web-sse/src/test/java/org/noear/solon/web/sse/demo/controller/User.java b/solon-projects/solon-web/solon-web-sse/src/test/java/org/noear/solon/web/sse/demo/controller/User.java new file mode 100644 index 0000000000000000000000000000000000000000..62eb3dc2eb8ce03ff527e975e4856ef9f6a3dd70 --- /dev/null +++ b/solon-projects/solon-web/solon-web-sse/src/test/java/org/noear/solon/web/sse/demo/controller/User.java @@ -0,0 +1,16 @@ +package org.noear.solon.web.sse.demo.controller; + +/** + * @author noear 2025/2/13 created + */ +public class User { + private String name; + + public String getName() { + return name; + } + + public User(String name) { + this.name = name; + } +} diff --git a/solon-projects/solon-web/solon-web-staticfiles/pom.xml b/solon-projects/solon-web/solon-web-staticfiles/pom.xml index 20183ec222ffd1bedd5cff139a1275b2769ee661..a4c7a98d8a9a9a301fa965304bd7c05487e9efeb 100644 --- a/solon-projects/solon-web/solon-web-staticfiles/pom.xml +++ b/solon-projects/solon-web/solon-web-staticfiles/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-stop/pom.xml b/solon-projects/solon-web/solon-web-stop/pom.xml index ad55f4713c7324450c5a0ed52fd35615202d591e..f5784c8ea950fe59f400ea9bb166a14b049fa963 100644 --- a/solon-projects/solon-web/solon-web-stop/pom.xml +++ b/solon-projects/solon-web/solon-web-stop/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-vertx/pom.xml b/solon-projects/solon-web/solon-web-vertx/pom.xml index 76e9503cc6f120ab8b059b5c5dc00d60274657ac..f862f7e878c5532b4bd0d9e9a99e6a5e6ab01bca 100644 --- a/solon-projects/solon-web/solon-web-vertx/pom.xml +++ b/solon-projects/solon-web/solon-web-vertx/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-webdav/pom.xml b/solon-projects/solon-web/solon-web-webdav/pom.xml index 3f2aec79d71af1669da7ab9b5c9b80de8f6026fb..fdfb38a6f5fb2859d89ccdfae8bd7f7f6dc4c7f9 100644 --- a/solon-projects/solon-web/solon-web-webdav/pom.xml +++ b/solon-projects/solon-web/solon-web-webdav/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web/solon-web-webservices/pom.xml b/solon-projects/solon-web/solon-web-webservices/pom.xml index c68b8fc70f20f35f349b67d7dbcdd1a01674e0f6..ffb923e89af800416e354cd1825709ec173b63ae 100644 --- a/solon-projects/solon-web/solon-web-webservices/pom.xml +++ b/solon-projects/solon-web/solon-web-webservices/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.sessionstate.jedis/pom.xml b/solon-projects/solon-web_old/solon.sessionstate.jedis/pom.xml index 0616173438e555e1782dee35bbc5918345dbd950..ddbd4e5f431480b15e7bdd82644224d2b7ef1e17 100644 --- a/solon-projects/solon-web_old/solon.sessionstate.jedis/pom.xml +++ b/solon-projects/solon-web_old/solon.sessionstate.jedis/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.sessionstate.jwt/pom.xml b/solon-projects/solon-web_old/solon.sessionstate.jwt/pom.xml index f37190bf32678ef2beb60156bd01736deef899c0..15f0662c113199f1088546875b8b772ef6c1869a 100644 --- a/solon-projects/solon-web_old/solon.sessionstate.jwt/pom.xml +++ b/solon-projects/solon-web_old/solon.sessionstate.jwt/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.sessionstate.local/pom.xml b/solon-projects/solon-web_old/solon.sessionstate.local/pom.xml index 6e453501b655ba483b850e7c88f83e10040e5614..0f9008a3c8bc01b3b1c339117344fe3932b75754 100644 --- a/solon-projects/solon-web_old/solon.sessionstate.local/pom.xml +++ b/solon-projects/solon-web_old/solon.sessionstate.local/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.sessionstate.redisson/pom.xml b/solon-projects/solon-web_old/solon.sessionstate.redisson/pom.xml index 35c46dd97b363f2acfdf9e4055d378963747e1c8..43e252ddef9eaae014225d96a51b24c0e29b13aa 100644 --- a/solon-projects/solon-web_old/solon.sessionstate.redisson/pom.xml +++ b/solon-projects/solon-web_old/solon.sessionstate.redisson/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.cors/pom.xml b/solon-projects/solon-web_old/solon.web.cors/pom.xml index 5fb18d93ac47a52e26450adf545f4e6d373f217a..39a802e219ccf1600a31b117e26dbdb0680fb268 100644 --- a/solon-projects/solon-web_old/solon.web.cors/pom.xml +++ b/solon-projects/solon-web_old/solon.web.cors/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.rx/pom.xml b/solon-projects/solon-web_old/solon.web.rx/pom.xml index 32022d432e5366c1039bde90daf7ecf6054d00c2..109dca89ea71fd8553edb674e2408a46a387af4d 100644 --- a/solon-projects/solon-web_old/solon.web.rx/pom.xml +++ b/solon-projects/solon-web_old/solon.web.rx/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.sdl/pom.xml b/solon-projects/solon-web_old/solon.web.sdl/pom.xml index 417c2b0b5942f8e77a12641fb1b5671a30a4a9cf..9bd44f4794364ffa4914dd5eeefd136f3d1d69fe 100644 --- a/solon-projects/solon-web_old/solon.web.sdl/pom.xml +++ b/solon-projects/solon-web_old/solon.web.sdl/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.servlet.jakarta/pom.xml b/solon-projects/solon-web_old/solon.web.servlet.jakarta/pom.xml index 23544ecb43c214f8aa8bf5aea97b4674849857d1..6a95f98fec7454a2c923b2872619ab93a5a751c3 100644 --- a/solon-projects/solon-web_old/solon.web.servlet.jakarta/pom.xml +++ b/solon-projects/solon-web_old/solon.web.servlet.jakarta/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.servlet/pom.xml b/solon-projects/solon-web_old/solon.web.servlet/pom.xml index e9521233d2fa2e92e85a23b28aa9b4a72084f61c..7cf0727402a5d53c6fcbf2d941c76c41f4054927 100644 --- a/solon-projects/solon-web_old/solon.web.servlet/pom.xml +++ b/solon-projects/solon-web_old/solon.web.servlet/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.sse/pom.xml b/solon-projects/solon-web_old/solon.web.sse/pom.xml index 856f2883f182c2a586b64bd535b7181e8943df7e..37c9ae9bea48cf8c2a066463c22050c4178f2cd6 100644 --- a/solon-projects/solon-web_old/solon.web.sse/pom.xml +++ b/solon-projects/solon-web_old/solon.web.sse/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.staticfiles/pom.xml b/solon-projects/solon-web_old/solon.web.staticfiles/pom.xml index 186c5afa424f7885057be5c0e607518ee08bebbb..06cdc7b5280a03f92d6e3909ab5458fbfe3e92d7 100644 --- a/solon-projects/solon-web_old/solon.web.staticfiles/pom.xml +++ b/solon-projects/solon-web_old/solon.web.staticfiles/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-projects/solon-web_old/solon.web.stop/pom.xml b/solon-projects/solon-web_old/solon.web.stop/pom.xml index a519ed3c3e0409cc7c6185efa9767c4d141f659f..b49ba22da2b150239d7e6ed19e69071e7041eda6 100644 --- a/solon-projects/solon-web_old/solon.web.stop/pom.xml +++ b/solon-projects/solon-web_old/solon.web.stop/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../../solon-parent/pom.xml diff --git a/solon-shortcuts/solon-lib/pom.xml b/solon-shortcuts/solon-lib/pom.xml index 2b38972209c70af0c8c3c2fc8c8e8fa79de815d1..aab43e5a1af23735662c2f0b977dc1fec1fdebca 100644 --- a/solon-shortcuts/solon-lib/pom.xml +++ b/solon-shortcuts/solon-lib/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/solon-shortcuts/solon-web/pom.xml b/solon-shortcuts/solon-web/pom.xml index d2dceec7d6c24e269964e285d531abdfe72896c5..aa0e43f6d30d383fc13217416742b0a1cca06f04 100644 --- a/solon-shortcuts/solon-web/pom.xml +++ b/solon-shortcuts/solon-web/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../../solon-parent/pom.xml diff --git a/solon/pom.xml b/solon/pom.xml index 7ad9ba05bbbee142be1ce5efd09c0a0781c55dd9..2ca6573c88158d91bc3a922d0320dcf67429874d 100644 --- a/solon/pom.xml +++ b/solon/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 3.0.7 + 3.0.8 ../solon-parent/pom.xml diff --git a/solon/src/main/java/org/noear/solon/Solon.java b/solon/src/main/java/org/noear/solon/Solon.java index cc14d2f37f65f6eed15f3f5ca5c9d36b34f46caa..ce5608172c5bd997a1926d9d0065cb85f5a7a90e 100644 --- a/solon/src/main/java/org/noear/solon/Solon.java +++ b/solon/src/main/java/org/noear/solon/Solon.java @@ -54,7 +54,7 @@ public class Solon { * 框架版本号 */ public static String version() { - return "3.0.7"; + return "3.0.8"; } /** diff --git a/solon/src/main/java/org/noear/solon/core/AppContext.java b/solon/src/main/java/org/noear/solon/core/AppContext.java index 0cf6a80234b37ceb496849170de469b566116131..5d3824e87b0b4ae00e2f70a625564553e9de10b1 100644 --- a/solon/src/main/java/org/noear/solon/core/AppContext.java +++ b/solon/src/main/java/org/noear/solon/core/AppContext.java @@ -463,7 +463,7 @@ public class AppContext extends BeanContainer { //ActionReturnHandler if (bw.raw() instanceof ActionReturnHandler) { - app().chainManager().addReturnHandler(bw.raw()); + app().chainManager().addReturnHandler(bw.raw(), bw.index()); singletonHint = "ActionReturnHandler"; } @@ -524,6 +524,7 @@ public class AppContext extends BeanContainer { } boolean enableProxy = false; + List> extraList = new ArrayList<>(); if (beanExtractors.size() > 0 || beanInterceptors.size() > 0) { ClassWrap clzWrap = ClassWrap.get(bw.clz()); @@ -531,20 +532,9 @@ public class AppContext extends BeanContainer { for (Method m : clzWrap.getMethods()) { //只支持公有函数检查 for (Annotation a : m.getAnnotations()) { if (tryExtract) { - BeanExtractor be = beanExtractors.get(a.annotationType()); - - //是否需要提取 - if (be != null) { - try { - be.doExtract(bw, m, a); - } catch (Throwable e) { - e = Utils.throwableUnwrap(e); - if (e instanceof RuntimeException) { - throw (RuntimeException) e; - } else { - throw new RuntimeException(e); - } - } + if (beanExtractors.containsKey(a.annotationType())) { + //有提取处理 + extraList.add(new AbstractMap.SimpleEntry<>(m, a)); } } @@ -557,6 +547,7 @@ public class AppContext extends BeanContainer { } } + //先尝试代理 if (tryProxy) { //是否需要自动代理 enableProxy = enableProxy || beanInterceptorHas(bw.clz()); @@ -565,6 +556,27 @@ public class AppContext extends BeanContainer { ProxyBinder.global().binding(bw); } } + + //再尝试提取 + for (Map.Entry ma : extraList) { + Method m = ma.getKey(); + Annotation a = ma.getValue(); + BeanExtractor be = beanExtractors.get(a.annotationType()); + + //是否需要提取 + if (be != null) { + try { + be.doExtract(bw, m, a); + } catch (Throwable e) { + e = Utils.throwableUnwrap(e); + if (e instanceof RuntimeException) { + throw (RuntimeException) e; + } else { + throw new RuntimeException(e); + } + } + } + } } diff --git a/solon/src/main/java/org/noear/solon/core/ChainManager.java b/solon/src/main/java/org/noear/solon/core/ChainManager.java index cf8fd8f587d3f53941779588581d0546ea3cc1ba..e342113001b760cd88e0b755253a96cfb133a3b6 100644 --- a/solon/src/main/java/org/noear/solon/core/ChainManager.java +++ b/solon/src/main/java/org/noear/solon/core/ChainManager.java @@ -225,18 +225,21 @@ public class ChainManager { //=================== - private final Map, ActionReturnHandler> returnHandlers = new LinkedHashMap<>(); + private final List> returnHandlers = new ArrayList<>(); public void addReturnHandler(ActionReturnHandler e) { - if (e != null) { - returnHandlers.put(e.getClass(), e); - } + addReturnHandler(e, 0); + } + + public void addReturnHandler(ActionReturnHandler e, int index) { + returnHandlers.add(new RankEntity<>(e, index)); + Collections.sort(returnHandlers); } public ActionReturnHandler getReturnHandler(Context ctx, Class returnType) { - for (ActionReturnHandler handler : returnHandlers.values()) { - if (handler.matched(ctx, returnType)) { - return handler; + for (RankEntity entity : returnHandlers) { + if (entity.target.matched(ctx, returnType)) { + return entity.target; } } diff --git a/solon/src/main/java/org/noear/solon/core/InjectGather.java b/solon/src/main/java/org/noear/solon/core/InjectGather.java index 52f8576e55b355581e9d93240e22cdddc89632ff..8652e1c71f1b4652aa1dbeda6be6c33fb68bc70a 100644 --- a/solon/src/main/java/org/noear/solon/core/InjectGather.java +++ b/solon/src/main/java/org/noear/solon/core/InjectGather.java @@ -99,20 +99,12 @@ public class InjectGather implements Runnable, Comparable { return; } - done = true; - if (onDone != null) { - List args = new ArrayList<>(vars.size()); - for (VarHolder p1 : vars) { - args.add(p1.getValue()); - } - - try { - onDone.accept(args.toArray()); - } catch (RuntimeException ex) { - throw ex; - } catch (Throwable ex) { - throw new IllegalStateException(ex); - } + try { + doneDo(); + } catch (RuntimeException ex) { + throw ex; + } catch (Throwable ex) { + throw new IllegalStateException(ex); } } finally { Utils.locker().unlock(); @@ -158,21 +150,30 @@ public class InjectGather implements Runnable, Comparable { } } - if (onDone != null && requireRun) { - //补触 onDone - List args = new ArrayList<>(vars.size()); - for (VarHolder p1 : vars) { - args.add(p1.getValue()); - } - - done = true; - onDone.accept(args.toArray()); + if (requireRun) { + doneDo(); } } finally { Utils.locker().unlock(); } } + private void doneDo() throws Throwable { + if (done) { + return; + } + + done = true; + + if (onDone != null) { + List args = new ArrayList<>(vars.size()); + for (VarHolder p1 : vars) { + args.add(p1.getValue()); + } + onDone.accept(args.toArray()); + } + } + @Override public int compareTo(InjectGather o) { if (this.index == o.index) { diff --git a/solon/src/main/java/org/noear/solon/core/route/RoutingTableDefault.java b/solon/src/main/java/org/noear/solon/core/route/RoutingTableDefault.java index 11adf743890421de952fb4cb0addab50bacf2e06..4c1763d0d57e7ced0d94a7f026006463ab710310 100644 --- a/solon/src/main/java/org/noear/solon/core/route/RoutingTableDefault.java +++ b/solon/src/main/java/org/noear/solon/core/route/RoutingTableDefault.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; * @since 1.0 * */ public class RoutingTableDefault implements RoutingTable { - private List>> table = new ArrayList<>(); + private LinkedList>> table = new LinkedList<>(); /** @@ -52,11 +52,12 @@ public class RoutingTableDefault implements RoutingTable { RankEntity> entity = new RankEntity<>(routing, level, routing.index(), false); - table.add(entity); - if (level != 0 || routing.index() != 0) { //有 * 号的 或有 index 的;排序下 + table.addLast(entity); Collections.sort(table); + } else { + table.addFirst(entity); } } diff --git a/solon/src/main/java/org/noear/solon/core/util/DateUtil.java b/solon/src/main/java/org/noear/solon/core/util/DateUtil.java index 1e41f320c00ef347c1e32e1b4447a9b63bb597de..62820706b42b69998694a72df0b2dbab4aed917e 100644 --- a/solon/src/main/java/org/noear/solon/core/util/DateUtil.java +++ b/solon/src/main/java/org/noear/solon/core/util/DateUtil.java @@ -30,7 +30,8 @@ import java.util.TimeZone; * @since 2.8 */ public class DateUtil { - private static final String FORMAT_29 = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; + private static final String FORMAT_29 = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";//XXX: +08:00 + private static final String FORMAT_27 = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX'Z'"; private static final String FORMAT_25 = "yyyy-MM-dd'T'HH:mm:ss+HH:mm"; private static final String FORMAT_24_ISO08601 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; private static final String FORMAT_23_a = "yyyy-MM-dd HH:mm:ss,SSS"; @@ -55,6 +56,18 @@ public class DateUtil { private static final String FORMAT_8_a = "HH:mm:ss"; private static final String FORMAT_8_b = "yyyyMMdd"; + + /** + * 解析 + */ + public static Date parseTry(String val) { + try { + return parse(val); + } catch (ParseException ex) { + throw new IllegalArgumentException("Unsupported format: " + val, ex); + } + } + /** * 解析 */ @@ -71,6 +84,8 @@ public class DateUtil { if (val.charAt(26) == ':' && val.charAt(28) == '0') { ft = FORMAT_29; } + } else if (len == 27) { + ft = FORMAT_27; } else if (len == 25) { ft = FORMAT_25; } else if (len == 24) { diff --git a/solon/src/test/java/features/solon/injectcoll/AppTest.java b/solon/src/test/java/features/solon/injectcoll/AppTest.java new file mode 100644 index 0000000000000000000000000000000000000000..856bd216082496e8f7e9799d9d4a97bdb5aec792 --- /dev/null +++ b/solon/src/test/java/features/solon/injectcoll/AppTest.java @@ -0,0 +1,65 @@ +package features.solon.injectcoll; + +import org.junit.jupiter.api.Test; +import org.noear.solon.Solon; +import org.noear.solon.annotation.Bean; +import org.noear.solon.annotation.Configuration; +import org.noear.solon.core.AppContext; + +import java.util.List; +import java.util.Map; + +/** + * @author noear 2025/1/27 created + */ +public class AppTest { + static int count_l; + static int count_m; + + @Test + public void case1() throws Exception { + AppContext appContext = new AppContext(); + appContext.beanScan(AppTest.class); + appContext.start(); + + //校验集合注入时,只运行一次 + assert count_l == 1; + assert count_m == 1; + } + + @Configuration + public static class Config { + @Bean("n1") + public LogAdapter logAdapter() { + return new LogAdapter() { + @Override + public void log(String msg) { + System.out.println(msg); + } + }; + } + + public LogAdapter logAdapter2() { + return new LogAdapter() { + @Override + public void log(String msg) { + System.out.println(msg); + } + }; + } + + @Bean + public void logAdapterAry(List adapters) { + count_l++; + } + + @Bean + public void logAdapterMap(Map adapters) { + count_m++; + } + } + + public interface LogAdapter { + void log(String msg); + } +}