From 2922450072797bb7bb5fed587ca258c028f693c2 Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Fri, 15 Jun 2018 14:43:23 +0000
Subject: [PATCH] [erp5_gadget_interface_validator] Remove not needed defer

---
 .../web_page_module/gadget_interface_js.js    | 206 ++++++------------
 1 file changed, 68 insertions(+), 138 deletions(-)

diff --git a/bt5/erp5_gadget_interface_validator/PathTemplateItem/web_page_module/gadget_interface_js.js b/bt5/erp5_gadget_interface_validator/PathTemplateItem/web_page_module/gadget_interface_js.js
index 449c4667eb..2413cd15c1 100644
--- a/bt5/erp5_gadget_interface_validator/PathTemplateItem/web_page_module/gadget_interface_js.js
+++ b/bt5/erp5_gadget_interface_validator/PathTemplateItem/web_page_module/gadget_interface_js.js
@@ -85,17 +85,12 @@
   }
 
   function fetchAppcacheData(appcache_url) {
-    var defer = RSVP.defer();
     return new RSVP.Queue()
       .push(function () {
         return ajax(appcache_url);
       })
       .push(function (xhr) {
-        var filename_list = xhr.responseText.split('\n');
-        return filename_list;
-      }, function (error) {
-        defer.reject(error);
-        return defer.promise;
+        return xhr.responseText.split('\n');
       });
   }
 
@@ -136,7 +131,6 @@
   }
 
   function getInterfaceListFromURL(gadget_url) {
-    var defer = RSVP.defer();
     return new RSVP.Queue()
       .push(function () {
         return ajax(gadget_url);
@@ -165,16 +159,14 @@
       }, function (error) {
         var message = "Error with loading the gadget data.\n";
         error.message = message + generateErrorMessage(error);
-        defer.reject(error);
-        return defer.promise;
+        throw error;
       });
   }
 
   function verifyInterfaceDefinition(interface_url) {
     //to verify if interface definition follows the correct template.
     var error_message = "Interface definition is incorrect: " +
-                        "One or more required tags are missing.",
-      defer = RSVP.defer();
+                        "One or more required tags are missing.";
     return new RSVP.Queue()
       .push(function () {
         return ajax(interface_url);
@@ -192,66 +184,52 @@
         if (dl_list[0].childElementCount !== 3 * method_len) {
           throw new Error(error_message);
         }
-        try {
-          for (i = 0; i < method_len; i += 1) {
-            if ((next_element === null) ||
-                (next_element.localName.toLowerCase() !== 'dt')) {
-              throw new Error(error_message);
-            }
-            next_element = next_element.nextElementSibling;
-            if (next_element.localName.toLowerCase() !== 'dd') {
-              throw new Error(error_message);
-            }
-            next_element = next_element.nextElementSibling;
-            if (next_element.localName.toLowerCase() !== 'dl') {
-              throw new Error(error_message);
-            }
+        for (i = 0; i < method_len; i += 1) {
+          if ((next_element === null) ||
+              (next_element.localName.toLowerCase() !== 'dt')) {
+            throw new Error(error_message);
+          }
+          next_element = next_element.nextElementSibling;
+          if (next_element.localName.toLowerCase() !== 'dd') {
+            throw new Error(error_message);
+          }
+          next_element = next_element.nextElementSibling;
+          if (next_element.localName.toLowerCase() !== 'dl') {
+            throw new Error(error_message);
+          }
 
-            if (next_element.getElementsByTagName('dt').length !==
-                next_element.getElementsByTagName('dd').length) {
+          if (next_element.getElementsByTagName('dt').length !==
+              next_element.getElementsByTagName('dd').length) {
+            throw new Error(error_message);
+          }
+          argument_len = next_element.getElementsByTagName('dt').length;
+          next_child_element = next_element.firstElementChild;
+          for (j = 0; j < argument_len; j += 1) {
+            if ((next_child_element === null) ||
+                (next_child_element.localName.toLowerCase() !== 'dt')) {
               throw new Error(error_message);
             }
-            argument_len = next_element.getElementsByTagName('dt').length;
-            next_child_element = next_element.firstElementChild;
-            for (j = 0; j < argument_len; j += 1) {
-              if ((next_child_element === null) ||
-                  (next_child_element.localName.toLowerCase() !== 'dt')) {
-                throw new Error(error_message);
-              }
-              next_child_element = next_child_element.nextElementSibling;
-              if (next_child_element.localName.toLowerCase() !== 'dd') {
-                throw new Error(error_message);
-              }
-              next_child_element = next_child_element.nextElementSibling;
+            next_child_element = next_child_element.nextElementSibling;
+            if (next_child_element.localName.toLowerCase() !== 'dd') {
+              throw new Error(error_message);
             }
-            next_element = next_element.nextElementSibling;
+            next_child_element = next_child_element.nextElementSibling;
           }
-          defer.resolve("Success");
-        } catch (error) {
-          defer.reject(error);
+          next_element = next_element.nextElementSibling;
         }
-        return defer.promise;
       }, function (error) {
         var message = "Error with loading the interface data.\n";
         error.message = message + generateErrorMessage(error);
-        defer.reject(error);
-        return defer.promise;
+        throw error;
       });
   }
 
   function verifyInterfaceDeclaration(interface_url, declared_interface_list) {
     //to verify if gadget declares the interface.
-    var defer = RSVP.defer();
-    try {
-      if (declared_interface_list.indexOf(interface_url) > -1) {
-        defer.resolve("Success");
-      } else {
-        throw new Error("Interface is not declared.");
-      }
-    } catch (error) {
-      defer.reject(error);
+    if (declared_interface_list.indexOf(interface_url) > -1) {
+      return "Success";
     }
-    return defer.promise;
+    throw new Error("Interface is not declared.");
   }
 
 /*
@@ -320,8 +298,7 @@
 
   function verifyAllMethodDeclared(interface_method_list, gadget_method_list) {
     //to verify if all the interface methods are declared by the gadget.
-    var defer = RSVP.defer(),
-      gadget_method_name_list = gadget_method_list,
+    var gadget_method_name_list = gadget_method_list,
       interface_method_name_list = [],
       i,
       j,
@@ -331,38 +308,32 @@
     for (i = 0; i < interface_method_list.length; i += 1) {
       interface_method_name_list.push(interface_method_list[i].name);
     }
-    try {
-      for (j = 0; j < interface_method_name_list.length; j += 1) {
-        if (gadget_method_name_list.indexOf(
-            interface_method_name_list[j]
-          ) < 0) {
-          failed = true;
-          failed_methods.push(interface_method_name_list[j]);
-        }
+    for (j = 0; j < interface_method_name_list.length; j += 1) {
+      if (gadget_method_name_list.indexOf(
+          interface_method_name_list[j]
+        ) < 0) {
+        failed = true;
+        failed_methods.push(interface_method_name_list[j]);
       }
-      if (failed) {
-        error_message =
-            "Following required methods are not declared in the gadget: ";
-        for (i = 0; i < failed_methods.length; i += 1) {
-          error_message += ("\n" + failed_methods[i]);
-        }
-        throw new Error(error_message);
+    }
+    if (failed) {
+      error_message =
+          "Following required methods are not declared in the gadget: ";
+      for (i = 0; i < failed_methods.length; i += 1) {
+        error_message += ("\n" + failed_methods[i]);
       }
-      defer.resolve("Success");
-    } catch (error) {
-      defer.reject(error);
+      throw new Error(error_message);
     }
-    return defer.promise;
+    return "Success";
   }
 
   function verifyAllMethod(interface_method_list, gadget_method_list) {
     //to verify all methods of gadget and interface.
-    var defer = RSVP.defer();
     return new RSVP.Queue()
       .push(function () {
         return verifyAllMethodDeclared(interface_method_list,
                                        gadget_method_list[0]);
-      })
+      });
 /*    Commented till figure out the way to fetch the argument length of a
       defined function.
       .push(function() {
@@ -370,54 +341,29 @@
                                         gadget_method_list[1]);
       })
 */
-      .push(function () {
-        defer.resolve("Success");
-        return defer.promise;
-      }, function (error) {
-        defer.reject(error);
-        return defer.promise;
-      });
   }
 
   rJS(window)
-    .ready(function (g) {
-      g.props = {};
-    })
 
     .declareMethod("getVerifyGadget", function (gadget_url) {
-      var interface_gadget = this,
-        defer = RSVP.defer();
-      return new RSVP.Queue()
-        .push(function () {
-          return interface_gadget.declareGadget(gadget_url, {
-            scope: gadget_url
-          });
-        })
+      var interface_gadget = this;
+      return interface_gadget.declareGadget(gadget_url, {
+        scope: gadget_url
+      })
         .push(function () {
           return interface_gadget.getDeclaredGadget(gadget_url);
         }, function (error) {
           var message = "Error with loading the gadget.\n";
           error.message = message + error.message;
-          defer.reject(error);
-          return defer.promise;
+          throw error;
         });
     })
 
     .declareMethod("getDeclaredGadgetInterfaceList", function (gadget_data) {
-      var defer = RSVP.defer();
-      return new RSVP.Queue()
-        .push(function () {
-          if (gadget_data.constructor === String) {
-            return getInterfaceListFromURL(gadget_data);
-          }
-          return gadget_data.getInterfaceList();
-        })
-        .push(function (interface_list) {
-          return interface_list;
-        }, function (error) {
-          defer.reject(error);
-          return defer.promise;
-        });
+      if (gadget_data.constructor === String) {
+        return getInterfaceListFromURL(gadget_data);
+      }
+      return gadget_data.getInterfaceList();
     })
 
     .declareMethod("getDeclaredGadgetMethodList", function (gadget) {
@@ -443,27 +389,17 @@
     })
 
     .declareMethod("getGadgetListFromAppcache", function (appcache_url) {
-      var defer = RSVP.defer();
       return new RSVP.Queue()
         .push(function () {
           return fetchAppcacheData(appcache_url);
         })
         .push(function (filename_list) {
           return filterGadgetList(filename_list);
-        })
-        .push(function (filtered_gadget_list) {
-          return filtered_gadget_list;
-        }, function (error) {
-          defer.reject(error);
-          return defer.promise;
         });
     })
 
     .declareMethod("getAbsoluteURL", function (gadget, url) {
-      return new RSVP.Queue()
-        .push(function () {
-          return gadget.getPath();
-        })
+      return gadget.getPath()
         .push(function (base_url) {
           return rJS.getAbsoluteURL(url, base_url);
         });
@@ -474,8 +410,7 @@
           name: "",
           description: "",
           method_list: []
-        },
-        defer = RSVP.defer();
+        };
       return new RSVP.Queue()
         .push(function () {
           return ajax(interface_url);
@@ -483,9 +418,9 @@
         .push(function (xhr) {
           var doc = (new DOMParser()).parseFromString(xhr.responseText,
                                                       'text/html').body,
-            dl_list = doc.getElementsByTagName('dl'),
-            dt_list = doc.getElementsByTagName('dt'),
-            dd_list = doc.getElementsByTagName('dd'),
+            dl_list = doc.querySelectorAll('dl'),
+            dt_list = doc.querySelectorAll('dt'),
+            dd_list = doc.querySelectorAll('dd'),
             method_len = dl_list.length - 1,
             dt_count = 0,
             dl_count = 1,
@@ -494,16 +429,16 @@
             argument_len,
             j,
             argument_item;
-          interface_data.name = doc.getElementsByTagName('h1')[0].innerHTML;
+          interface_data.name = doc.querySelector('h1').innerHTML;
           interface_data.description =
-            doc.getElementsByTagName('h3')[0].innerHTML;
+            doc.querySelector('h3').innerHTML;
           for (i = 0; i < method_len; i += 1) {
             method = {
               name: dt_list[dt_count].innerHTML,
               description: dd_list[dt_count].innerHTML,
               argument_list: []
             };
-            argument_len = dl_list[dl_count].getElementsByTagName('dt')
+            argument_len = dl_list[dl_count].querySelectorAll('dt')
                                             .length;
             dt_count += 1;
             dl_count += 1;
@@ -524,19 +459,14 @@
         }, function (error) {
           var message = "Error with loading the interface data.\n";
           error.message = message + generateErrorMessage(error);
-          defer.reject(error);
-          return defer.promise;
+          throw error;
         });
     })
 
     .declareMethod("getDefinedInterfaceMethodList", function (interface_url) {
-      var defer = RSVP.defer();
       return this.getInterfaceData(interface_url)
         .push(function (interface_data) {
           return interface_data.method_list;
-        }, function (error) {
-          defer.reject(error);
-          return defer.promise;
         });
     })
 
-- 
2.30.9