ICEfaces
  1. ICEfaces
  2. ICE-5759

ICEfaces 2.0 compressDOM support

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-Alpha2
    • Fix Version/s: 2.0-Beta1, 2.0.0
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEfaces, Google App Engine
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Compatibility/Configuration

      Description

      The FastInfoset compressDOM feature appears necessary to address Classloader bugs in Google App Engine. Additionally it is useful for reducing the memory use of general ICEfaces applications.

        Activity

        Hide
        Ted Goddard added a comment -

        FastInfoset is already using namespaceAware APIs, the difficulty arises from the very strict behavior of Document.createAttributeNS():

        NAMESPACE_ERR: Raised if the qualifiedName is a malformed qualified name, if the qualifiedName has a prefix and the namespaceURI is null, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace", if the qualifiedName or its prefix is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/", or if the namespaceURI is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName nor its prefix is "xmlns".

        It could be argued that not passing "http://www.w3.org/2000/xmlns/" for the namespaceURI for "xmlns" is a bug in the FastInfoset implementation, but this is not the only case where namespaces might be used without following the rules strictly. The solution is to disable error checking during FastInfoset compression (which will also improve performance). If strict DOM correctness is desired, this can be added as a later feature that specifically enables error checking.

        Show
        Ted Goddard added a comment - FastInfoset is already using namespaceAware APIs, the difficulty arises from the very strict behavior of Document.createAttributeNS(): NAMESPACE_ERR: Raised if the qualifiedName is a malformed qualified name, if the qualifiedName has a prefix and the namespaceURI is null, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace ", if the qualifiedName or its prefix is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/", or if the namespaceURI is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName nor its prefix is "xmlns". It could be argued that not passing "http://www.w3.org/2000/xmlns/" for the namespaceURI for "xmlns" is a bug in the FastInfoset implementation, but this is not the only case where namespaces might be used without following the rules strictly. The solution is to disable error checking during FastInfoset compression (which will also improve performance). If strict DOM correctness is desired, this can be added as a later feature that specifically enables error checking.
        Hide
        Mandeep Hayher added a comment -

        Server:Tomcat6
        Browser: FF3.6

        Compat Component-showcase: scripts ran successfully but following error was seen on the server console:

        SEVERE: Error Rendering View[/showcase.xhtml]
        java.lang.NullPointerException
        at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52)
        at org.icefaces.event.UIOutputWriter.encodeBegin(UIOutputWriter.java:32)

        Compat AuctionMonitor: test scripts ran successfully but following error seen on the server console:

        SEVERE: Error Rendering View[/auctionMonitor.xhtml]
        java.lang.NullPointerException
        at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52)

        java.lang.NullPointerException
        at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52)
        at org.icefaces.event.UIOutputWriter.encodeBegin(UIOutputWriter.java:32)

        Auction: still cannot load the application, Still seeing error on the browser:
        java.lang.NoClassDefFoundError: com/sun/xml/fastinfoset/dom/DOMDocumentSerializer

        Show
        Mandeep Hayher added a comment - Server:Tomcat6 Browser: FF3.6 Compat Component-showcase: scripts ran successfully but following error was seen on the server console: SEVERE: Error Rendering View [/showcase.xhtml] java.lang.NullPointerException at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52) at org.icefaces.event.UIOutputWriter.encodeBegin(UIOutputWriter.java:32) Compat AuctionMonitor: test scripts ran successfully but following error seen on the server console: SEVERE: Error Rendering View [/auctionMonitor.xhtml] java.lang.NullPointerException at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52) java.lang.NullPointerException at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52) at org.icefaces.event.UIOutputWriter.encodeBegin(UIOutputWriter.java:32) Auction: still cannot load the application, Still seeing error on the browser: java.lang.NoClassDefFoundError: com/sun/xml/fastinfoset/dom/DOMDocumentSerializer
        Hide
        Ted Goddard added a comment -

        auction appears to be missing FastInfoset.jar, so please ensure that the .jar is present in auction.war.

        The NullPointerException will require further investigation.

        Show
        Ted Goddard added a comment - auction appears to be missing FastInfoset.jar, so please ensure that the .jar is present in auction.war. The NullPointerException will require further investigation.
        Hide
        Mandeep Hayher added a comment -

        Glimmer revison# 21717
        Server: Tomcat6
        Browser: FF3.6

        Tested by manually placing FastInfoset.jar in lib folder.
        Auction: all pass
        Basic: all pass
        ElementUpdate: all pass
        Fajax: all pass
        Scopes: Window Scope test failes. counter is reset when user revisited the page. Rest pass.

        Show
        Mandeep Hayher added a comment - Glimmer revison# 21717 Server: Tomcat6 Browser: FF3.6 Tested by manually placing FastInfoset.jar in lib folder. Auction: all pass Basic: all pass ElementUpdate: all pass Fajax: all pass Scopes: Window Scope test failes. counter is reset when user revisited the page. Rest pass.
        Hide
        Ken Fyten added a comment -

        QA confirms that the Window Scope test issue is not related to the compressDOM setting. Fixed!

        Show
        Ken Fyten added a comment - QA confirms that the Window Scope test issue is not related to the compressDOM setting. Fixed!

          People

          • Assignee:
            Ted Goddard
            Reporter:
            Ted Goddard
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: