zoukankan      html  css  js  c++  java
  • SAP UI5 Diagnostics工具里一个使用面向切片编程(AOP)的一个例子

    We know that UI5 framework provides a convenient Diagnostics tool for application developer to set breakpoint on a given method of control class. The Diagnostics tool could be launched via Ctrl+Alt+Shift+S.

    We can select the control and its methods where we would like to set breakpoint. Once we click “Add breakpoint” button, next time if the corresponding method is called, the breakpoint would be triggered, without application developers’ manual set in Chrome development tool any more.

    It looks like a magic? Today my colleague asked me how this feature is implemented, so I have a look at UI5 framework source code.
    We can again simply use Chrome development tool for research.

    For example I would like to set breakpoint on method _bindAggregation:

    Here the AOP idea is used.


    The hook implementation is simply returning a new function via closure within which the original method is called ( line 521 ) with the new feature injected via keyword debugger.

    After the logic is understood, we can practice in our application code.

    Suppose I would like to have my button press event handler supported by this mechanism, I can simply write the following pseudo code:

    var myButton = new sap.ui.commons.Button("btn",{
       text: "press me~"
      });
    var handler = function(oEvent){
       oController.onPress(oEvent);
    };
    handler = bDebugModeActivated? util.tool.methodHook(handler): handler;
    myButton.attachPress(handler);
    

    In the runtime, once I press the button, debugger will be triggered with the following callstack:

    Just step into line 36:

    and then our event handler could be debugged:

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    Ceph中的容量计算与管理
    Ceph Monitor基础架构与模块详解
    Ceph:pg peering过程分析
    API调用过程
    Windows内核—保护模式
    逆向笔记——C、C++对应的汇编结构(一)
    2020年内网渗透培训:红队攻防
    2020年 初级渗透工程师【Web安全方向】
    渗透测试【网络安全】入门指南【20190607】
    渗透学习问题【一】遇到坑需要停下来补吗
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/13540507.html
Copyright © 2011-2022 走看看