0 Replies Latest reply on Jan 22, 2016 11:57 AM by Borja Etxaburu

    Bug inTemplateUtil and GWT DOMImpl in Errai App

    Borja Etxaburu Newbie

      After hours of GWT and Errai code debugging I've found what I think it is a Bug in the code.

       

      I was trying to use ListWidget to create and paint <TR> like items... and trying to find out what fails in this kind of code, I arrived to TemplateUtil class where in the method:

       

        private static Element firstNonMetaElement(final Element parserDiv) {
          Element displayable = parserDiv.getFirstChildElement();
          while (displayable != null && displayable.getTagName().equalsIgnoreCase("meta")) {
            displayable = displayable.getNextSiblingElement();
          }
      
      
          return displayable;
        }
      
      
      

       

      We are using the Element objects "getFirstChildElement" method which has this code:

       

        /**
        * The first child of element this element. If there is no such element, this
        * returns null.
        */
        public final Element getFirstChildElement() {
          return DOMImpl.impl.getFirstChildElement(this);
        }
      
      
      

       

      And finally uses this native method:

       

        public native Element getFirstChildElement(Element elem) /*-{
          var child = elem.firstChild;
          while (child && child.nodeType != 1)
            child = child.nextSibling;
          return child;
        }-*/;
      
      
      

       

       

      What I see in this method is that the code is using firstChild which is not a Element type object... It is a Text Object.

       

      So if what I think it's true child.nodeType will never return a 1... cause never is going to be a Element type object. It will retun a 3 and will keep looking for "siblings" till child is null.

       

      This way it is not returning the firstChildElement to the TemplateUtil making it fail.

       

       

      This is a resume of what I found, I'd love someone to confirm my theory or tell me what did I undestand wrong.