package com.yanzuoguang.util.helper; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; import springfox.documentation.RequestHandler; /** * API文件生成工具类 * * @author 颜佐光 */ public class SwaggerHelper { /** * Predicate that matches RequestHandler with given base package name for the class of the handler method. * This predicate includes all request handlers matching the provided basePackage * * @param basePackage - base package of the classes * @return this */ public static Predicate<RequestHandler> basePackage(String... basePackage) { return new Predicate<RequestHandler>() { @Override public boolean apply(RequestHandler input) { return declaringClass(input).transform(handlerPackage(basePackage)).or(true); } }; } /** * 处理包路径配置规则,支持多路径扫描匹配以逗号隔开 * * @param basePackage 扫描包路径 * @return Function */ private static Function<Class<?>, Boolean> handlerPackage(String... basePackage) { return new Function<Class<?>, Boolean>() { @Override public Boolean apply(Class<?> input) { for (String strPackage : basePackage) { boolean isMatch = input.getPackage().getName().startsWith(strPackage); if (isMatch) { return true; } } return false; } }; } /** * @param input RequestHandler * @return Optional */ private static Optional<? extends Class<?>> declaringClass(RequestHandler input) { return Optional.fromNullable(input.declaringClass()); } }