Skip to content

Commit

Permalink
perf($AuthCenter): refine null check for getting service info
Browse files Browse the repository at this point in the history
  • Loading branch information
Johnny Miller (锺俊) committed Dec 28, 2020
1 parent 7359519 commit fc363fe
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.jmsoftware.maf.authcenter.permission.entity.GetServicesInfoResponse;
import com.jmsoftware.maf.authcenter.permission.service.PermissionService;
import com.jmsoftware.maf.common.bean.ResponseBodyBean;
import com.jmsoftware.maf.common.exception.BusinessException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -35,7 +36,7 @@ public class PermissionController {
*/
@GetMapping("/permissions/services-info")
@ApiOperation(value = "Get services info", notes = "Get services info")
public ResponseBodyBean<GetServicesInfoResponse> getServicesInfo() {
public ResponseBodyBean<GetServicesInfoResponse> getServicesInfo() throws BusinessException {
return ResponseBodyBean.ofSuccess(permissionService.getServicesInfo());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.jmsoftware.maf.common.domain.authcenter.permission.GetPermissionListByRoleIdListPayload;
import com.jmsoftware.maf.common.domain.authcenter.permission.GetPermissionListByRoleIdListResponse;
import com.jmsoftware.maf.common.domain.authcenter.permission.GetPermissionListByUserIdResponse;
import com.jmsoftware.maf.common.exception.BusinessException;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
Expand Down Expand Up @@ -60,5 +61,5 @@ public interface PermissionService extends IService<PermissionPersistence> {
*
* @return the services info
*/
GetServicesInfoResponse getServicesInfo();
GetServicesInfoResponse getServicesInfo() throws BusinessException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
import com.jmsoftware.maf.authcenter.permission.entity.GetServicesInfoResponse;
import com.jmsoftware.maf.authcenter.permission.entity.PermissionPersistence;
import com.jmsoftware.maf.authcenter.permission.mapper.PermissionMapper;
Expand All @@ -14,6 +15,7 @@
import com.jmsoftware.maf.common.domain.authcenter.permission.GetPermissionListByRoleIdListResponse;
import com.jmsoftware.maf.common.domain.authcenter.permission.GetPermissionListByUserIdResponse;
import com.jmsoftware.maf.common.domain.springbootstarter.HttpApiResourcesResponse;
import com.jmsoftware.maf.common.exception.BusinessException;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -26,6 +28,7 @@
import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.List;
import java.util.Optional;

/**
* <h1>PermissionServiceImpl</h1>
Expand Down Expand Up @@ -82,26 +85,34 @@ public List<PermissionPersistence> getPermissionPersistenceListByUserId(@NotNull
}

@Override
public GetServicesInfoResponse getServicesInfo() {
public GetServicesInfoResponse getServicesInfo() throws BusinessException {
val serviceIdList = discoveryClient.getServices();
log.info("Getting service info from Service ID list: {}", serviceIdList);
GetServicesInfoResponse response = new GetServicesInfoResponse();
final ObjectMapper mapper = new ObjectMapper();
val response = new GetServicesInfoResponse();
val mapper = new ObjectMapper();
val ignoredServiceIdList = Lists.newArrayList(projectProperty.getProjectArtifactId(),
"api-gateway", "spring-boot-admin");
log.info("Ignored service ID list: {}", ignoredServiceIdList);
for (String serviceId : serviceIdList) {
if (serviceId.contains(projectProperty.getProjectArtifactId())) {
if (ignoredServiceIdList.contains(serviceId)) {
log.warn("Ignored service ID: {}", serviceId);
continue;
}
ResponseBodyBean<?> responseBodyBean = restTemplate.getForObject(
String.format("http://%s/http-api-resources", serviceId), ResponseBodyBean.class);
assert responseBodyBean != null;
HttpApiResourcesResponse httpApiResourcesResponse = mapper.convertValue(responseBodyBean.getData(),
ResponseBodyBean<?> responseBodyBean = Optional.ofNullable(restTemplate.getForObject(
String.format("http://%s/http-api-resources", serviceId), ResponseBodyBean.class))
.orElseThrow(() -> new BusinessException("Internal service mustn't respond null"));
val data = Optional.of(responseBodyBean.getData())
.orElseThrow(() -> new BusinessException("HttpApiResourcesResponse mustn't be null"));
HttpApiResourcesResponse httpApiResourcesResponse = mapper.convertValue(data,
HttpApiResourcesResponse.class);
GetServicesInfoResponse.ServiceInfo serviceInfo = new GetServicesInfoResponse.ServiceInfo();
serviceInfo.setServiceId(serviceId);
serviceInfo.setHttpApiResources(httpApiResourcesResponse);
response.getList().add(serviceInfo);
}
if (CollUtil.isEmpty(response.getList())) {
log.warn("Got am empty ServiceInfo list");
}
return response;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,3 @@ sftp:
private-key-pass-phrase:
session-cache-size: 20
session-wait-timeout: 15000

maf:
configuration:
web-request-log-disabled: true

0 comments on commit fc363fe

Please sign in to comment.