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.");
}