diff --git a/protocol/pom.xml b/protocol/pom.xml index 26771f22..82f8de32 100644 --- a/protocol/pom.xml +++ b/protocol/pom.xml @@ -72,6 +72,18 @@ + + + com.fasterxml.jackson.module + jackson-module-afterburner + 2.15.2 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.15.2 + + org.springframework.boot spring-boot-starter-logging @@ -103,18 +115,6 @@ - - - com.fasterxml.jackson.module - jackson-module-afterburner - 2.15.2 - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - 2.15.2 - - com.esotericsoftware kryo diff --git a/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java b/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java index de1be67f..65c6b13a 100644 --- a/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java +++ b/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java @@ -177,7 +177,7 @@ public class ProtocolAnalysis { for (var protocolDefinition : moduleDefinition.getProtocols()) { protocolDefinitionMap.put(protocolDefinition.getLocation(), protocolDefinition.isEnhance()); protocolNameMap.put(protocolDefinition.getLocation(), protocolDefinition.getId()); - var packetClazzList = Set.of(ClassUtils.forName(protocolDefinition.getLocation())); + var packetClazzList = scanPackageList(protocolDefinition.getLocation()); clazzSet.addAll(packetClazzList); for (Class clazz : packetClazzList) { var previous = classModuleDefinitionMap.put(clazz, module.getId()); @@ -215,16 +215,34 @@ public class ProtocolAnalysis { enhance(generateOperation, enhanceList); } - public static Set> scanPackageList(String packageName) { - //获取该路径下所有类 - var clazzSet = new HashSet(); + public static Set> scanPackageList(String location) { + // Use the class path first to obtain the class name, and search the directory if it cannot be obtained + // 优先使用类路径获取类名,获取不到才去搜索目录 try { - var clazzList = ClassUtils.getAllClasses(packageName); - clazzSet.addAll(clazzList); + var clazz = ClassUtils.forName(location); + return Set.of(clazz); } catch (Exception e) { - throw new RunException("[{}]包扫描类异常", packageName, e); } - return clazzSet.stream().map(it -> ClassUtils.forName(it)).collect(Collectors.toSet()); + + // 获取该路径下所有类 + var clazzNameSet = new HashSet(); + try { + var clazzList = ClassUtils.getAllClasses(location); + clazzNameSet.addAll(clazzList); + } catch (Exception e) { + throw new RunException("[{}] scanning exception", location, e); + } + var classes = clazzNameSet.stream() + .map(it -> ClassUtils.forName(it)) + .filter(it -> it.isAnnotationPresent(Protocol.class)) + .filter(it -> !it.isInterface()) + .filter(it -> !it.isEnum()) + .distinct() + .toList(); + if (CollectionUtils.isEmpty(classes)) { + throw new RunException("can not scan any protocol class in [{}]", location); + } + return new HashSet<>(classes); } private static void enhance(GenerateOperation generateOperation, List enhanceList) {