ICEfaces
  1. ICEfaces
  2. ICE-7417

MyFaces 2: ACE comp-suite example fails to find bridge.js and icepush.js resources if unique URLs are used

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.1-Beta2
    • Fix Version/s: 3.0.RC2, 3.0
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEfaces 2 MyFaces ACE
    • Assignee Priority:
      P2
    • Workaround Exists:
      Yes
    • Workaround Description:
      Hide
      Compile ace with -Dmyfaces="true" and then add the following context parameter to the web.xml:


         <context-param>
              <param-name>org.icefaces.uniqueResourceURLs</param-name>
              <param-value>false</param-value>
          </context-param>
      Show
      Compile ace with -Dmyfaces="true" and then add the following context parameter to the web.xml:    <context-param>         <param-name>org.icefaces.uniqueResourceURLs</param-name>         <param-value>false</param-value>     </context-param>

      Description

      Comp Suite will not run on MyFaces for the following reasons:

      The work for http://jira.icefaces.org/browse/ICE-6118 is not complete. The ace directory still needs to be compiled against MyFaces due to the generated use of implementation specific MethodRule. This is done in ComponentHandlerArtifact.java:

              //The MethodRule class is specific to the JSF implementation in use so we check to see
              //which version, Mojarra or MyFaces is available, to determine which we should be importing.
              try {
                  Class.forName("com.sun.faces.facelets.tag.MethodRule");
                  generatedComponentHandlerClass.append("import com.sun.faces.facelets.tag.MethodRule;\n\n");
                  System.out.println("Mojarra version of MethodRule found");
              } catch (ClassNotFoundException e1) {
                  try {
                      Class.forName("org.apache.myfaces.view.facelets.tag.MethodRule");
                      generatedComponentHandlerClass.append("import org.apache.myfaces.view.facelets.tag.MethodRule;\n\n");
                      System.out.println("MyFaces version of MethodRule found");
                  } catch (ClassNotFoundException e2) {
                      System.out.println("cannot find a valid (Mojarra or MyFaces) MethodRule class " + e2);
                  }
              }
              
      Once you have compiled the ACE components against MyFaces, Comp Suite fails to load these resources:

      2-Nov-2011 4:34:40 PM org.apache.myfaces.renderkit.html.HtmlScriptRenderer encodeEnd
      WARNING: Resource referenced by resourceName icepush.js?rand=1900167016 not found in call to ResourceHandler.createResource. It will be silenty ignored.
      2-Nov-2011 4:34:40 PM org.apache.myfaces.renderkit.html.HtmlScriptRenderer encodeEnd
      WARNING: Resource referenced by resourceName bridge.js?rand=1900167016 not found in call to ResourceHandler.createResource. It will be silenty ignored.

      unless you specify:

         <context-param>
              <param-name>org.icefaces.uniqueResourceURLs</param-name>
              <param-value>false</param-value>
          </context-param>

      Looks like MyFaces doesn't like the ?rand= part of the resource. For some reason, this only seems to be a problem when running the ACE comp-suite. Running something like Auction with MyFaces, there are no warnings.

        Issue Links

          Activity

            People

            • Assignee:
              Mircea Toma
              Reporter:
              Deryk Sinotte
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: