How to update RichFaces client-side dependencies

Version 2

    Overview

    That short article created just in order to describe problematic parts with updates of third-party dependencies used by RichFaces. Should be constantly kept in mind by all the developers who will try to perform such kind of tasks.

     

    list of client-side dependencies for different versions could be found at the RichFaces Dependencies article.

     

    The problem with updates caused by the fact that any library could have some issues (even we have ).. And being dependent on some third-party libraries means for us that we become responsible for issues which came from those libraries but affects our components. So most of the third-party scripts could contains of some custom JS added by RF team during development.

     

    RF 4 Scripts

    RF 4 according to our internal review should not contain patched scripts except jQuerySpinBtn v rf1.3a. That script can't be just "updated" because almost completelly rewritten by Pavel during development. So updating scripts there should be an easy task.

    RF 3.3 Scripts

    There is much worse situation. Almost all the base scripts contains various patches. E.g. jQuery and prototype contains positioning and some other improvements. So there is two ways for performing "safe" update:

    • Looking for the comments added in the script where we made changes. Consider all the changed methods while reviewing newer version. If the fix was already considered in library - do not re-add it while upgrade.
      • jquery contains comments like "// RF: added for RichFaces components"
      • prototype has "// RF: added by PY" like comments.
      • ...
      • The problem with that way - absence of comment in some changed place is still possible(we made our best to perform future easy updates but still possible)
    • Making diff of the newer script with old one. That way is longer but you will be 100% sure that revised all the changes and checked if them related to just RF or added by that library developers. In the same time that review could identify some problems in the library itself so it's really prefered way.

    Tips

    That section mentions some specific points related to dependencies updates.

    Gmap and VirtualEarth components

    We do not included base scripts in our sources but just adding them using simple <link> elements in renderer templates.

     

    Gmap script vesion is hardcoded and it's "2". So template should be updated to update it.

    Virtual Earth version manageable using version attribute. So could be changed even by component user.

     

    TinyMCE

     

    tinyMCE library contains two major kind of patches:

    • Resources loading mechanism updated. In pure tinyMCE all the scripts loading relativelly to  the main script (scripts/tiny_mce/tiny_mce_src.js) and it's not  compatible with our resource loading from RF components jar.
    • In order to add skinning to the editor component themes and skins are patched and added with xcss stylesheets.