in streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/aspect/OpenAPIAspect.java [59:103]
public RestResponse openAPI(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
log.debug("restResponse aspect, method:{}", methodSignature.getName());
Boolean isApi = (Boolean) SecurityUtils.getSubject().getSession().getAttribute(AccessToken.IS_API_TOKEN);
if (isApi != null && isApi) {
HttpServletRequest request =
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
OpenAPI openAPI = methodSignature.getMethod().getAnnotation(OpenAPI.class);
if (openAPI == null) {
String url = request.getRequestURI();
throw new ApiAlertException("openapi unsupported: " + url);
} else {
Object[] objects = joinPoint.getArgs();
for (OpenAPI.Param param : openAPI.param()) {
String bingFor = param.bindFor();
if (StringUtils.isNotBlank(bingFor)) {
String name = param.name();
for (Object args : objects) {
Field bindForField = ReflectUtils.getField(args.getClass(), bingFor);
if (bindForField != null) {
Object value = request.getParameter(name);
bindForField.setAccessible(true);
if (value != null) {
if (param.type().equals(String.class)) {
bindForField.set(args, value.toString());
} else if (param.type().equals(Boolean.class)
|| param.type().equals(boolean.class)) {
bindForField.set(args, Boolean.parseBoolean(value.toString()));
} else if (param.type().equals(Integer.class) || param.type().equals(int.class)) {
bindForField.set(args, Integer.parseInt(value.toString()));
} else if (param.type().equals(Long.class) || param.type().equals(long.class)) {
bindForField.set(args, Long.parseLong(value.toString()));
} else if (param.type().equals(Date.class)) {
bindForField.set(args, DateUtils.parse(value.toString(), DateUtils.fullFormat(),
TimeZone.getDefault()));
}
}
}
}
}
}
}
}
return (RestResponse) joinPoint.proceed();
}