class DefaultServiceStrategyCallableWrapper implements ServiceStrategyCallableWrapper {
    @Value("${" + ServiceStrategyConstant.SPRING_APPLICATION_STRATEGY_REST_REQUEST_DECORATOR_ENABLED + ":true}")
    protected Boolean requestDecoratorEnabled;

    @Override
    public <T> Callable<T> wrapCallable(Callable<T> callable) {
        RequestAttributes originRequestAttributes = RequestContextHolder.getRequestAttributes();
        if (requestDecoratorEnabled) {
            if (originRequestAttributes != null) {
                originRequestAttributes = ServiceStrategyRequestDecoratorFactory.decorateRequestAttributes(originRequestAttributes);
            }
        }

        RequestAttributes requestAttributes = originRequestAttributes;

        Map<String, Object> attributes = RpcStrategyContext.getCurrentContext().getAttributes();

        Object span = StrategyTracerContext.getCurrentContext().getSpan();

        return new Callable<T>() {
            @Override
            public T call() throws Exception {<FILL_FUNCTION_BODY>}
        };
    }
}

                try {
                    RequestContextHolder.setRequestAttributes(requestAttributes);
                    RestStrategyContext.getCurrentContext().setRequestAttributes(requestAttributes);
                    RpcStrategyContext.getCurrentContext().setAttributes(attributes);

                    StrategyTracerContext.getCurrentContext().setSpan(span);

                    return callable.call();
                } finally {
                    RequestContextHolder.resetRequestAttributes();
                    RestStrategyContext.clearCurrentContext();
                    RpcStrategyContext.clearCurrentContext();

                    StrategyTracerContext.clearCurrentContext();
                }
            
<no_super_class>