From fe75b4d3f2c824d4f6add524d67c55abc6796f84 Mon Sep 17 00:00:00 2001 From: kl <632104866@QQ.com> Date: Thu, 16 May 2019 11:07:18 +0800 Subject: [PATCH 01/11] add tech-support-qq-4.png --- doc/images/tech-support-qq-4.png | Bin 0 -> 7285 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/images/tech-support-qq-4.png diff --git a/doc/images/tech-support-qq-4.png b/doc/images/tech-support-qq-4.png new file mode 100644 index 0000000000000000000000000000000000000000..398a8c509bfe7c62ddba3b41593495eecce38b6d GIT binary patch literal 7285 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 Date: Thu, 16 May 2019 11:13:55 +0800 Subject: [PATCH 02/11] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 83a9be9aea8..70e5f61fa93 100644 --- a/README.md +++ b/README.md @@ -115,12 +115,14 @@ Java客户端不依赖任何框架,能够运行于所有Java运行时环境, # Support - + + + From d7d3fd908dfd11113fd891b581c1ebf43c60eb1a Mon Sep 17 00:00:00 2001 From: kl Date: Fri, 11 Dec 2020 17:03:33 +0800 Subject: [PATCH 03/11] Enhance the user experience in the scenario of submitting duplicate keys --- .../txtresolver/PropertyResolver.java | 19 ++++++++++--------- .../directive/namespace-panel-directive.js | 1 - 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java index 89cdc9705da..bdea8b73666 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java @@ -8,6 +8,7 @@ import com.google.common.base.Strings; import org.springframework.stereotype.Component; +import javax.validation.constraints.NotNull; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -35,9 +36,9 @@ public ItemChangeSets resolve(long namespaceId, String configText, List oldKeyMapItem.remove(""); String[] newItems = configText.split(ITEM_SEPARATOR); - - if (isHasRepeatKey(newItems)) { - throw new BadRequestException("config text has repeat key please check."); + Set repeatKeys = new HashSet<>(); + if (isHasRepeatKey(newItems,repeatKeys)) { + throw new BadRequestException(String.format("config text has repeat key please check.repeat keys:%s", repeatKeys.toString())); } ItemChangeSets changeSets = new ItemChangeSets(); @@ -72,24 +73,24 @@ public ItemChangeSets resolve(long namespaceId, String configText, List return changeSets; } - private boolean isHasRepeatKey(String[] newItems) { + private boolean isHasRepeatKey(String[] newItems,@NotNull Set repeatKeys) { Set keys = new HashSet<>(); int lineCounter = 1; - int keyCount = 0; for (String item : newItems) { if (!isCommentItem(item) && !isBlankItem(item)) { - keyCount++; String[] kv = parseKeyValueFromItem(item); if (kv != null) { - keys.add(kv[0].toLowerCase()); + String key = kv[0].toLowerCase(); + if(!keys.add(key)){ + repeatKeys.add(key); + } } else { throw new BadRequestException("line:" + lineCounter + " key value must separate by '='"); } } lineCounter++; } - - return keyCount > keys.size(); + return !repeatKeys.isEmpty(); } private String[] parseKeyValueFromItem(String item) { diff --git a/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js b/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js index 66b5e46d0e3..7b4f88ae0cc 100644 --- a/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js +++ b/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js @@ -745,7 +745,6 @@ function directive($window, $translate, toastr, AppUtil, EventManager, Permissio } ); namespace.commited = true; - toggleTextEditStatus(namespace); } function syntaxCheck(namespace) { From 5def448b7632b2992c7dda29c38750ff1368d0f9 Mon Sep 17 00:00:00 2001 From: chenkailing <632104866@qq.com> Date: Sat, 12 Dec 2020 14:16:43 +0800 Subject: [PATCH 04/11] Modify the key-value conflict exception prompt, adjust the code style --- .../portal/component/txtresolver/PropertyResolver.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java index bdea8b73666..10a614b69d1 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java @@ -37,8 +37,8 @@ public ItemChangeSets resolve(long namespaceId, String configText, List String[] newItems = configText.split(ITEM_SEPARATOR); Set repeatKeys = new HashSet<>(); - if (isHasRepeatKey(newItems,repeatKeys)) { - throw new BadRequestException(String.format("config text has repeat key please check.repeat keys:%s", repeatKeys.toString())); + if (isHasRepeatKey(newItems, repeatKeys)) { + throw new BadRequestException(String.format("Config text has repeated keys: %s, please check your input.", repeatKeys.toString())); } ItemChangeSets changeSets = new ItemChangeSets(); @@ -73,7 +73,7 @@ public ItemChangeSets resolve(long namespaceId, String configText, List return changeSets; } - private boolean isHasRepeatKey(String[] newItems,@NotNull Set repeatKeys) { + private boolean isHasRepeatKey(String[] newItems, @NotNull Set repeatKeys) { Set keys = new HashSet<>(); int lineCounter = 1; for (String item : newItems) { From 7f639da6627d2267b881f506dd5b4881c35a9e3e Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 13:20:22 +0800 Subject: [PATCH 05/11] refactor(apollo-biz): Refactor the createCommit method. --- .../controller/ItemController.java | 33 +++++-------------- .../apollo/biz/service/CommitService.java | 13 ++++++-- .../apollo/biz/service/ItemSetService.java | 16 +-------- 3 files changed, 20 insertions(+), 42 deletions(-) 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 a2b07c4048d..d4eb8a54557 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 @@ -79,15 +79,9 @@ public ItemDTO create(@PathVariable("appId") String appId, } entity = itemService.save(entity); dto = BeanUtils.transform(ItemDTO.class, entity); - - Commit commit = new Commit(); - commit.setAppId(appId); - commit.setClusterName(clusterName); - commit.setNamespaceName(namespaceName); - commit.setChangeSets(new ConfigChangeContentBuilder().createItem(entity).build()); - commit.setDataChangeCreatedBy(dto.getDataChangeLastModifiedBy()); - commit.setDataChangeLastModifiedBy(dto.getDataChangeLastModifiedBy()); - commitService.save(commit); + commitService.createCommit(appId, clusterName, namespaceName, new ConfigChangeContentBuilder().createItem(entity).build(), + dto.getDataChangeLastModifiedBy() + ); return dto; } @@ -154,14 +148,7 @@ public ItemDTO update(@PathVariable("appId") String appId, itemDTO = BeanUtils.transform(ItemDTO.class, entity); if (builder.hasContent()) { - Commit commit = new Commit(); - commit.setAppId(appId); - commit.setClusterName(clusterName); - commit.setNamespaceName(namespaceName); - commit.setChangeSets(builder.build()); - commit.setDataChangeCreatedBy(itemDTO.getDataChangeLastModifiedBy()); - commit.setDataChangeLastModifiedBy(itemDTO.getDataChangeLastModifiedBy()); - commitService.save(commit); + commitService.createCommit(appId, clusterName, namespaceName, builder.build(), itemDTO.getDataChangeLastModifiedBy()); } return itemDTO; @@ -178,14 +165,10 @@ public void delete(@PathVariable("itemId") long itemId, @RequestParam String ope Namespace namespace = namespaceService.findOne(entity.getNamespaceId()); - Commit commit = new Commit(); - commit.setAppId(namespace.getAppId()); - commit.setClusterName(namespace.getClusterName()); - commit.setNamespaceName(namespace.getNamespaceName()); - commit.setChangeSets(new ConfigChangeContentBuilder().deleteItem(entity).build()); - commit.setDataChangeCreatedBy(operator); - commit.setDataChangeLastModifiedBy(operator); - commitService.save(commit); + commitService.createCommit(namespace.getAppId(), namespace.getClusterName(), namespace.getNamespaceName(), + new ConfigChangeContentBuilder().deleteItem(entity).build(), operator + ); + } @GetMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items") diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java index bb460e0e4f7..12efc1b2911 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java @@ -35,9 +35,18 @@ public CommitService(final CommitRepository commitRepository) { } @Transactional - public Commit save(Commit commit){ + public void createCommit(String appId, String clusterName, String namespaceName, String configChangeContent, + String operator) { + + Commit commit = new Commit(); commit.setId(0);//protection - return commitRepository.save(commit); + commit.setAppId(appId); + commit.setClusterName(clusterName); + commit.setNamespaceName(namespaceName); + commit.setChangeSets(configChangeContent); + commit.setDataChangeCreatedBy(operator); + commit.setDataChangeLastModifiedBy(operator); + commitRepository.save(commit); } public List find(String appId, String clusterName, String namespaceName, Pageable page){ diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java index 6040ee4cc34..726c0c537b7 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java @@ -17,7 +17,6 @@ package com.ctrip.framework.apollo.biz.service; import com.ctrip.framework.apollo.biz.entity.Audit; -import com.ctrip.framework.apollo.biz.entity.Commit; import com.ctrip.framework.apollo.biz.entity.Item; import com.ctrip.framework.apollo.biz.entity.Namespace; import com.ctrip.framework.apollo.biz.utils.ConfigChangeContentBuilder; @@ -84,7 +83,7 @@ public ItemChangeSets updateSet(String appId, String clusterName, } if (configChangeContentBuilder.hasContent()){ - createCommit(appId, clusterName, namespaceName, configChangeContentBuilder.build(), + commitService.createCommit(appId, clusterName, namespaceName, configChangeContentBuilder.build(), changeSet.getDataChangeLastModifiedBy()); } @@ -147,17 +146,4 @@ private void doCreateItems(List toCreateItems, Namespace namespace, Str } } - private void createCommit(String appId, String clusterName, String namespaceName, String configChangeContent, - String operator) { - - Commit commit = new Commit(); - commit.setAppId(appId); - commit.setClusterName(clusterName); - commit.setNamespaceName(namespaceName); - commit.setChangeSets(configChangeContent); - commit.setDataChangeCreatedBy(operator); - commit.setDataChangeLastModifiedBy(operator); - commitService.save(commit); - } - } From 8f81034b7482bd0e5908236ae9d32b353155d06d Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 19:18:32 +0800 Subject: [PATCH 06/11] refactor(apollo-biz): Add test cases related to ItemController. --- .../controller/ItemControllerTest.java | 149 ++++++++++++++++++ .../src/test/resources/controller/cleanup.sql | 1 + 2 files changed, 150 insertions(+) create mode 100644 apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java diff --git a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java new file mode 100644 index 00000000000..0662778bb6d --- /dev/null +++ b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java @@ -0,0 +1,149 @@ +package com.ctrip.framework.apollo.adminservice.controller; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.ctrip.framework.apollo.biz.entity.Commit; +import com.ctrip.framework.apollo.biz.repository.CommitRepository; +import com.ctrip.framework.apollo.biz.repository.ItemRepository; +import com.ctrip.framework.apollo.common.dto.AppDTO; +import com.ctrip.framework.apollo.common.dto.ClusterDTO; +import com.ctrip.framework.apollo.common.dto.ItemDTO; +import com.ctrip.framework.apollo.common.dto.NamespaceDTO; +import java.util.List; +import java.util.Objects; +import org.junit.Assert; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.Sql.ExecutionPhase; +import org.springframework.web.client.RestTemplate; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/21 + */ +public class ItemControllerTest extends AbstractControllerTest { + + @Autowired + private CommitRepository commitRepository; + + @Autowired + private ItemRepository itemRepository; + + @Test + @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) + @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) + public void testCreate(){ + String appId = "someAppId"; + AppDTO app = restTemplate.getForObject(appBaseUrl(), AppDTO.class, appId); + assert app != null; + ClusterDTO cluster = restTemplate.getForObject(clusterBaseUrl(), ClusterDTO.class, app.getAppId(), "default"); + assert cluster != null; + NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), + NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); + + RestTemplate createdTemplate = (new TestRestTemplate()).getRestTemplate(); + createdTemplate.setMessageConverters(restTemplate.getMessageConverters()); + + String itemKey = "test-key"; + String itemValue = "test-value"; + ItemDTO item = new ItemDTO(itemKey, itemValue, "", 1); + assert namespace != null; + item.setNamespaceId(namespace.getId()); + item.setDataChangeLastModifiedBy("apollo"); + + ResponseEntity response = createdTemplate.postForEntity(itemBaseUrl(), + item, ItemDTO.class, app.getAppId(), cluster.getName(), namespace.getNamespaceName()); + Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); + Assertions.assertEquals(itemKey, Objects.requireNonNull(response.getBody()).getKey()); + + List commitList = commitRepository.findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(app.getAppId(), cluster.getName(), namespace.getNamespaceName(), + Pageable.ofSize(10)); + Assert.assertEquals(1, commitList.size()); + + Commit commit = commitList.get(0); + Assert.assertTrue(commit.getChangeSets().contains(itemKey)); + Assert.assertTrue(commit.getChangeSets().contains(itemValue)); + } + + @Test + @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) + @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) + public void testUpdate(){ + this.testCreate(); + + String appId = "someAppId"; + AppDTO app = restTemplate.getForObject(appBaseUrl(), AppDTO.class, appId); + assert app != null; + ClusterDTO cluster = restTemplate.getForObject(clusterBaseUrl(), ClusterDTO.class, app.getAppId(), "default"); + assert cluster != null; + NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), + NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); + + RestTemplate updateTemplate = (new TestRestTemplate()).getRestTemplate(); + updateTemplate.setMessageConverters(restTemplate.getMessageConverters()); + + String itemKey = "test-key"; + String itemValue = "test-value-updated"; + + long itemId = itemRepository.findByKey(itemKey, Pageable.ofSize(1)) + .getContent() + .get(0) + .getId(); + ItemDTO item = new ItemDTO(itemKey, itemValue, "", 1); + item.setDataChangeLastModifiedBy("apollo"); + + String updateUrl = url( "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{itemId}"); + assert namespace != null; + updateTemplate.put(updateUrl, item, app.getAppId(), cluster.getName(), namespace.getNamespaceName(), itemId); + + itemRepository.findById(itemId).ifPresent(item1 -> { + assertThat(item1.getValue()).isEqualTo(itemValue); + assertThat(item1.getKey()).isEqualTo(itemKey); + }); + + List commitList = commitRepository.findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(app.getAppId(), cluster.getName(), namespace.getNamespaceName(), + Pageable.ofSize(10)); + assertThat(commitList).hasSize(2); + } + + @Test + @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) + @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) + public void testDelete(){ + this.testCreate(); + + String appId = "someAppId"; + AppDTO app = restTemplate.getForObject(appBaseUrl(), AppDTO.class, appId); + assert app != null; + ClusterDTO cluster = restTemplate.getForObject(clusterBaseUrl(), ClusterDTO.class, app.getAppId(), "default"); + assert cluster != null; + NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), + NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); + + RestTemplate delTemplate = (new TestRestTemplate()).getRestTemplate(); + delTemplate.setMessageConverters(restTemplate.getMessageConverters()); + + String itemKey = "test-key"; + + long itemId = itemRepository.findByKey(itemKey, Pageable.ofSize(1)) + .getContent() + .get(0) + .getId(); + + String deleteUrl = url( "/items/{itemId}?operator=apollo"); + delTemplate.delete(deleteUrl, itemId); + assertThat(itemRepository.findById(itemId).isPresent()) + .isFalse(); + + assert namespace != null; + List commitList = commitRepository.findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(app.getAppId(), cluster.getName(), namespace.getNamespaceName(), + Pageable.ofSize(10)); + assertThat(commitList).hasSize(2); + } +} diff --git a/apollo-adminservice/src/test/resources/controller/cleanup.sql b/apollo-adminservice/src/test/resources/controller/cleanup.sql index a47a4cc7489..146c1ec325c 100644 --- a/apollo-adminservice/src/test/resources/controller/cleanup.sql +++ b/apollo-adminservice/src/test/resources/controller/cleanup.sql @@ -20,4 +20,5 @@ DELETE FROM "Cluster"; DELETE FROM "App"; DELETE FROM "NamespaceLock"; DELETE FROM "ServerConfig"; +DELETE FROM "Commit"; From 9cb7426e528319478260340c474f0265c24fe557 Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 20:32:07 +0800 Subject: [PATCH 07/11] refactor(apollo-biz): Add license --- .../controller/ItemControllerTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java index 0662778bb6d..3e71e9814d7 100644 --- a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java +++ b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ package com.ctrip.framework.apollo.adminservice.controller; import static org.assertj.core.api.Assertions.assertThat; From 113d9fb9571f02bb928b17ac783062cb1e71b673 Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 13:20:22 +0800 Subject: [PATCH 08/11] refactor(apollo-biz): Refactor the createCommit method. --- .../controller/ItemController.java | 33 +++++-------------- .../apollo/biz/service/CommitService.java | 13 ++++++-- .../apollo/biz/service/ItemSetService.java | 16 +-------- 3 files changed, 20 insertions(+), 42 deletions(-) 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 a2b07c4048d..d4eb8a54557 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 @@ -79,15 +79,9 @@ public ItemDTO create(@PathVariable("appId") String appId, } entity = itemService.save(entity); dto = BeanUtils.transform(ItemDTO.class, entity); - - Commit commit = new Commit(); - commit.setAppId(appId); - commit.setClusterName(clusterName); - commit.setNamespaceName(namespaceName); - commit.setChangeSets(new ConfigChangeContentBuilder().createItem(entity).build()); - commit.setDataChangeCreatedBy(dto.getDataChangeLastModifiedBy()); - commit.setDataChangeLastModifiedBy(dto.getDataChangeLastModifiedBy()); - commitService.save(commit); + commitService.createCommit(appId, clusterName, namespaceName, new ConfigChangeContentBuilder().createItem(entity).build(), + dto.getDataChangeLastModifiedBy() + ); return dto; } @@ -154,14 +148,7 @@ public ItemDTO update(@PathVariable("appId") String appId, itemDTO = BeanUtils.transform(ItemDTO.class, entity); if (builder.hasContent()) { - Commit commit = new Commit(); - commit.setAppId(appId); - commit.setClusterName(clusterName); - commit.setNamespaceName(namespaceName); - commit.setChangeSets(builder.build()); - commit.setDataChangeCreatedBy(itemDTO.getDataChangeLastModifiedBy()); - commit.setDataChangeLastModifiedBy(itemDTO.getDataChangeLastModifiedBy()); - commitService.save(commit); + commitService.createCommit(appId, clusterName, namespaceName, builder.build(), itemDTO.getDataChangeLastModifiedBy()); } return itemDTO; @@ -178,14 +165,10 @@ public void delete(@PathVariable("itemId") long itemId, @RequestParam String ope Namespace namespace = namespaceService.findOne(entity.getNamespaceId()); - Commit commit = new Commit(); - commit.setAppId(namespace.getAppId()); - commit.setClusterName(namespace.getClusterName()); - commit.setNamespaceName(namespace.getNamespaceName()); - commit.setChangeSets(new ConfigChangeContentBuilder().deleteItem(entity).build()); - commit.setDataChangeCreatedBy(operator); - commit.setDataChangeLastModifiedBy(operator); - commitService.save(commit); + commitService.createCommit(namespace.getAppId(), namespace.getClusterName(), namespace.getNamespaceName(), + new ConfigChangeContentBuilder().deleteItem(entity).build(), operator + ); + } @GetMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items") diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java index bb460e0e4f7..12efc1b2911 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java @@ -35,9 +35,18 @@ public CommitService(final CommitRepository commitRepository) { } @Transactional - public Commit save(Commit commit){ + public void createCommit(String appId, String clusterName, String namespaceName, String configChangeContent, + String operator) { + + Commit commit = new Commit(); commit.setId(0);//protection - return commitRepository.save(commit); + commit.setAppId(appId); + commit.setClusterName(clusterName); + commit.setNamespaceName(namespaceName); + commit.setChangeSets(configChangeContent); + commit.setDataChangeCreatedBy(operator); + commit.setDataChangeLastModifiedBy(operator); + commitRepository.save(commit); } public List find(String appId, String clusterName, String namespaceName, Pageable page){ diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java index 6040ee4cc34..726c0c537b7 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java @@ -17,7 +17,6 @@ package com.ctrip.framework.apollo.biz.service; import com.ctrip.framework.apollo.biz.entity.Audit; -import com.ctrip.framework.apollo.biz.entity.Commit; import com.ctrip.framework.apollo.biz.entity.Item; import com.ctrip.framework.apollo.biz.entity.Namespace; import com.ctrip.framework.apollo.biz.utils.ConfigChangeContentBuilder; @@ -84,7 +83,7 @@ public ItemChangeSets updateSet(String appId, String clusterName, } if (configChangeContentBuilder.hasContent()){ - createCommit(appId, clusterName, namespaceName, configChangeContentBuilder.build(), + commitService.createCommit(appId, clusterName, namespaceName, configChangeContentBuilder.build(), changeSet.getDataChangeLastModifiedBy()); } @@ -147,17 +146,4 @@ private void doCreateItems(List toCreateItems, Namespace namespace, Str } } - private void createCommit(String appId, String clusterName, String namespaceName, String configChangeContent, - String operator) { - - Commit commit = new Commit(); - commit.setAppId(appId); - commit.setClusterName(clusterName); - commit.setNamespaceName(namespaceName); - commit.setChangeSets(configChangeContent); - commit.setDataChangeCreatedBy(operator); - commit.setDataChangeLastModifiedBy(operator); - commitService.save(commit); - } - } From b9e6f49a2b28d3b3dfbe84745d07a48463cf6186 Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 19:18:32 +0800 Subject: [PATCH 09/11] refactor(apollo-biz): Add test cases related to ItemController. --- .../controller/ItemControllerTest.java | 149 ++++++++++++++++++ .../src/test/resources/controller/cleanup.sql | 1 + 2 files changed, 150 insertions(+) create mode 100644 apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java diff --git a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java new file mode 100644 index 00000000000..0662778bb6d --- /dev/null +++ b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java @@ -0,0 +1,149 @@ +package com.ctrip.framework.apollo.adminservice.controller; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.ctrip.framework.apollo.biz.entity.Commit; +import com.ctrip.framework.apollo.biz.repository.CommitRepository; +import com.ctrip.framework.apollo.biz.repository.ItemRepository; +import com.ctrip.framework.apollo.common.dto.AppDTO; +import com.ctrip.framework.apollo.common.dto.ClusterDTO; +import com.ctrip.framework.apollo.common.dto.ItemDTO; +import com.ctrip.framework.apollo.common.dto.NamespaceDTO; +import java.util.List; +import java.util.Objects; +import org.junit.Assert; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.Sql.ExecutionPhase; +import org.springframework.web.client.RestTemplate; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/21 + */ +public class ItemControllerTest extends AbstractControllerTest { + + @Autowired + private CommitRepository commitRepository; + + @Autowired + private ItemRepository itemRepository; + + @Test + @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) + @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) + public void testCreate(){ + String appId = "someAppId"; + AppDTO app = restTemplate.getForObject(appBaseUrl(), AppDTO.class, appId); + assert app != null; + ClusterDTO cluster = restTemplate.getForObject(clusterBaseUrl(), ClusterDTO.class, app.getAppId(), "default"); + assert cluster != null; + NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), + NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); + + RestTemplate createdTemplate = (new TestRestTemplate()).getRestTemplate(); + createdTemplate.setMessageConverters(restTemplate.getMessageConverters()); + + String itemKey = "test-key"; + String itemValue = "test-value"; + ItemDTO item = new ItemDTO(itemKey, itemValue, "", 1); + assert namespace != null; + item.setNamespaceId(namespace.getId()); + item.setDataChangeLastModifiedBy("apollo"); + + ResponseEntity response = createdTemplate.postForEntity(itemBaseUrl(), + item, ItemDTO.class, app.getAppId(), cluster.getName(), namespace.getNamespaceName()); + Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); + Assertions.assertEquals(itemKey, Objects.requireNonNull(response.getBody()).getKey()); + + List commitList = commitRepository.findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(app.getAppId(), cluster.getName(), namespace.getNamespaceName(), + Pageable.ofSize(10)); + Assert.assertEquals(1, commitList.size()); + + Commit commit = commitList.get(0); + Assert.assertTrue(commit.getChangeSets().contains(itemKey)); + Assert.assertTrue(commit.getChangeSets().contains(itemValue)); + } + + @Test + @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) + @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) + public void testUpdate(){ + this.testCreate(); + + String appId = "someAppId"; + AppDTO app = restTemplate.getForObject(appBaseUrl(), AppDTO.class, appId); + assert app != null; + ClusterDTO cluster = restTemplate.getForObject(clusterBaseUrl(), ClusterDTO.class, app.getAppId(), "default"); + assert cluster != null; + NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), + NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); + + RestTemplate updateTemplate = (new TestRestTemplate()).getRestTemplate(); + updateTemplate.setMessageConverters(restTemplate.getMessageConverters()); + + String itemKey = "test-key"; + String itemValue = "test-value-updated"; + + long itemId = itemRepository.findByKey(itemKey, Pageable.ofSize(1)) + .getContent() + .get(0) + .getId(); + ItemDTO item = new ItemDTO(itemKey, itemValue, "", 1); + item.setDataChangeLastModifiedBy("apollo"); + + String updateUrl = url( "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{itemId}"); + assert namespace != null; + updateTemplate.put(updateUrl, item, app.getAppId(), cluster.getName(), namespace.getNamespaceName(), itemId); + + itemRepository.findById(itemId).ifPresent(item1 -> { + assertThat(item1.getValue()).isEqualTo(itemValue); + assertThat(item1.getKey()).isEqualTo(itemKey); + }); + + List commitList = commitRepository.findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(app.getAppId(), cluster.getName(), namespace.getNamespaceName(), + Pageable.ofSize(10)); + assertThat(commitList).hasSize(2); + } + + @Test + @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) + @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) + public void testDelete(){ + this.testCreate(); + + String appId = "someAppId"; + AppDTO app = restTemplate.getForObject(appBaseUrl(), AppDTO.class, appId); + assert app != null; + ClusterDTO cluster = restTemplate.getForObject(clusterBaseUrl(), ClusterDTO.class, app.getAppId(), "default"); + assert cluster != null; + NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), + NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); + + RestTemplate delTemplate = (new TestRestTemplate()).getRestTemplate(); + delTemplate.setMessageConverters(restTemplate.getMessageConverters()); + + String itemKey = "test-key"; + + long itemId = itemRepository.findByKey(itemKey, Pageable.ofSize(1)) + .getContent() + .get(0) + .getId(); + + String deleteUrl = url( "/items/{itemId}?operator=apollo"); + delTemplate.delete(deleteUrl, itemId); + assertThat(itemRepository.findById(itemId).isPresent()) + .isFalse(); + + assert namespace != null; + List commitList = commitRepository.findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(app.getAppId(), cluster.getName(), namespace.getNamespaceName(), + Pageable.ofSize(10)); + assertThat(commitList).hasSize(2); + } +} diff --git a/apollo-adminservice/src/test/resources/controller/cleanup.sql b/apollo-adminservice/src/test/resources/controller/cleanup.sql index a47a4cc7489..146c1ec325c 100644 --- a/apollo-adminservice/src/test/resources/controller/cleanup.sql +++ b/apollo-adminservice/src/test/resources/controller/cleanup.sql @@ -20,4 +20,5 @@ DELETE FROM "Cluster"; DELETE FROM "App"; DELETE FROM "NamespaceLock"; DELETE FROM "ServerConfig"; +DELETE FROM "Commit"; From f065b5c791f34fbe05a013089ff4bf0ae3b2d601 Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 20:32:07 +0800 Subject: [PATCH 10/11] refactor(apollo-biz): Add license --- .../controller/ItemControllerTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java index 0662778bb6d..3e71e9814d7 100644 --- a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java +++ b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ package com.ctrip.framework.apollo.adminservice.controller; import static org.assertj.core.api.Assertions.assertThat; From 84bd23207806033532eca91589a61e8495c9392b Mon Sep 17 00:00:00 2001 From: kl Date: Thu, 23 Mar 2023 12:09:20 +0800 Subject: [PATCH 11/11] refactor(apollo-biz): Optimize code formatting --- .../controller/ItemControllerTest.java | 26 +++++-------------- .../apollo/biz/service/CommitService.java | 1 - .../apollo/biz/service/ItemSetService.java | 2 +- 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java index 3e71e9814d7..ddfd820e1ab 100644 --- a/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java +++ b/apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/ItemControllerTest.java @@ -29,15 +29,12 @@ import java.util.Objects; import org.junit.Assert; import org.junit.Test; -import org.junit.jupiter.api.Assertions; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.Sql.ExecutionPhase; -import org.springframework.web.client.RestTemplate; /** * @author kl (http://kailing.pub) @@ -54,7 +51,7 @@ public class ItemControllerTest extends AbstractControllerTest { @Test @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) - public void testCreate(){ + public void testCreate() { String appId = "someAppId"; AppDTO app = restTemplate.getForObject(appBaseUrl(), AppDTO.class, appId); assert app != null; @@ -63,9 +60,6 @@ public void testCreate(){ NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); - RestTemplate createdTemplate = (new TestRestTemplate()).getRestTemplate(); - createdTemplate.setMessageConverters(restTemplate.getMessageConverters()); - String itemKey = "test-key"; String itemValue = "test-value"; ItemDTO item = new ItemDTO(itemKey, itemValue, "", 1); @@ -73,10 +67,10 @@ public void testCreate(){ item.setNamespaceId(namespace.getId()); item.setDataChangeLastModifiedBy("apollo"); - ResponseEntity response = createdTemplate.postForEntity(itemBaseUrl(), + ResponseEntity response = restTemplate.postForEntity(itemBaseUrl(), item, ItemDTO.class, app.getAppId(), cluster.getName(), namespace.getNamespaceName()); Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); - Assertions.assertEquals(itemKey, Objects.requireNonNull(response.getBody()).getKey()); + Assert.assertEquals(itemKey, Objects.requireNonNull(response.getBody()).getKey()); List commitList = commitRepository.findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(app.getAppId(), cluster.getName(), namespace.getNamespaceName(), Pageable.ofSize(10)); @@ -90,7 +84,7 @@ public void testCreate(){ @Test @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) - public void testUpdate(){ + public void testUpdate() { this.testCreate(); String appId = "someAppId"; @@ -101,9 +95,6 @@ public void testUpdate(){ NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); - RestTemplate updateTemplate = (new TestRestTemplate()).getRestTemplate(); - updateTemplate.setMessageConverters(restTemplate.getMessageConverters()); - String itemKey = "test-key"; String itemValue = "test-value-updated"; @@ -116,7 +107,7 @@ public void testUpdate(){ String updateUrl = url( "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{itemId}"); assert namespace != null; - updateTemplate.put(updateUrl, item, app.getAppId(), cluster.getName(), namespace.getNamespaceName(), itemId); + restTemplate.put(updateUrl, item, app.getAppId(), cluster.getName(), namespace.getNamespaceName(), itemId); itemRepository.findById(itemId).ifPresent(item1 -> { assertThat(item1.getValue()).isEqualTo(itemValue); @@ -131,7 +122,7 @@ public void testUpdate(){ @Test @Sql(scripts = "/controller/test-itemset.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) @Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) - public void testDelete(){ + public void testDelete() { this.testCreate(); String appId = "someAppId"; @@ -142,9 +133,6 @@ public void testDelete(){ NamespaceDTO namespace = restTemplate.getForObject(namespaceBaseUrl(), NamespaceDTO.class, app.getAppId(), cluster.getName(), "application"); - RestTemplate delTemplate = (new TestRestTemplate()).getRestTemplate(); - delTemplate.setMessageConverters(restTemplate.getMessageConverters()); - String itemKey = "test-key"; long itemId = itemRepository.findByKey(itemKey, Pageable.ofSize(1)) @@ -153,7 +141,7 @@ public void testDelete(){ .getId(); String deleteUrl = url( "/items/{itemId}?operator=apollo"); - delTemplate.delete(deleteUrl, itemId); + restTemplate.delete(deleteUrl, itemId); assertThat(itemRepository.findById(itemId).isPresent()) .isFalse(); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java index 12efc1b2911..31e1e577fdc 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java @@ -34,7 +34,6 @@ public CommitService(final CommitRepository commitRepository) { this.commitRepository = commitRepository; } - @Transactional public void createCommit(String appId, String clusterName, String namespaceName, String configChangeContent, String operator) { diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java index 726c0c537b7..f9cdf58548b 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java @@ -82,7 +82,7 @@ public ItemChangeSets updateSet(String appId, String clusterName, auditService.audit("ItemSet", null, Audit.OP.DELETE, operator); } - if (configChangeContentBuilder.hasContent()){ + if (configChangeContentBuilder.hasContent()) { commitService.createCommit(appId, clusterName, namespaceName, configChangeContentBuilder.build(), changeSet.getDataChangeLastModifiedBy()); }
Apollo配置中心技术支持③群
群号:742035428
Apollo配置中心技术支持④群
群号:516773934
Apollo配置中心技术支持③群
群号:742035428(已满)
Apollo配置中心技术支持②群
群号:904287263(已满)
Apollo配置中心技术支持①群
群号:375526581(已满)
tech-support-qq-4 tech-support-qq-3 tech-support-qq-2 tech-support-qq-1