diff --git a/jhinno-openapi-java-sdk/pom.xml b/jhinno-openapi-java-sdk/pom.xml index 9e84dfb..3436559 100644 --- a/jhinno-openapi-java-sdk/pom.xml +++ b/jhinno-openapi-java-sdk/pom.xml @@ -5,7 +5,7 @@ 4.0.0 jhinno-openapi-java-sdk - 2.0.5 + 2.0.6 jar Jhinno OpenAPI SDK for Java The Jhinno OpenAPI SDK for Java used for accessing Jhinno OpenApi Service diff --git a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecution.java b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecution.java deleted file mode 100644 index 89aaa62..0000000 --- a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecution.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.jhinno.sdk.openapi; - -import com.jhinno.sdk.openapi.api.JHRequestExecution; - -public interface JHApiExecution { - - /** - * 初始化API执行器 - */ - void init(JHRequestExecution execution); - -} diff --git a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionAbstract.java b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionAbstract.java index 1904b3e..485b5dd 100644 --- a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionAbstract.java +++ b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionAbstract.java @@ -1,13 +1,20 @@ package com.jhinno.sdk.openapi; import com.jhinno.sdk.openapi.api.JHRequestExecution; +import lombok.Setter; +@Setter public abstract class JHApiExecutionAbstract { - + // 提供setter方法,支持依赖注入 protected JHRequestExecution execution; - public void init(JHRequestExecution execution) { + // 默认构造函数,允许子类不实现构造方法 + public JHApiExecutionAbstract() { + } + + // 带参数的构造函数,允许直接注入 + public JHApiExecutionAbstract(JHRequestExecution execution) { this.execution = execution; } diff --git a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionManage.java b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionManage.java index 2916d4c..4c9a0c8 100644 --- a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionManage.java +++ b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiExecutionManage.java @@ -23,13 +23,18 @@ public class JHApiExecutionManage { * * @param appformBaseUrl 景行API的URL */ - public JHApiExecutionManage(String appformBaseUrl) { + public JHApiExecutionManage(String appformBaseUrl, JHApiRequestHandler requestHandler) { JHApiClient client = new JHApiClient(appformBaseUrl); client.initDefaultApiClient(); - EXECUTION = new JHRequestExecution(client); + EXECUTION = new JHRequestExecution(client, requestHandler); initApiExecution(); } + public JHApiExecutionManage(String appformBaseUrl) { + this(appformBaseUrl, new JHApiRequestHandler() { + }); + } + /** * 创建一个带有自定义HTTP客户端的API执行管理器 * @@ -71,7 +76,7 @@ public class JHApiExecutionManage { * @param execution 自定义的执行器实例 */ public void registerApiExecution(JHApiExecutionAbstract execution) { - execution.init(EXECUTION); + execution.setExecution(EXECUTION); API_CLIENT_MAP.put(execution.getClass(), execution); } diff --git a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiRequestHandler.java b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiRequestHandler.java new file mode 100644 index 0000000..52a8494 --- /dev/null +++ b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/JHApiRequestHandler.java @@ -0,0 +1,26 @@ +package com.jhinno.sdk.openapi; + + +import java.util.Map; + +public interface JHApiRequestHandler { + + /** + * 获取当前登录的用户名 + * + * @return 用户名 + */ + default String getCurrentUserName() { + return null; + } + + /** + * 构建一个带token的请求头 + * + * @param headers 处理器的请求头 + * @return 请求头 + */ + default Map getHeaders(Map headers) { + return headers; + } +} diff --git a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/api/JHRequestExecution.java b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/api/JHRequestExecution.java index e39bae4..f7df942 100644 --- a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/api/JHRequestExecution.java +++ b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/api/JHRequestExecution.java @@ -43,6 +43,11 @@ import java.util.concurrent.ConcurrentHashMap; @NoArgsConstructor public class JHRequestExecution { + /** + * 用户令牌的缓存 + */ + private static final Map TOKEN_INFO_MAP = new ConcurrentHashMap<>(20); + /** * JHApiClient实例 */ @@ -84,29 +89,49 @@ public class JHRequestExecution { */ private String accessKeySecret; + private JHApiRequestHandler requestHandler; + /** * 获取一个执行器的实例 * + * @param jhApiClient 请求的客户端 + * @param requestHandler 请求头处理器 + */ + public JHRequestExecution(JHApiClient jhApiClient, JHApiRequestHandler requestHandler) { + this.jhApiClient = jhApiClient; + this.requestHandler = requestHandler; + } + + + /** + * 创建一个默认的请求处理器 + * * @param jhApiClient 请求的客户端 */ public JHRequestExecution(JHApiClient jhApiClient) { this.jhApiClient = jhApiClient; + this.requestHandler = new JHApiRequestHandler() { + }; + } + + + public String getUserName(String userName) { + if (StringUtils.isNotBlank(userName)) { + return userName; + } + return requestHandler.getCurrentUserName(); } /** - * 用户令牌的缓存 - */ - private static final Map TOKEN_INFO_MAP = new ConcurrentHashMap<>(20); - - /** - * 设置是否使用服务器时间 + * 获取当前用户的token * - * @param usedServerTime 是否使用服务器时间 + * @return 用户token */ - public void setUsedServerTime(boolean usedServerTime) { - isUsedServerTime = usedServerTime; + public String getToken() { + return getToken(requestHandler.getCurrentUserName()); } + /** * 获取用户的Token * @@ -122,9 +147,9 @@ public class JHRequestExecution { // 防止因为服务器时间的问题二导致token不可用,可以通过此配置提前获取token int tokenEffectiveTime = (tokenTimeout - tokenResidueTime) * 60 * 1000; - // 如果是强制获取、用户令牌为空、用户令牌过期等,则获取令牌 - if (isForceGetToken || tokenInfo == null - || System.currentTimeMillis() - tokenInfo.getCurrentTimestamp() > tokenEffectiveTime) { + // 如果是强制获取用户令牌为空、用户令牌不存在、用户令牌过期等,则获取令牌 + boolean isGetToken = isForceGetToken || tokenInfo == null || System.currentTimeMillis() - tokenInfo.getCurrentTimestamp() > tokenEffectiveTime; + if (isGetToken) { Map params = new HashMap<>(2); params.put("timeout", tokenTimeout); String currentTimeMillis = getCurrentTimeMillis(); @@ -139,13 +164,9 @@ public class JHRequestExecution { } catch (Exception e) { throw new ClientException("AES加密失败,失败原因:" + e.getMessage(), e); } - - String url = JHApiClient.getUrl(AuthPathConstant.AUTH_TOKEN_PATH, params); - Map token = get(url, new TypeReference>>() { - }); tokenInfo = new TokenInfo(); tokenInfo.setUserName(username); - tokenInfo.setToken(token.get("token")); + tokenInfo.setToken(requestToken(params)); tokenInfo.setCurrentTimestamp(System.currentTimeMillis()); TOKEN_INFO_MAP.put(username, tokenInfo); } @@ -153,7 +174,9 @@ public class JHRequestExecution { } /** - * @return + * 获得当前的时间 + * + * @return 当前时间 */ public String getCurrentTimeMillis() { if (authType == AuthType.ACCESS_SECRET_MODE || !isUsedServerTime) { @@ -162,14 +185,37 @@ public class JHRequestExecution { return jhApiClient.getAppformServerCurrentTimeMillis(); } + /** - * 构建一个带token的请求头 + * 获得最终的请求头 * * @param username 用户名 * @param isContentType 是否携带默认的Content-type,默认为{@link ContentType#APPLICATION_JSON} * @return 请求头 */ public Map getHeaders(String username, boolean isContentType) { + Map defaultHeaders = getDefaultHeaders(getUserName(username), isContentType); + return requestHandler.getHeaders(defaultHeaders); + } + + /** + * 获得当前用户的请求头 + * + * @param isContentType 是否携带默认的Content-type,默认为{@link ContentType#APPLICATION_JSON} + * @return 请求头 + */ + public Map getHeaders(boolean isContentType) { + return getHeaders(null, isContentType); + } + + /** + * 构建一个默认参数的请求头 + * + * @param username 用户名 + * @param isContentType 是否携带默认的Content-type,默认为{@link ContentType#APPLICATION_JSON} + * @return 请求头 + */ + private Map getDefaultHeaders(String username, boolean isContentType) { Map headers = new HashMap<>(); // 默认请求json数据 if (isContentType) { @@ -198,6 +244,16 @@ public class JHRequestExecution { return headers; } + /** + * 获得一个签名 + * + * @param currentTimeMillis 时间戳 + * @return 签名 + */ + public String getsSignature(String currentTimeMillis) { + return getsSignature(requestHandler.getCurrentUserName(), currentTimeMillis); + } + /** * 获取签名 * @@ -259,6 +315,17 @@ public class JHRequestExecution { return result.getData(); } + private String requestToken(Map params) { + String url = JHApiClient.getUrl(AuthPathConstant.AUTH_TOKEN_PATH, params); + ResponseResult> result = jhApiClient.get(url, new TypeReference>>() { + }); + if (StringUtils.equals(result.getResult(), CommonConstant.FAILED)) { + throw new ServiceException(url, result.getCode(), result.getMessage()); + } + Map token = result.getData(); + return token.get("token"); + } + /** * 发起一个有返回值的POST请求 * @@ -412,7 +479,7 @@ public class JHRequestExecution { } /** - * 退出用户的登录,释放许可,当用户退出登录后,建议清除用户的token信息 + * 退出用户的登录,释放许可 * * @param username 用户名 */ @@ -420,4 +487,11 @@ public class JHRequestExecution { delete(AuthPathConstant.AUTH_LOGOUT, username); TOKEN_INFO_MAP.remove(username); } + + /** + * 退出当前用户的登录 + */ + public void logout() { + logout(requestHandler.getCurrentUserName()); + } } diff --git a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java index 088fa34..49fcced 100644 --- a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java +++ b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java @@ -2,16 +2,7 @@ package com.jhinno.sdk.openapi.test; import com.jhinno.sdk.openapi.AuthType; import com.jhinno.sdk.openapi.JHApiExecutionManage; -import com.jhinno.sdk.openapi.api.app.JHAppApiExecution; -import com.jhinno.sdk.openapi.api.data.JHDataApiExecution; -import com.jhinno.sdk.openapi.api.file.JHFileApiExecution; -import com.jhinno.sdk.openapi.api.job.JHJobApiExecution; -import com.jhinno.sdk.openapi.api.organization.JHDepartmentApiExecution; -import com.jhinno.sdk.openapi.api.organization.JHUserApiExecution; -import com.jhinno.sdk.openapi.client.JHApiClient; - -import java.util.HashMap; -import java.util.Map; +import com.jhinno.sdk.openapi.JHApiRequestHandler; /** * SDK Client 的配置 @@ -21,18 +12,26 @@ import java.util.Map; */ public class JHClientConfig { + public static final JHApiRequestHandler REQUEST_HANDLER = new JHApiRequestHandler() { + @Override + public String getCurrentUserName() { + return "yanlongqi"; + } + }; + + public static final String APPFORM_SERVER_URL = "https://172.20.0.200"; + public static final String ACCESS_KEY = "8147c7470bfd4a27952fe750c6bc7cef"; + public static final String ACCESS_KEY_SECRET = "899b13f590394c3daafc6468fed4b1df"; + + /** * 创建一个API执行器管理器 */ - public static final JHApiExecutionManage API_EXECUTRON_MANAGE = new JHApiExecutionManage( - "https://172.20.0.200"); + public static final JHApiExecutionManage API_EXECUTION_MANAGE = new JHApiExecutionManage(APPFORM_SERVER_URL, REQUEST_HANDLER); - public static final String ACCESS_KEY = "8147c7470bfd4a27952fe750c6bc7cef"; - - public static final String ACCESS_KEY_SECRET = "899b13f590394c3daafc6468fed4b1df"; static { - API_EXECUTRON_MANAGE.configureApiExecution(t -> { + API_EXECUTION_MANAGE.configureApiExecution(t -> { // 默认为使用Token模式,如何使用的Token模式,则不需要配置ACCESS_KEY和ACCESS_KEY SECRET t.setAuthType(AuthType.ACCESS_SECRET_MODE); t.setAccessKey(ACCESS_KEY); diff --git a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java index 1c6ed14..6c34896 100644 --- a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java +++ b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java @@ -19,7 +19,7 @@ public class AppApiTest { /** * 获得一个调用应用接口的执行器 */ - public static final JHAppApiExecution jhAppApiExecution = JHClientConfig.API_EXECUTRON_MANAGE + public static final JHAppApiExecution jhAppApiExecution = JHClientConfig.API_EXECUTION_MANAGE .getApiExecution(JHAppApiExecution.class); /** @@ -29,7 +29,7 @@ public class AppApiTest { public void testStartApp() { AppStartRequest appStartRequest = new AppStartRequest(); appStartRequest.setStartNew(true); - AppStartedInfo appStartedInfo = jhAppApiExecution.desktopStart("jhadmin", "linux_desktop", appStartRequest); + AppStartedInfo appStartedInfo = jhAppApiExecution.desktopStart(null, "linux_desktop", appStartRequest); System.out.println("会话ID:" + appStartedInfo.getDesktopId()); System.out.println("JhAppURL:" + appStartedInfo.getJhappUrl()); System.out.println("WebURL:" + appStartedInfo.getWebSessionUrl()); diff --git a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java index 7905b29..aa34824 100644 --- a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java +++ b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java @@ -14,7 +14,7 @@ import java.util.Arrays; */ public class DataApiTest { - public static final JHDataApiExecution execution =JHClientConfig.API_EXECUTRON_MANAGE + public static final JHDataApiExecution execution =JHClientConfig.API_EXECUTION_MANAGE .getApiExecution(JHDataApiExecution.class); /** diff --git a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/file/FileApiTest.java b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/file/FileApiTest.java index 339e303..5f6ded8 100644 --- a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/file/FileApiTest.java +++ b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/file/FileApiTest.java @@ -20,7 +20,7 @@ import java.util.List; */ public class FileApiTest { - private static final JHFileApiExecution execution = JHClientConfig.API_EXECUTRON_MANAGE + private static final JHFileApiExecution execution = JHClientConfig.API_EXECUTION_MANAGE .getApiExecution(JHFileApiExecution.class); /** diff --git a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/job/JobApiTest.java b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/job/JobApiTest.java index 69828f2..9fb2d70 100644 --- a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/job/JobApiTest.java +++ b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/job/JobApiTest.java @@ -17,7 +17,7 @@ import java.util.Map; */ public class JobApiTest { - private static final JHJobApiExecution execution = JHClientConfig.API_EXECUTRON_MANAGE + private static final JHJobApiExecution execution = JHClientConfig.API_EXECUTION_MANAGE .getApiExecution(JHJobApiExecution.class); /** diff --git a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/DepartmentApiTest.java b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/DepartmentApiTest.java index abb1ec5..e6b60f8 100644 --- a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/DepartmentApiTest.java +++ b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/DepartmentApiTest.java @@ -13,7 +13,7 @@ import org.junit.Test; */ public class DepartmentApiTest { - private static final JHDepartmentApiExecution execution = JHClientConfig.API_EXECUTRON_MANAGE + private static final JHDepartmentApiExecution execution = JHClientConfig.API_EXECUTION_MANAGE .getApiExecution(JHDepartmentApiExecution.class); diff --git a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/UserApiTest.java b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/UserApiTest.java index 00b48d6..808b33d 100644 --- a/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/UserApiTest.java +++ b/jhinno-openapi-java-sdk/src/test/java/com/jhinno/sdk/openapi/test/organization/UserApiTest.java @@ -15,7 +15,7 @@ import org.junit.Test; */ public class UserApiTest { - private static final JHUserApiExecution execution = JHClientConfig.API_EXECUTRON_MANAGE + private static final JHUserApiExecution execution = JHClientConfig.API_EXECUTION_MANAGE .getApiExecution(JHUserApiExecution.class); diff --git a/jhinno-openapi-sdk-spring-boot-example/pom.xml b/jhinno-openapi-sdk-spring-boot-example/pom.xml index 7b93de8..9c24fa2 100644 --- a/jhinno-openapi-sdk-spring-boot-example/pom.xml +++ b/jhinno-openapi-sdk-spring-boot-example/pom.xml @@ -5,7 +5,7 @@ 4.0.0 cim.jhinno jhinno-openapi-sdk-spring-boot-example - 2.0.5 + 2.0.6 jar Jhinno OpenAPI SDK for Java SpringBoot Example The Jhinno OpenAPI SDK for Java used for accessing Jhinno OpenApi Service @@ -22,7 +22,7 @@ com.jhinno jhinno-openapi-sdk-spring-boot-starter - 2.0.5 + 2.0.6 diff --git a/jhinno-openapi-sdk-spring-boot-example/src/main/java/com/jhinno/sdk/openapi/example/ApiConfig.java b/jhinno-openapi-sdk-spring-boot-example/src/main/java/com/jhinno/sdk/openapi/example/ApiConfig.java new file mode 100644 index 0000000..c56d6a9 --- /dev/null +++ b/jhinno-openapi-sdk-spring-boot-example/src/main/java/com/jhinno/sdk/openapi/example/ApiConfig.java @@ -0,0 +1,13 @@ +package com.jhinno.sdk.openapi.example; + +import com.jhinno.sdk.openapi.JHApiRequestHandler; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ApiConfig implements JHApiRequestHandler { + + @Override + public String getCurrentUserName() { + return "yanlongqi"; + } +} diff --git a/jhinno-openapi-sdk-spring-boot-example/src/main/resources/application.yml b/jhinno-openapi-sdk-spring-boot-example/src/main/resources/application.yml index 3742e3a..3ea2182 100644 --- a/jhinno-openapi-sdk-spring-boot-example/src/main/resources/application.yml +++ b/jhinno-openapi-sdk-spring-boot-example/src/main/resources/application.yml @@ -1,6 +1,6 @@ jhinno: openapi: - server-url: https://192.168.0.22 - auth-type: token_mode - access-key: 3f03747f147942bd8debd81b6c9c6a80 - access-key-secret: e0681859b91c499eb1d2c8e09cea3242 \ No newline at end of file + server-url: https://172.20.0.200 + auth-type: access_secret_mode + access-key: 8147c7470bfd4a27952fe750c6bc7cef + access-key-secret: 899b13f590394c3daafc6468fed4b1df \ No newline at end of file diff --git a/jhinno-openapi-sdk-spring-boot-example/src/test/java/com/jhinno/sdk/openapi/example/test/extend/JHFileApiExtendTest.java b/jhinno-openapi-sdk-spring-boot-example/src/test/java/com/jhinno/sdk/openapi/example/test/extend/JHFileApiExtendTest.java index e7d1eae..8d8a2fb 100644 --- a/jhinno-openapi-sdk-spring-boot-example/src/test/java/com/jhinno/sdk/openapi/example/test/extend/JHFileApiExtendTest.java +++ b/jhinno-openapi-sdk-spring-boot-example/src/test/java/com/jhinno/sdk/openapi/example/test/extend/JHFileApiExtendTest.java @@ -1,7 +1,9 @@ package com.jhinno.sdk.openapi.example.test.extend; +import com.jhinno.sdk.openapi.api.app.AppStartedInfo; import com.jhinno.sdk.openapi.example.api.extend.FileSystemType; import com.jhinno.sdk.openapi.example.api.extend.JHFileApiExtendExecution; +import com.jhinno.sdk.openapi.utils.JsonUtil; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -24,6 +26,7 @@ public class JHFileApiExtendTest { @Test void testStartApp() { - jhAppApiExecution.desktopStart("jhadmin","linux_desktop"); + AppStartedInfo linuxDesktop = jhAppApiExecution.desktopStart(null, "linux_desktop"); + System.out.println(JsonUtil.objectToString(linuxDesktop)); } } diff --git a/jhinno-openapi-sdk-spring-boot-starter/pom.xml b/jhinno-openapi-sdk-spring-boot-starter/pom.xml index 0e62b44..7b32b47 100644 --- a/jhinno-openapi-sdk-spring-boot-starter/pom.xml +++ b/jhinno-openapi-sdk-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ 4.0.0 jhinno-openapi-sdk-spring-boot-starter - 2.0.5 + 2.0.6 jar Jhinno OpenAPI SDK for Java SpringBoot Starter The Jhinno OpenAPI SDK for Java used for accessing Jhinno OpenApi Service @@ -21,7 +21,7 @@ com.jhinno jhinno-openapi-java-sdk - 2.0.5 + 2.0.6 diff --git a/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiClientAutoConfigure.java b/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiClientAutoConfigure.java index b029f2b..3bc24f5 100644 --- a/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiClientAutoConfigure.java +++ b/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiClientAutoConfigure.java @@ -1,5 +1,6 @@ package com.jhinno.sdk.openapi.autoconfigure; +import com.jhinno.sdk.openapi.JHApiRequestHandler; import com.jhinno.sdk.openapi.api.JHRequestExecution; import com.jhinno.sdk.openapi.client.JHApiClient; import com.jhinno.sdk.openapi.client.JHApiHttpClientImpl; @@ -30,8 +31,15 @@ public class JHOpenapiClientAutoConfigure { } @Bean - public JHRequestExecution requestExecution(JHApiClient jhApiClient, JHOpenapiProperties properties) { - JHRequestExecution requestExecution = new JHRequestExecution(jhApiClient); + @ConditionalOnMissingBean + public JHApiRequestHandler defaultRequestHandler() { + return new JHApiRequestHandler() { + }; + } + + @Bean + public JHRequestExecution requestExecution(JHApiClient jhApiClient, JHOpenapiProperties properties, JHApiRequestHandler requestHandler) { + JHRequestExecution requestExecution = new JHRequestExecution(jhApiClient, requestHandler); requestExecution.setForceGetToken(properties.isForceGetToken()); requestExecution.setAuthType(properties.getAuthType()); requestExecution.setAccessKey(properties.getAccessKey()); diff --git a/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiExecutionAutoconfigure.java b/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiExecutionAutoconfigure.java index 80b36a3..cc26ff9 100644 --- a/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiExecutionAutoconfigure.java +++ b/jhinno-openapi-sdk-spring-boot-starter/src/main/java/com/jhinno/sdk/openapi/autoconfigure/JHOpenapiExecutionAutoconfigure.java @@ -1,6 +1,6 @@ package com.jhinno.sdk.openapi.autoconfigure; -import com.jhinno.sdk.openapi.JHApiExecution; +import com.jhinno.sdk.openapi.JHApiExecutionAbstract; import com.jhinno.sdk.openapi.api.JHRequestExecution; import com.jhinno.sdk.openapi.api.app.JHAppApiExecution; import com.jhinno.sdk.openapi.api.data.JHDataApiExecution; @@ -9,11 +9,14 @@ import com.jhinno.sdk.openapi.api.job.JHJobApiExecution; import com.jhinno.sdk.openapi.api.organization.JHDepartmentApiExecution; import com.jhinno.sdk.openapi.api.organization.JHUserApiExecution; import lombok.RequiredArgsConstructor; - import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.Arrays; +import java.util.List; + /** * openapi执行器自动配置 * @@ -26,39 +29,46 @@ public class JHOpenapiExecutionAutoconfigure implements BeanPostProcessor { private final JHRequestExecution jhRequestExecution; + @Override public Object postProcessBeforeInitialization(Object bean, String beanName) { - if (bean instanceof JHApiExecution) { - ((JHApiExecution) bean).init(jhRequestExecution); + if (bean instanceof JHApiExecutionAbstract) { + ((JHApiExecutionAbstract) bean).setExecution(jhRequestExecution); } return bean; } @Bean + @ConditionalOnMissingBean public JHAppApiExecution appApiExecution() { return new JHAppApiExecution(); } @Bean + @ConditionalOnMissingBean public JHDataApiExecution dataApiExecution() { return new JHDataApiExecution(); } @Bean + @ConditionalOnMissingBean public JHFileApiExecution fileApiExecution() { return new JHFileApiExecution(); } @Bean + @ConditionalOnMissingBean public JHJobApiExecution jobApiExecution() { return new JHJobApiExecution(); } @Bean + @ConditionalOnMissingBean public JHDepartmentApiExecution departmentApiExecution() { return new JHDepartmentApiExecution(); } @Bean + @ConditionalOnMissingBean public JHUserApiExecution userApiExecution() { return new JHUserApiExecution(); }