You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by xi...@apache.org on 2023/07/10 06:56:14 UTC
[shenyu] branch master updated: [ISSUE #4797] update other rpc_ext for the same service (#4821)
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/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new fa306f493 [ISSUE #4797] update other rpc_ext for the same service (#4821)
fa306f493 is described below
commit fa306f4933f027e8dad995f6ad017b2ce2cc1725
Author: dragon-zhang <zh...@apache.org>
AuthorDate: Mon Jul 10 14:56:08 2023 +0800
[ISSUE #4797] update other rpc_ext for the same service (#4821)
---
.../org/apache/shenyu/admin/mapper/MetaDataMapper.java | 2 +-
.../shenyu/admin/service/impl/MetaDataServiceImpl.java | 18 ++++++++++++++++--
.../src/main/resources/mappers/meta-data-sqlmap.xml | 4 +++-
.../apache/shenyu/admin/mapper/MetaDataMapperTest.java | 2 +-
4 files changed, 21 insertions(+), 5 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 ac21e4463..6320e0619 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
@@ -79,7 +79,7 @@ public interface MetaDataMapper extends ExistProvider {
* @param methodName the methodName
* @return the meta data do
*/
- MetaDataDO findByServiceNameAndMethod(@Param("serviceName") String serviceName, @Param("methodName") String methodName);
+ List<MetaDataDO> findByServiceNameAndMethod(@Param("serviceName") String serviceName, @Param("methodName") String methodName);
/**
* Select by query list.
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 062744a8f..9511b9ad5 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.admin.service.impl;
+import java.util.LinkedList;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.admin.aspect.annotation.Pageable;
@@ -40,6 +41,7 @@ import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.common.enums.DataEventTypeEnum;
import org.apache.shenyu.common.utils.UUIDUtils;
import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
+import org.springframework.beans.BeanUtils;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
@@ -169,7 +171,8 @@ public class MetaDataServiceImpl implements MetaDataService {
@Override
public MetaDataDO findByServiceNameAndMethodName(final String serviceName, final String methodName) {
- return metaDataMapper.findByServiceNameAndMethod(serviceName, methodName);
+ final List<MetaDataDO> metadataList = metaDataMapper.findByServiceNameAndMethod(serviceName, methodName);
+ return CollectionUtils.isEmpty(metadataList) ? null : metadataList.get(0);
}
@Override
@@ -200,10 +203,21 @@ public class MetaDataServiceImpl implements MetaDataService {
MetaDataDO metaDataDO = MetaDataTransfer.INSTANCE.mapToEntity(metaDataDTO);
Optional.ofNullable(metaDataMapper.selectById(metaDataDTO.getId()))
.ifPresent(e -> metaDataDTO.setEnabled(e.getEnabled()));
- metaDataDO.setPathDesc(Objects.isNull(metaDataDO.getPathDesc()) ? "" : metaDataDO.getPathDesc());
+ metaDataDO.setPathDesc(Optional.ofNullable(metaDataDO.getPathDesc()).orElse(""));
final MetaDataDO before = metaDataMapper.selectById(metaDataDO.getId());
if (metaDataMapper.update(metaDataDO) > 0) {
publisher.onUpdated(metaDataDO, before);
+ // update other rpc_ext for the same service
+ final List<MetaDataDO> befores = Optional.ofNullable(metaDataMapper.findByServiceNameAndMethod(
+ metaDataDO.getServiceName(), null)).orElseGet(LinkedList::new);
+ for (MetaDataDO b : befores) {
+ MetaDataDO update = new MetaDataDO();
+ BeanUtils.copyProperties(b, update);
+ update.setRpcExt(metaDataDTO.getRpcExt());
+ if (metaDataMapper.update(update) > 0) {
+ publisher.onUpdated(update, b);
+ }
+ }
}
// publish AppAuthData's update event
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 4a62335da..3dc70c3fe 100644
--- a/shenyu-admin/src/main/resources/mappers/meta-data-sqlmap.xml
+++ b/shenyu-admin/src/main/resources/mappers/meta-data-sqlmap.xml
@@ -77,7 +77,9 @@
<include refid="Base_Column_List"/>
FROM meta_data
WHERE service_name = #{serviceName,jdbcType=VARCHAR}
- AND method_name = #{methodName,jdbcType=VARCHAR}
+ <if test="methodName != null">
+ AND method_name = #{methodName,jdbcType=VARCHAR}
+ </if>
</select>
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 b3d4c55fe..9c6a1e3ac 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
@@ -109,7 +109,7 @@ public final class MetaDataMapperTest extends AbstractSpringIntegrationTest {
int count = metaDataMapper.insert(metaDataDO);
assertThat(count, comparesEqualTo(1));
- MetaDataDO result = metaDataMapper.findByServiceNameAndMethod(metaDataDO.getServiceName(), metaDataDO.getMethodName());
+ MetaDataDO result = metaDataMapper.findByServiceNameAndMethod(metaDataDO.getServiceName(), metaDataDO.getMethodName()).get(0);
assertThat(result.getId(), comparesEqualTo(metaDataDO.getId()));
}