diff --git a/continew-starter-api-doc/pom.xml b/continew-starter-api-doc/pom.xml index be55cab2..9aa4ca51 100644 --- a/continew-starter-api-doc/pom.xml +++ b/continew-starter-api-doc/pom.xml @@ -28,5 +28,11 @@ nextdoc4j-springboot3-starter + + + top.nextdoc4j + nextdoc4j-plugin-enums + + \ No newline at end of file diff --git a/continew-starter-api-doc/src/main/java/top/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java b/continew-starter-api-doc/src/main/java/top/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java index 6f423b74..f2edf67f 100644 --- a/continew-starter-api-doc/src/main/java/top/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java +++ b/continew-starter-api-doc/src/main/java/top/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java @@ -31,6 +31,7 @@ import org.springframework.context.annotation.PropertySource; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import top.continew.starter.apidoc.processor.BaseEnumProcessor; import top.continew.starter.core.autoconfigure.application.ApplicationProperties; import top.continew.starter.core.util.GeneralPropertySourceFactory; @@ -74,6 +75,17 @@ public class SpringDocAutoConfiguration implements WebMvcConfigurer { return openApi; } + /** + * 基础枚举处理器 + * + * @return {@link BaseEnumProcessor } + */ + @Bean + @ConditionalOnMissingBean + public BaseEnumProcessor baseEnumProcessor() { + return new BaseEnumProcessor(); + } + @PostConstruct public void postConstruct() { log.debug("[ContiNew Starter] - Auto Configuration 'ApiDoc' completed initialization."); diff --git a/continew-starter-api-doc/src/main/java/top/continew/starter/apidoc/processor/BaseEnumProcessor.java b/continew-starter-api-doc/src/main/java/top/continew/starter/apidoc/processor/BaseEnumProcessor.java new file mode 100644 index 00000000..829c9708 --- /dev/null +++ b/continew-starter-api-doc/src/main/java/top/continew/starter/apidoc/processor/BaseEnumProcessor.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + *

+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.gnu.org/licenses/lgpl.html + *

+ * 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 top.continew.starter.apidoc.processor; + +import cn.hutool.core.util.ClassUtil; +import org.springframework.stereotype.Component; +import top.continew.starter.core.enums.BaseEnum; +import top.nextdoc4j.enums.resolver.EnumMetadataResolver; + +/** + * 基础枚举处理器 - nextdoc4j 枚举插件展示枚举值 + * + * @author echo + * @since 2.15.0 + */ +@Component +public class BaseEnumProcessor implements EnumMetadataResolver { + @Override + public boolean supports(Class aClass) { + return aClass != null && aClass.isEnum() && ClassUtil.isAssignable(BaseEnum.class, aClass); + } + + @Override + public Class getEnumInterfaceType() { + return BaseEnum.class; + } + +}