io.zerows
zero-plugins-office-excel
diff --git a/zero-ecosystem/zero-boot/zero-boot-mini-actor/src/main/java/io/zerows/epoch/VertxApplication.java b/zero-ecosystem/zero-boot/zero-boot-mini-actor/src/main/java/io/zerows/epoch/VertxApplication.java
index 2cb8559c4e120836fd9650424fe47bb6540b505f..0331bd98b8970c59188d53bc25784d3b65a024b3 100644
--- a/zero-ecosystem/zero-boot/zero-boot-mini-actor/src/main/java/io/zerows/epoch/VertxApplication.java
+++ b/zero-ecosystem/zero-boot/zero-boot-mini-actor/src/main/java/io/zerows/epoch/VertxApplication.java
@@ -9,6 +9,7 @@ import io.vertx.core.eventbus.EventBusOptions;
import io.vertx.core.http.HttpServerOptions;
import io.zerows.cortex.AxisDynamicFactory;
import io.zerows.cortex.AxisSockFactory;
+import io.zerows.cortex.AxisSwaggerFactory;
import io.zerows.cortex.management.StoreVertx;
import io.zerows.cortex.metadata.RunRoute;
import io.zerows.cortex.metadata.RunServer;
@@ -113,6 +114,7 @@ public class VertxApplication {
WallProvider.class, // 安全提供者组件
FactoryDBAsync.class, // 异步DBE
AxisSockFactory.class, // WebSocket
+ AxisSwaggerFactory.class, //Swagger
AxisDynamicFactory.class // 动态路由
);
diff --git a/zero-ecosystem/zero-epoch/zero-epoch-cosmic/src/main/java/io/zerows/cosmic/bootstrap/AxisSwagger.java b/zero-ecosystem/zero-epoch/zero-epoch-cosmic/src/main/java/io/zerows/cosmic/bootstrap/AxisSwagger.java
new file mode 100644
index 0000000000000000000000000000000000000000..23c16fa33da9fd003b815a25e9b762a96456c908
--- /dev/null
+++ b/zero-ecosystem/zero-epoch/zero-epoch-cosmic/src/main/java/io/zerows/cosmic/bootstrap/AxisSwagger.java
@@ -0,0 +1,42 @@
+package io.zerows.cosmic.bootstrap;
+
+import io.zerows.cortex.AxisSwaggerFactory;
+import io.zerows.cortex.metadata.RunServer;
+import io.zerows.cortex.sdk.Axis;
+import io.zerows.specification.development.compiled.HBundle;
+import io.zerows.spi.HPI;
+import lombok.extern.slf4j.Slf4j;
+import java.util.Objects;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * @author lang : 2025-01-XX
+ */
+@Slf4j
+public class AxisSwagger implements Axis {
+
+ private static final AtomicBoolean LOG_FACTORY_NULL = new AtomicBoolean(false);
+ private static final AtomicBoolean LOG_ENABLED = new AtomicBoolean(false);
+ private static final AtomicBoolean LOG_DISABLED = new AtomicBoolean(false);
+
+ @Override
+ public void mount(RunServer server, HBundle bundle) {
+ final AxisSwaggerFactory factory = HPI.findOverwrite(AxisSwaggerFactory.class);
+ if (Objects.isNull(factory)) {
+ // 没有部署,无法找到工厂类(日志只打印一次)
+ if (LOG_FACTORY_NULL.compareAndSet(false, true)) {
+ log.info("[ ZERO ] ( Swagger ) ⚠️ SPI 组件 AxisSwaggerFactory 为 null,Swagger 功能禁用!");
+ }
+ return;
+ }
+ if (factory.isEnabled(bundle, server)) {
+ if (LOG_ENABLED.compareAndSet(false, true)) {
+ log.info("[ ZERO ] ( Swagger ) Swagger 功能启动成功!,登录地址:http://"+server.name()+"/docs/#/");
+ }
+ } else {
+ if (LOG_DISABLED.compareAndSet(false, true)) {
+ log.warn("[ ZERO ] ( Swagger ) 功能被配置禁用,请检查配置或联系管理员!");
+ }
+ }
+ }
+}
diff --git a/zero-ecosystem/zero-epoch/zero-epoch-cosmic/src/main/java/io/zerows/cosmic/handler/ZeroHttpAgent.java b/zero-ecosystem/zero-epoch/zero-epoch-cosmic/src/main/java/io/zerows/cosmic/handler/ZeroHttpAgent.java
index b8998c1e93475eb9da1ee6294e7dadc1723fc06a..7c1950db97b956aecc212efb1ff3bf39958ad330 100644
--- a/zero-ecosystem/zero-epoch/zero-epoch-cosmic/src/main/java/io/zerows/cosmic/handler/ZeroHttpAgent.java
+++ b/zero-ecosystem/zero-epoch/zero-epoch-cosmic/src/main/java/io/zerows/cosmic/handler/ZeroHttpAgent.java
@@ -13,6 +13,7 @@ import io.zerows.cosmic.bootstrap.AxisFilter;
import io.zerows.cosmic.bootstrap.AxisMeasure;
import io.zerows.cosmic.bootstrap.AxisSecure;
import io.zerows.cosmic.bootstrap.AxisStart;
+import io.zerows.cosmic.bootstrap.AxisSwagger;
import io.zerows.epoch.annotations.Agent;
import io.zerows.specification.development.compiled.HBundle;
import io.zerows.spi.HPI;
@@ -45,16 +46,15 @@ public class ZeroHttpAgent extends AbstractVerticle {
* - Cors
*/
Axis.ofOr(AxisCommon.class).mount(runServer, bundle);
-
/*
- * 02. 安全
+ * 03. 安全
* - 401 Authentication
* - 403 Authorization
*/
Axis.ofOr(AxisSecure.class).mount(runServer, bundle);
/*
- * 03. 监控
+ * 04. 监控
* - Module Monitor
* - Service Monitor
* - Gateway Monitor
@@ -62,24 +62,28 @@ public class ZeroHttpAgent extends AbstractVerticle {
Axis.ofOr(AxisMeasure.class).mount(runServer, bundle);
/*
- * 04. JSR-340
+ * 05. JSR-340
* - Filter
* - Listener
*/
Axis.ofOr(AxisFilter.class).mount(runServer, bundle);
/*
- * 05. 主流程
+ * 06. 主流程
*/
Axis.ofOr(AxisEvent.class).mount(runServer, bundle);
/*
- * 06. Extension 扩展路由
+ * 07. Extension 扩展路由
*/
Axis.ofOr(AxisExtension.class).mount(runServer, bundle);
+ /*
+ * 08. Swagger 挂载
+ */
+ Axis.ofOr(AxisSwagger.class).mount(runServer, bundle);
/*
- * 07. 启动完成监听
+ * 09. 启动完成监听
*/
Axis.ofOr(AxisStart.class).mount(runServer, bundle);
diff --git a/zero-ecosystem/zero-epoch/zero-epoch-focus/src/main/java/io/zerows/cortex/AxisSwaggerFactory.java b/zero-ecosystem/zero-epoch/zero-epoch-focus/src/main/java/io/zerows/cortex/AxisSwaggerFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..dc09cab9dcdc4bba755973a6c8877b42d973af02
--- /dev/null
+++ b/zero-ecosystem/zero-epoch/zero-epoch-focus/src/main/java/io/zerows/cortex/AxisSwaggerFactory.java
@@ -0,0 +1,34 @@
+package io.zerows.cortex;
+
+import io.zerows.cortex.metadata.RunServer;
+import io.zerows.cortex.sdk.Axis;
+import io.zerows.specification.development.compiled.HBundle;
+
+/**
+ * WebSocket 路由管理器工厂,用于提取路由管理器专用,不同环境的设计如下:
+ *
+ * 非 OSGI 环境中
+ * - 1. 直接加载 SPI 提取 AxisSockFactory 的实现
+ * 2. 调用 AxisSockFactory 实现中的方法提取 OAxis 路由挂载器
+ * OSGI 环境中
+ * - 1. AxisSockFactory 实现启动时直接注册到 FactorySockManager 中,由它来查找对应的实现,Service 调用
+ * 2. 调用 AxisSockFactory 实现中的方法提取 OAxis 路由挂载器
+ *
+ *
+ * @author lang : 2024-06-26
+ */
+public interface AxisSwaggerFactory {
+ /**
+ * 提取路由挂载器
+ *
+ * @return 返回路由挂载器
+ */
+ Axis getAxis();
+
+ /**
+ * 判断是否启用了 Sock 功能
+ *
+ * @return 如果启用了则直接返回 true
+ */
+ boolean isEnabled(HBundle owner,RunServer runServer);
+}
diff --git a/zero-ecosystem/zero-plugins-equip/zero-plugins-swagger/pom.xml b/zero-ecosystem/zero-plugins-equip/zero-plugins-swagger/pom.xml
index 749e1079505b02cda738ec5cf1f91aa61e9a3ae3..a5a2c6db7a445545da9cf5257aa6b62c5bff4db5 100644
--- a/zero-ecosystem/zero-plugins-equip/zero-plugins-swagger/pom.xml
+++ b/zero-ecosystem/zero-plugins-equip/zero-plugins-swagger/pom.xml
@@ -17,10 +17,10 @@
vertx-web-api-contract
-