This is an automated email from the ASF dual-hosted git repository.

xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new 9e2682f4d [type:bug]Sync data error when disable metaData. (#3230)
9e2682f4d is described below

commit 9e2682f4d2559b2a6cae8e87c4a641f809470ad3
Author: Kevin Clair <[email protected]>
AuthorDate: Wed Apr 13 17:14:22 2022 +0800

    [type:bug]Sync data error when disable metaData. (#3230)
    
    * fix bug, when disable metadata.
    
    * fix test case.
    
    * code polish.
---
 .../apache/shenyu/admin/mapper/MetaDataMapper.java | 15 ++++----
 .../admin/service/impl/MetaDataServiceImpl.java    | 43 +++++++++-------------
 .../main/resources/mappers/meta-data-sqlmap.xml    | 10 ++---
 .../shenyu/admin/mapper/MetaDataMapperTest.java    | 21 +++++------
 .../shenyu/admin/service/MetaDataServiceTest.java  | 17 ++++-----
 5 files changed, 47 insertions(+), 59 deletions(-)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/MetaDataMapper.java 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/MetaDataMapper.java
index b7974009b..ac21e4463 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/MetaDataMapper.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/MetaDataMapper.java
@@ -25,7 +25,6 @@ import org.apache.shenyu.admin.validation.ExistProvider;
 
 import java.io.Serializable;
 import java.util.List;
-import java.util.Set;
 
 /**
  * The interface Meta data mapper.
@@ -53,10 +52,10 @@ public interface MetaDataMapper extends ExistProvider {
     /**
      * Select a list of MetaDataDOs by idList.
      *
-     * @param idSet a set of ids
+     * @param idList a list of ids
      * @return a list of MetaDataDOs
      */
-    List<MetaDataDO> selectByIdSet(@Param("idSet") Set<String> idSet);
+    List<MetaDataDO> selectByIdList(@Param("idList") List<String> idList);
     
     /**
      * Find all list.
@@ -132,11 +131,11 @@ public interface MetaDataMapper extends ExistProvider {
     /**
      * update enable batch.
      *
-     * @param idSet   the ids
+     * @param idList  the ids
      * @param enabled the status
      * @return the count
      */
-    int updateEnableBatch(@Param("idSet") Set<String> idSet, @Param("enabled") 
Boolean enabled);
+    int updateEnableBatch(@Param("idList") List<String> idList, 
@Param("enabled") Boolean enabled);
     
     /**
      * Delete int.
@@ -147,12 +146,12 @@ public interface MetaDataMapper extends ExistProvider {
     int delete(String id);
     
     /**
-     * batch delete by a set of ids.
+     * batch delete by a list of ids.
      *
-     * @param idSet a set of ids
+     * @param idList a list of ids
      * @return the count of deleted
      */
-    int deleteByIdSet(@Param("idSet") Set<String> idSet);
+    int deleteByIdList(@Param("idList") List<String> idList);
     
     /**
      * the path is existed.
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java
index 5fc18fb8f..2c6921e98 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java
@@ -48,7 +48,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -94,41 +93,35 @@ public class MetaDataServiceImpl implements MetaDataService 
{
     
     @Override
     public int delete(final List<String> ids) {
-        
-        int count = 0;
-        Set<String> idSet = Optional.ofNullable(ids).orElseGet(ArrayList::new)
-                
.stream().filter(StringUtils::isNotEmpty).collect(Collectors.toSet());
-        if (CollectionUtils.isNotEmpty(idSet)) {
-            List<MetaDataDO> metaDataDoList = 
metaDataMapper.selectByIdSet(idSet);
-            List<MetaData> metaDataList = 
Optional.ofNullable(metaDataDoList).orElseGet(ArrayList::new)
-                    
.stream().map(MetaDataTransfer.INSTANCE::mapToData).collect(Collectors.toList());
-            
-            count = metaDataMapper.deleteByIdSet(idSet);
-            eventPublisher.publishEvent(new 
DataChangedEvent(ConfigGroupEnum.META_DATA, DataEventTypeEnum.DELETE, 
metaDataList));
+        List<MetaDataDO> metaDataDoList = metaDataMapper.selectByIdList(ids);
+        if (CollectionUtils.isEmpty(metaDataDoList)) {
+            return 0;
         }
-        
+        int count;
+        List<MetaData> metaDataList = 
Optional.ofNullable(metaDataDoList).orElseGet(ArrayList::new)
+                
.stream().map(MetaDataTransfer.INSTANCE::mapToData).collect(Collectors.toList());
+            
+        count = metaDataMapper.deleteByIdList(ids);
+        eventPublisher.publishEvent(new 
DataChangedEvent(ConfigGroupEnum.META_DATA, DataEventTypeEnum.DELETE, 
metaDataList));
+
         return count;
     }
     
     @Override
     public String enabled(final List<String> ids, final Boolean enabled) {
-        
-        Set<String> idSet = Optional.ofNullable(ids).orElseGet(ArrayList::new)
-                
.stream().filter(StringUtils::isNotEmpty).collect(Collectors.toSet());
-        if (CollectionUtils.isEmpty(idSet)) {
-            return AdminConstants.ID_NOT_EXIST;
-        }
-        List<MetaDataDO> metaDataDoList = 
Optional.ofNullable(metaDataMapper.selectByIdSet(idSet)).orElseGet(ArrayList::new);
-        if (idSet.size() != metaDataDoList.size()) {
+        List<MetaDataDO> metaDataDoList = 
Optional.ofNullable(metaDataMapper.selectByIdList(ids)).orElseGet(ArrayList::new);
+        if (CollectionUtils.isEmpty(metaDataDoList)) {
             return AdminConstants.ID_NOT_EXIST;
         }
         List<MetaData> metaDataList = metaDataDoList.stream()
-                .map(MetaDataTransfer.INSTANCE::mapToData)
-                .collect(Collectors.toList());
-        metaDataMapper.updateEnableBatch(idSet, enabled);
+            .map(metaDataDo -> {
+                metaDataDo.setEnabled(enabled);
+                return MetaDataTransfer.INSTANCE.mapToData(metaDataDo);
+            }).collect(Collectors.toList());
+        metaDataMapper.updateEnableBatch(ids, enabled);
         
         eventPublisher.publishEvent(new 
DataChangedEvent(ConfigGroupEnum.META_DATA, DataEventTypeEnum.UPDATE,
-                metaDataList));
+            metaDataList));
         
         return StringUtils.EMPTY;
     }
diff --git a/shenyu-admin/src/main/resources/mappers/meta-data-sqlmap.xml 
b/shenyu-admin/src/main/resources/mappers/meta-data-sqlmap.xml
index 295d8a497..2f9399edd 100644
--- a/shenyu-admin/src/main/resources/mappers/meta-data-sqlmap.xml
+++ b/shenyu-admin/src/main/resources/mappers/meta-data-sqlmap.xml
@@ -55,12 +55,12 @@
          WHERE id = #{id,jdbcType=VARCHAR}
     </select>
 
-    <select id="selectByIdSet" resultMap="BaseResultMap">
+    <select id="selectByIdList" resultMap="BaseResultMap">
         SElECT
                 <include refid="Base_Column_List"/>
           FROM meta_data
          WHERE id IN
-                <foreach collection="idSet" item="id" index="index" open="(" 
separator="," close=")">
+                <foreach collection="idList" item="id" index="index" open="(" 
separator="," close=")">
                     #{id,jdbcType=VARCHAR}
                 </foreach>
     </select>
@@ -191,7 +191,7 @@
         UPDATE meta_data
            SET enabled = #{enabled,jdbcType=TINYINT}
          WHERE id IN
-                <foreach collection="idSet" index="index" item="id" open="(" 
separator="," close=")">
+                <foreach collection="idList" index="index" item="id" open="(" 
separator="," close=")">
                     #{id, jdbcType=VARCHAR}
                 </foreach>
     </update>
@@ -201,10 +201,10 @@
               WHERE id = #{id,jdbcType=VARCHAR}
     </delete>
 
-    <delete id="deleteByIdSet" parameterType="java.lang.String">
+    <delete id="deleteByIdList" parameterType="java.lang.String">
         DELETE FROM meta_data
               WHERE id
-                 IN <foreach collection="idSet" item="id" index="index" 
open="(" separator="," close=")">
+                 IN <foreach collection="idList" item="id" index="index" 
open="(" separator="," close=")">
                       #{id,jdbcType=VARCHAR}
                     </foreach>
     </delete>
diff --git 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/MetaDataMapperTest.java
 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/MetaDataMapperTest.java
index 04c87d43f..8409027e0 100644
--- 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/MetaDataMapperTest.java
+++ 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/MetaDataMapperTest.java
@@ -28,7 +28,6 @@ import org.junit.jupiter.api.Test;
 import javax.annotation.Resource;
 import java.sql.Timestamp;
 import java.util.List;
-import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -77,10 +76,10 @@ public final class MetaDataMapperTest extends 
AbstractSpringIntegrationTest {
         int count2 = metaDataMapper.insert(metaDataDO2);
         assertThat(count2, comparesEqualTo(1));
 
-        Set<String> idSet = Stream.of(metaDataDO.getId(), 
metaDataDO2.getId()).collect(Collectors.toSet());
-        List<MetaDataDO> resultList = metaDataMapper.selectByIdSet(idSet);
+        List<String> idList = Stream.of(metaDataDO.getId(), 
metaDataDO2.getId()).collect(Collectors.toList());
+        List<MetaDataDO> resultList = metaDataMapper.selectByIdList(idList);
         assertThat(resultList, hasItems(metaDataDO2, metaDataDO));
-        assertThat(resultList.size(), comparesEqualTo(idSet.size()));
+        assertThat(resultList.size(), comparesEqualTo(idList.size()));
     }
 
     @Test
@@ -204,11 +203,11 @@ public final class MetaDataMapperTest extends 
AbstractSpringIntegrationTest {
         int count2 = metaDataMapper.insert(metaDataDO2);
         assertThat(count2, comparesEqualTo(1));
 
-        Set<String> idSet = Stream.of(metaDataDO.getId(), 
metaDataDO2.getId()).collect(Collectors.toSet());
-        int ret = metaDataMapper.updateEnableBatch(idSet, true);
-        assertThat(ret, comparesEqualTo(idSet.size()));
+        List<String> idList = Stream.of(metaDataDO.getId(), 
metaDataDO2.getId()).collect(Collectors.toList());
+        int ret = metaDataMapper.updateEnableBatch(idList, true);
+        assertThat(ret, comparesEqualTo(idList.size()));
 
-        List<MetaDataDO> resultList = metaDataMapper.selectByIdSet(idSet);
+        List<MetaDataDO> resultList = metaDataMapper.selectByIdList(idList);
         resultList.forEach(result -> assertTrue(result.getEnabled()));
     }
 
@@ -232,9 +231,9 @@ public final class MetaDataMapperTest extends 
AbstractSpringIntegrationTest {
         int count2 = metaDataMapper.insert(metaDataDO2);
         assertThat(count2, comparesEqualTo(1));
 
-        Set<String> idSet = Stream.of(metaDataDO.getId(), 
metaDataDO2.getId()).collect(Collectors.toSet());
-        int result = metaDataMapper.deleteByIdSet(idSet);
-        assertThat(result, comparesEqualTo(idSet.size()));
+        List<String> idList = Stream.of(metaDataDO.getId(), 
metaDataDO2.getId()).collect(Collectors.toList());
+        int result = metaDataMapper.deleteByIdList(idList);
+        assertThat(result, comparesEqualTo(idList.size()));
     }
 
     private MetaDataDO getMetaDataDO() {
diff --git 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java
 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java
index 034659636..a94d530a4 100644
--- 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java
+++ 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java
@@ -47,10 +47,8 @@ import org.springframework.context.ApplicationEventPublisher;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
@@ -134,13 +132,11 @@ public final class MetaDataServiceTest {
     @Test
     public void testEnabled() {
         List<String> ids = Lists.newArrayList("id1", "id2", "id3");
-        Set<String> idSet = new HashSet<>(ids);
-        when(metaDataMapper.selectByIdSet(idSet))
-                .thenReturn(Arrays.asList(MetaDataDO.builder().build(), 
MetaDataDO.builder().build()))
-                .thenReturn(Arrays.asList(MetaDataDO.builder().build(), 
MetaDataDO.builder().build(), MetaDataDO.builder().build()));
         String msg = metaDataService.enabled(ids, true);
         assertEquals(AdminConstants.ID_NOT_EXIST, msg);
-
+        when(metaDataMapper.selectByIdList(ids))
+                .thenReturn(Arrays.asList(MetaDataDO.builder().build(), 
MetaDataDO.builder().build()))
+                .thenReturn(Arrays.asList(MetaDataDO.builder().build(), 
MetaDataDO.builder().build(), MetaDataDO.builder().build()));
         msg = metaDataService.enabled(ids, false);
         assertEquals(StringUtils.EMPTY, msg);
     }
@@ -285,10 +281,11 @@ public final class MetaDataServiceTest {
      */
     private void testDeleteForNotEmptyIds() {
         List<String> ids = Lists.newArrayList("id1", "id1", "id3");
-        Set<String> idSet = new HashSet<>(ids);
-        
when(metaDataMapper.selectByIdSet(idSet)).thenReturn(Arrays.asList(MetaDataDO.builder().build(),
 MetaDataDO.builder().build()));
-        when(metaDataMapper.deleteByIdSet(idSet)).thenReturn(2);
         int count = metaDataService.delete(ids);
+        Assertions.assertEquals(0, count, "The count of delete should be 0.");
+        
when(metaDataMapper.selectByIdList(ids)).thenReturn(Arrays.asList(MetaDataDO.builder().build(),
 MetaDataDO.builder().build()));
+        when(metaDataMapper.deleteByIdList(ids)).thenReturn(2);
+        count = metaDataService.delete(ids);
         Assertions.assertEquals(2, count,
                 "The count of delete should be 2.");
     }

Reply via email to