diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java index bdeef591cf48d4e172f9cf3855a5d9e8af047175..410f6856ef7542bd084a55408b2897c15f56c0e1 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java @@ -26,7 +26,6 @@ import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; -import java.util.Objects; /** @@ -99,7 +98,7 @@ public class NamespaceUnlockAspect { boolean isModified(Namespace namespace) { Release release = releaseService.findLatestActiveRelease(namespace); - List items = itemService.findItems(namespace.getId()); + List items = itemService.findItemsWithoutOrdered(namespace.getId()); if (release == null) { return hasNormalItems(items); diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java index cfdb2270ba84b94e90293728038ef9b3a0fdcd05..3a24de84c0edef11ca21adaab3933e95aac449e8 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java @@ -129,7 +129,7 @@ public class ItemController { public List findItems(@PathVariable("appId") String appId, @PathVariable("clusterName") String clusterName, @PathVariable("namespaceName") String namespaceName) { - return BeanUtils.batchTransform(ItemDTO.class, itemService.findItems(appId, clusterName, namespaceName)); + return BeanUtils.batchTransform(ItemDTO.class, itemService.findItemsWithOrdered(appId, clusterName, namespaceName)); } @RequestMapping(value = "/items/{itemId}", method = RequestMethod.GET) diff --git a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspectTest.java b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspectTest.java index 28ff81320ec9fb43d89cc8043273a4351de60907..b5be00b1f6a42c5aede9a8a0d296332446ab9e65 100644 --- a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspectTest.java +++ b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspectTest.java @@ -41,7 +41,7 @@ public class NamespaceUnlockAspectTest { Namespace namespace = createNamespace(namespaceId); when(releaseService.findLatestActiveRelease(namespace)).thenReturn(null); - when(itemService.findItems(namespaceId)).thenReturn(Collections.singletonList(createItem("", ""))); + when(itemService.findItemsWithOrdered(namespaceId)).thenReturn(Collections.singletonList(createItem("", ""))); boolean isModified = namespaceUnlockAspect.isModified(namespace); @@ -57,7 +57,7 @@ public class NamespaceUnlockAspectTest { List items = Arrays.asList(createItem("k1", "v1"), createItem("k2", "v2")); when(releaseService.findLatestActiveRelease(namespace)).thenReturn(release); - when(itemService.findItems(namespaceId)).thenReturn(items); + when(itemService.findItemsWithOrdered(namespaceId)).thenReturn(items); when(namespaceService.findParentNamespace(namespace)).thenReturn(null); boolean isModified = namespaceUnlockAspect.isModified(namespace); @@ -74,7 +74,7 @@ public class NamespaceUnlockAspectTest { List items = Arrays.asList(createItem("k1", "v2")); when(releaseService.findLatestActiveRelease(namespace)).thenReturn(release); - when(itemService.findItems(namespaceId)).thenReturn(items); + when(itemService.findItemsWithOrdered(namespaceId)).thenReturn(items); when(namespaceService.findParentNamespace(namespace)).thenReturn(null); boolean isModified = namespaceUnlockAspect.isModified(namespace); @@ -91,7 +91,7 @@ public class NamespaceUnlockAspectTest { List items = Arrays.asList(createItem("k2", "v2")); when(releaseService.findLatestActiveRelease(namespace)).thenReturn(release); - when(itemService.findItems(namespaceId)).thenReturn(items); + when(itemService.findItemsWithOrdered(namespaceId)).thenReturn(items); when(namespaceService.findParentNamespace(namespace)).thenReturn(null); boolean isModified = namespaceUnlockAspect.isModified(namespace); @@ -111,7 +111,7 @@ public class NamespaceUnlockAspectTest { when(releaseService.findLatestActiveRelease(childNamespace)).thenReturn(childRelease); when(releaseService.findLatestActiveRelease(parentNamespace)).thenReturn(parentRelease); - when(itemService.findItems(childNamespaceId)).thenReturn(childItems); + when(itemService.findItemsWithoutOrdered(childNamespaceId)).thenReturn(childItems); when(namespaceService.findParentNamespace(childNamespace)).thenReturn(parentNamespace); boolean isModified = namespaceUnlockAspect.isModified(childNamespace); @@ -131,7 +131,7 @@ public class NamespaceUnlockAspectTest { when(releaseService.findLatestActiveRelease(childNamespace)).thenReturn(childRelease); when(releaseService.findLatestActiveRelease(parentNamespace)).thenReturn(parentRelease); - when(itemService.findItems(childNamespaceId)).thenReturn(childItems); + when(itemService.findItemsWithoutOrdered(childNamespaceId)).thenReturn(childItems); when(namespaceService.findParentNamespace(childNamespace)).thenReturn(parentNamespace); boolean isModified = namespaceUnlockAspect.isModified(childNamespace); @@ -150,7 +150,7 @@ public class NamespaceUnlockAspectTest { when(releaseService.findLatestActiveRelease(childNamespace)).thenReturn(childRelease); when(releaseService.findLatestActiveRelease(parentNamespace)).thenReturn(null); - when(itemService.findItems(childNamespaceId)).thenReturn(childItems); + when(itemService.findItemsWithOrdered(childNamespaceId)).thenReturn(childItems); when(namespaceService.findParentNamespace(childNamespace)).thenReturn(parentNamespace); boolean isModified = namespaceUnlockAspect.isModified(childNamespace); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ItemRepository.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ItemRepository.java index fffc77574f84e452677d4d95bfce38b16a8e88e3..a8f03bd04ed9e6de30f9f12d9e9ae0c7ba1cf8c7 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ItemRepository.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ItemRepository.java @@ -15,6 +15,8 @@ public interface ItemRepository extends PagingAndSortingRepository { List findByNamespaceIdOrderByLineNumAsc(Long namespaceId); + List findByNamespaceId(Long namespaceId); + List findByNamespaceIdAndDataChangeLastModifiedTimeGreaterThan(Long namespaceId, Date date); Item findFirst1ByNamespaceIdOrderByLineNumDesc(Long namespaceId); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java index 27f3c3c53dccab17c58c358aaf54d64bbd487308..f424be9e54eb0c4e73a0bcef96702271e055c898 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java @@ -85,7 +85,24 @@ public class ItemService { return item; } - public List findItems(Long namespaceId) { + public List findItemsWithoutOrdered(Long namespaceId) { + List items = itemRepository.findByNamespaceId(namespaceId); + if (items == null) { + return Collections.emptyList(); + } + return items; + } + + public List findItemsWithoutOrdered(String appId, String clusterName, String namespaceName) { + Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); + if (namespace != null) { + return findItemsWithoutOrdered(namespace.getId()); + } else { + return Collections.emptyList(); + } + } + + public List findItemsWithOrdered(Long namespaceId) { List items = itemRepository.findByNamespaceIdOrderByLineNumAsc(namespaceId); if (items == null) { return Collections.emptyList(); @@ -93,10 +110,10 @@ public class ItemService { return items; } - public List findItems(String appId, String clusterName, String namespaceName) { + public List findItemsWithOrdered(String appId, String clusterName, String namespaceName) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace != null) { - return findItems(namespace.getId()); + return findItemsWithOrdered(namespace.getId()); } else { return Collections.emptyList(); } diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java index 2a29d009e652717824b881d07cc198fa728e921a..ee8b2d4db21c8dec7f3bc793b12940a543e3c5e3 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java @@ -3,7 +3,6 @@ package com.ctrip.framework.apollo.biz.service; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; import com.ctrip.framework.apollo.biz.entity.Audit; import com.ctrip.framework.apollo.biz.entity.GrayReleaseRule; @@ -30,7 +29,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.lang.reflect.Type; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -308,7 +306,7 @@ public class ReleaseService { private Map getNamespaceItems(Namespace namespace) { - List items = itemService.findItems(namespace.getId()); + List items = itemService.findItemsWithoutOrdered(namespace.getId()); Map configurations = new HashMap(); for (Item item : items) { if (StringUtils.isEmpty(item.getKey())) { diff --git a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/NamespaceServiceIntegrationTest.java b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/NamespaceServiceIntegrationTest.java index e00d01980b061bfdd9ca6090d642d08e13601349..f216e0f4d0167b6d2d083e0d7f6f54938a50e364 100644 --- a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/NamespaceServiceIntegrationTest.java +++ b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/NamespaceServiceIntegrationTest.java @@ -63,7 +63,7 @@ public class NamespaceServiceIntegrationTest extends AbstractIntegrationTest { namespaceService.deleteNamespace(namespace, testUser); - List items = itemService.findItems(testApp, testCluster, testPrivateNamespace); + List items = itemService.findItemsWithoutOrdered(testApp, testCluster, testPrivateNamespace); List commits = commitService.find(testApp, testCluster, testPrivateNamespace, new PageRequest(0, 10)); AppNamespace appNamespace = appNamespaceService.findOne(testApp, testPrivateNamespace); List childClusters = clusterService.findChildClusters(testApp, testCluster); diff --git a/pom.xml b/pom.xml index 175cd4fbb9ceea6bae5c2686d861c0b96fabe1fe..c89ebc23f8e67e8b9624dcfa94fe3e07261ea9e2 100644 --- a/pom.xml +++ b/pom.xml @@ -669,6 +669,11 @@ commons-beanutils commons-beanutils-core + + + aopalliance + aopalliance + @@ -767,6 +772,11 @@ commons-beanutils commons-beanutils-core + + + aopalliance + aopalliance +