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 bdeef591cf4..410f6856ef7 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 java.util.List; import java.util.Map; -import java.util.Objects; /** @@ -99,7 +98,7 @@ private void tryUnlock(Namespace namespace) { 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 cfdb2270ba8..3a24de84c0e 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 void delete(@PathVariable("itemId") long itemId, @RequestParam String ope 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 28ff81320ec..b5be00b1f6a 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 void testNamespaceHasNoNormalItemsAndRelease() { 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 void testNamespaceAddItem() { 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 void testNamespaceModifyItem() { 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 void testNamespaceDeleteItem() { 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 void testChildNamespaceModified() { 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 void testChildNamespaceNotModified() { 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 void testParentNamespaceNotReleased() { 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 fffc77574f8..a8f03bd04ed 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 27f3c3c53dc..f424be9e54e 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 Item findOne(long itemId) { 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 List findItems(Long namespaceId) { 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 2a29d009e65..ee8b2d4db21 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 @@ 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.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 @@ private Map mergeConfiguration(Map baseConfigura 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 e00d01980b0..f216e0f4d01 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 void testDeleteNamespace() { 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 175cd4fbb9c..c89ebc23f8e 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 +