public RestResponse openAPI()

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();
    }