Repository: incubator-weex Updated Branches: refs/heads/0.16-dev f82e311a5 -> c606a33c1
pass options into validate process Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e99a4ae4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e99a4ae4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e99a4ae4 Branch: refs/heads/0.16-dev Commit: e99a4ae4c3eb53590e70eccd0547d961ffacd4b7 Parents: 199e466 Author: å¢¨ç¬ <sanjun....@alibaba-inc.com> Authored: Thu Aug 3 20:37:22 2017 +0800 Committer: å¢¨ç¬ <sanjun....@alibaba-inc.com> Committed: Thu Aug 3 20:37:22 2017 +0800 ---------------------------------------------------------------------- .../java/com/taobao/weex/bridge/WXBridge.java | 8 +- .../com/taobao/weex/bridge/WXBridgeManager.java | 96 +++++++++++--------- .../taobao/weex/bridge/WXValidateProcessor.java | 7 +- .../java/com/taobao/weex/dom/WXDomObject.java | 12 ++- .../dom/action/AbstractAddElementAction.java | 2 +- 5 files changed, 70 insertions(+), 55 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e99a4ae4/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java index f0ccf27..f9a3ade 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java @@ -22,11 +22,11 @@ import android.text.TextUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.taobao.weex.WXEnvironment; import com.taobao.weex.WXSDKInstance; import com.taobao.weex.WXSDKManager; import com.taobao.weex.common.IWXBridge; -import com.taobao.weex.utils.WXJsonUtils; import com.taobao.weex.utils.WXLogUtils; /** @@ -202,7 +202,11 @@ class WXBridge implements IWXBridge { public Object callNativeModule(String instanceId, String module, String method, byte [] arguments, byte [] options) { JSONArray argArray = JSON.parseArray(new String(arguments)); - Object object = WXBridgeManager.getInstance().callNativeModule(instanceId,module,method,argArray,options); + JSONObject optionsObj = null; + if (options != null) { + optionsObj = JSON.parseObject(new String(options)); + } + Object object = WXBridgeManager.getInstance().callNativeModule(instanceId,module,method,argArray,optionsObj); return new WXJSObject(object); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e99a4ae4/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java index d8f2f96..cb4db93 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java @@ -114,6 +114,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { public static final String MODULE = "module"; public static final String METHOD = "method"; public static final String ARGS = "args"; + public static final String OPTIONS = "options"; private static final String NON_CALLBACK = "-1"; private static final String UNDEFINED = "undefined"; @@ -218,30 +219,37 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } - public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args) { - WXSDKInstance wxsdkInstance = WXSDKManager.getInstance() - .getSDKInstance(instanceId); - if (wxsdkInstance == null) { + public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args) { + return callModuleMethod(instanceId, moduleStr, methodStr, args, null); + } + + public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args, JSONObject options) { + WXSDKInstance wxsdkInstance = WXSDKManager.getInstance() + .getSDKInstance(instanceId); + if (wxsdkInstance == null) { + return null; + } + + if (wxsdkInstance.isNeedValidate() + && WXSDKManager.getInstance().getValidateProcessor() != null) { + WXValidateProcessor.WXModuleValidateResult validateResult = WXSDKManager + .getInstance().getValidateProcessor() + .onModuleValidate(wxsdkInstance, moduleStr, methodStr, args, options); + if (validateResult == null) { return null; } - if (wxsdkInstance.isNeedValidate() - && WXSDKManager.getInstance().getValidateProcessor() != null) { - WXValidateProcessor.WXModuleValidateResult validateResult = WXSDKManager - .getInstance().getValidateProcessor() - .onModuleValidate(wxsdkInstance, moduleStr, methodStr, args); - if (validateResult == null) { - return null; - } - if (validateResult.isSuccess) { - return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, - args); - } else { - JSONObject validateInfo = validateResult.validateInfo; - WXLogUtils.e("[WXBridgeManager] module validate fail. >>> " + validateInfo.toJSONString()); - return validateInfo; - } + if (validateResult.isSuccess) { + return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, + args); + } else { + JSONObject validateInfo = validateResult.validateInfo; + if (validateInfo != null) { + WXLogUtils.e("[WXBridgeManager] module validate fail. >>> " + validateInfo.toJSONString()); + } + return validateInfo; } - return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, args); + } + return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, args); } /** @@ -321,30 +329,27 @@ public class WXBridgeManager implements Callback,BactchExecutor { mJSHandler.removeMessages(what, obj); } - public Object callNativeModule(String instanceId, String module, String method, JSONArray arguments, Object options) { - - if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId) - .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); - } - - try { - if(WXDomModule.WXDOM.equals(module)){ - WXDomModule dom = getDomModule(instanceId); - return dom.callDomMethod(method,arguments); - }else { - return callModuleMethod(instanceId, module, - method, arguments); - } - } catch (Exception e) { - WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); - } - - return null; + public Object callNativeModule(String instanceId, String module,String method, JSONArray arguments, JSONObject options) { + if (WXEnvironment.isApkDebugable()) { + mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId) + .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); + } + try { + if(WXDomModule.WXDOM.equals(module)){ + WXDomModule dom = getDomModule(instanceId); + return dom.callDomMethod(method,arguments); + }else { + return callModuleMethod(instanceId, module, + method, arguments, options); + } + } catch (Exception e) { + WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); } + return null; + } public Object callNativeComponent(String instanceId, String componentRef, String method, JSONArray arguments, Object options) { if (WXEnvironment.isApkDebugable()) { @@ -413,8 +418,9 @@ public class WXBridgeManager implements Callback,BactchExecutor { WXDomModule dom = getDomModule(instanceId); dom.callDomMethod(task); }else { + JSONObject optionObj = task.getJSONObject(OPTIONS); callModuleMethod(instanceId, (String) target, - (String) task.get(METHOD), (JSONArray) task.get(ARGS)); + (String) task.get(METHOD), (JSONArray) task.get(ARGS), optionObj); } }else if(task.get(COMPONENT) != null){ //call component http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e99a4ae4/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java index 9a8a0a8..d657fae 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java @@ -21,6 +21,7 @@ package com.taobao.weex.bridge; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.taobao.weex.WXSDKInstance; +import com.taobao.weex.dom.WXDomObject; /** * Created by fengjunjie @@ -28,10 +29,12 @@ import com.taobao.weex.WXSDKInstance; public interface WXValidateProcessor { WXModuleValidateResult onModuleValidate(WXSDKInstance wxsdkInstance, String moduleStr, - String methodStr, JSONArray params); + String methodStr, JSONArray params, + JSONObject options); WXComponentValidateResult onComponentValidate(WXSDKInstance wxsdkInstance, - String componentName); + String componentName, + WXDomObject parentDomObject); boolean needValidate(String bundleUrl); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e99a4ae4/android/sdk/src/main/java/com/taobao/weex/dom/WXDomObject.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXDomObject.java b/android/sdk/src/main/java/com/taobao/weex/dom/WXDomObject.java index 641c95a..983b500 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/WXDomObject.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXDomObject.java @@ -627,7 +627,7 @@ public class WXDomObject extends CSSNode implements Cloneable,ImmutableDomObject * @param json the original JSONObject * @return Dom Object corresponding to the JSONObject. */ - public static @Nullable WXDomObject parse(JSONObject json, WXSDKInstance wxsdkInstance){ + public static @Nullable WXDomObject parse(JSONObject json, WXSDKInstance wxsdkInstance, WXDomObject parentDomObject){ if (json == null || json.size() <= 0) { return null; } @@ -639,15 +639,17 @@ public class WXDomObject extends CSSNode implements Cloneable,ImmutableDomObject .getValidateProcessor(); if (processor != null) { WXValidateProcessor.WXComponentValidateResult result = processor - .onComponentValidate(wxsdkInstance, type); + .onComponentValidate(wxsdkInstance, type, parentDomObject); if (result != null && !result.isSuccess) { type = TextUtils.isEmpty(result.replacedComponent) ? WXBasicComponentType.DIV : result.replacedComponent; json.put(TYPE, type); - if(WXEnvironment.isApkDebugable()&&result.validateInfo!=null){ - String tag = "[WXDomObject]onComponentValidate failure. >>> "+result.validateInfo.toJSONString(); + if (WXEnvironment.isApkDebugable() && result.validateInfo != null) { + String tag = "[WXDomObject]onComponentValidate failure. >>> " + result.validateInfo.toJSONString(); WXLogUtils.e(tag); } + } else if (result == null){ + return null; } } } @@ -667,7 +669,7 @@ public class WXDomObject extends CSSNode implements Cloneable,ImmutableDomObject JSONArray childrenArray = (JSONArray) children; int count = childrenArray.size(); for (int i = 0; i < count; ++i) { - domObject.add(parse(childrenArray.getJSONObject(i),wxsdkInstance),-1); + domObject.add(parse(childrenArray.getJSONObject(i),wxsdkInstance, domObject),-1); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e99a4ae4/android/sdk/src/main/java/com/taobao/weex/dom/action/AbstractAddElementAction.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/action/AbstractAddElementAction.java b/android/sdk/src/main/java/com/taobao/weex/dom/action/AbstractAddElementAction.java index fa017cb..eafa552 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/action/AbstractAddElementAction.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/action/AbstractAddElementAction.java @@ -80,7 +80,7 @@ abstract class AbstractAddElementAction implements DOMAction, RenderAction { } //only non-root has parent. - WXDomObject domObject = WXDomObject.parse(dom, instance); + WXDomObject domObject = WXDomObject.parse(dom, instance, null); if (domObject == null || context.getDomByRef(domObject.getRef()) != null) { if (WXEnvironment.isApkDebugable()) {