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()) {

Reply via email to