Browse Source

!7 优化遍历过程方法,并增强一定易读性
Merge pull request !7 from 奇健陀螺王/dev

小东 4 years ago
parent
commit
a54da068fe

+ 6 - 11
src/main/java/org/ssssssss/magicapi/config/MappingHandlerMapping.java

@@ -293,10 +293,7 @@ public class MappingHandlerMapping {
 		}
 		String mappingKey = getMappingKey(info);
 		if (mappings.containsKey(mappingKey)) {
-			if (mappings.get(mappingKey).getInfo().getId().equals(info.getId())) {
-				return false;
-			}
-			return true;
+			return !mappings.get(mappingKey).getInfo().getId().equals(info.getId());
 		}
 		if (!allowOverride) {
 			Map<RequestMappingInfo, HandlerMethod> handlerMethods = this.requestMappingHandlerMapping.getHandlerMethods();
@@ -331,14 +328,10 @@ public class MappingHandlerMapping {
 	public void registerMapping(ApiInfo info, boolean delete) {
 		// 先判断是否已注册,如果已注册,则先取消注册在进行注册。
 		MappingNode mappingNode = mappings.get(info.getId());
-		ApiInfo oldInfo = mappingNode == null ? null : mappingNode.getInfo();
-		if (mappingNode == null) {
-			mappingNode = new MappingNode(info);
-		}
 		String newMappingKey = getMappingKey(info);
-		mappingNode.setMappingKey(newMappingKey);
-		if (oldInfo != null) {
-			String oldMappingKey = getMappingKey(oldInfo);
+		if (mappingNode != null) {
+			ApiInfo oldInfo = mappingNode.getInfo();
+			String oldMappingKey = mappingNode.getMappingKey();
 			// URL 路径一致时,刷新脚本内容即可
 			if (Objects.equals(oldMappingKey, newMappingKey)) {
 				if (!info.equals(oldInfo)) {
@@ -357,6 +350,8 @@ public class MappingHandlerMapping {
 			mappings.remove(oldMappingKey);
 			requestMappingHandlerMapping.unregisterMapping(getRequestMapping(oldInfo));
 		}
+		mappingNode = new MappingNode(info);
+		mappingNode.setMappingKey(newMappingKey);
 		// 注册
 		RequestMappingInfo requestMapping = getRequestMapping(info);
 		mappingNode.setRequestMappingInfo(requestMapping);

+ 13 - 7
src/main/java/org/ssssssss/magicapi/provider/impl/DefaultGroupServiceProvider.java

@@ -106,13 +106,19 @@ public class DefaultGroupServiceProvider extends BeanPropertyRowMapper<Group> im
 		return root;
 	}
 
-	private void convertToTree(List<Group> groups, TreeNode<Group> current) {
-		List<TreeNode<Group>> treeNodes = groups.stream()
-				.filter(it -> current.getNode().getId().equals(it.getParentId()))
-				.map(TreeNode::new)
-				.collect(Collectors.toList());
-		current.setChildren(treeNodes);
-		treeNodes.forEach(it -> convertToTree(groups, it));
+	private void convertToTree(List<Group> remains, TreeNode<Group> current) {
+		Group temp;
+		List<TreeNode<Group>> childNodes = new LinkedList<>();
+		Iterator<Group> iterator = remains.iterator();
+		while (iterator.hasNext()){
+			temp = iterator.next();
+			if (current.getNode().getId().equals(temp.getParentId())) {
+				childNodes.add(new TreeNode<>(temp));
+				iterator.remove();
+			}
+		}
+		current.setChildren(childNodes);
+		childNodes.forEach(it -> convertToTree(remains, it));
 	}
 
 	@Override