<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 10/6/10 11:35 AM, Leonardo Uribe wrote:
    <blockquote
      cite="mid:AANLkTikzvSqu_EmwMtnLAuwxp7higVWE9MmqVJO5PiR5@mail.gmail.com"
      type="cite">Hi<br>
      <br>
      In theory, shouldn't the vdl be responsible to indicate which
      prefix/suffix pattern is used to identify if a physical viewId
      should be handled by an specific vdl?.</blockquote>
    No.&nbsp; While the VDL may have a preferred extension, the authors
    should be free to route whatever content they want to the VDL.&nbsp; For
    example, in the particular case of running JSPX content through
    Facelets, .jspx would not be a preferred mapping for Facelets.<br>
    <br>
    -- Blake Sullivan<br>
    <br>
    <blockquote
      cite="mid:AANLkTikzvSqu_EmwMtnLAuwxp7higVWE9MmqVJO5PiR5@mail.gmail.com"
      type="cite"> In my personal opinion it is more important to define
      some methods on vdl that handle this interaction properly and
      update the spec in that direction. That's the missing part of the
      puzzle.<br>
      <br>
      See: [jsr-314-open] Should the ViewDeclarationLanguage be
      responsible to indicate if a viewId can be created?<br>
      <br>
      regards,<br>
      <br>
      Leonardo Uribe<br>
      <br>
      <div class="gmail_quote">2010/10/6 Blake Sullivan <span dir="ltr">&lt;<a
            moz-do-not-send="true"
            href="mailto:blake.sullivan@oracle.com">blake.sullivan@oracle.com</a>&gt;</span><br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <div bgcolor="#ffffff" text="#000000"> Kito,<br>
            <br>
            It isn't that these parameters are newer, it is that these
            parameters potentially need to be configurable on a per-JAR
            level and we want the JAR to ship with its configuration.<br>
            <br>
            -- Blake Sullivan<br>
            <br>
            <br>
            On 10/6/10 8:35 AM, Kito Mann wrote:
            <blockquote type="cite">This sounds fine, but I'm worried
              about introducing configuration in faces-config.xml that
              might ordinarily be in web.xml without a plan for how we
              handle existing parameters. Consistency is really
              important, especially for frameworks, and adding the
              configuration for this feature to faces-config.xml opens
              the door to having half of the configuration in
              faces-config.xml and half in web.xml with no obvious
              justification other than "these parameters are newer".&nbsp;
              <div> <br>
              </div>
              <div>So I think we should implement this as a standard
                web.xml context parameter, _or_ provide faces-config.xml
                support for all existing context parameters.<br>
                <div><br>
                </div>
                <div>---<br>
                  Kito D. Mann | twitter: kito99 | Author, JSF in Action<br>
                  Virtua, Inc. | <a moz-do-not-send="true"
                    href="http://www.virtua.com" target="_blank">http://www.virtua.com</a>
                  | JSF/Java EE training and consulting<br>
                  <a moz-do-not-send="true"
                    href="http://www.JSFCentral.com" target="_blank">http://www.JSFCentral.com</a>
                  - JavaServer Faces FAQ, news, and info | twitter:
                  jsfcentral<br>
                  +1 203-404-4848 x3<br>
                  <br>
                  Sign up for the JSFCentral newsletter: <a
                    moz-do-not-send="true"
                    href="http://oi.vresp.com/?fid=ac048d0e17"
                    target="_blank">http://oi.vresp.com/?fid=ac048d0e17</a><br>
                  <br>
                  <br>
                  <br>
                  <div class="gmail_quote">On Thu, Sep 30, 2010 at 11:22
                    PM, Edward Burns <span dir="ltr">&lt;<a
                        moz-do-not-send="true"
                        href="mailto:edward.burns@oracle.com"
                        target="_blank">edward.burns@oracle.com</a>&gt;</span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin: 0pt
                      0pt 0pt 0.8ex; border-left: 1px solid rgb(204,
                      204, 204); padding-left: 1ex;"> <br>
                      <a moz-do-not-send="true"
href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=490"
                        target="_blank">https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=490</a><br>
                      <br>
                      As a first step towards making JSPX files runable
                      as Facelets, this<br>
                      commit introduces a new configuration syntax.<br>
                      <br>
                      Andy Schwartz requested this feature.<br>
                      <br>
                      For the first time ever, we are using the
                      faces-config to specify<br>
                      context-param like configuration options. &nbsp;In this
                      case, we're<br>
                      leveraging the faces-config-extension facility.
                      &nbsp;Andy also suggested<br>
                      this config concept.<br>
                      <br>
                      The automated test for this feature has the
                      following faces-config.<br>
                      <br>
                      &lt;?xml version='1.0' encoding='UTF-8'?&gt;<br>
                      &lt;faces-config<br>
                      &nbsp;xmlns="<a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee"
                        target="_blank">http://java.sun.com/xml/ns/javaee</a>"<br>
                      &nbsp;xmlns:xsi="<a moz-do-not-send="true"
                        href="http://www.w3.org/2001/XMLSchema-instance"
                        target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"<br>
                      &nbsp;xsi:schemaLocation="<a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee"
                        target="_blank">http://java.sun.com/xml/ns/javaee</a>
                      <a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
                        target="_blank">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd</a>"<br>
                      &nbsp;version="2.0"&gt;<br>
                      <br>
                      &nbsp;&lt;faces-config-extension&gt;<br>
                      &nbsp; &nbsp;&lt;facelets-processing&gt;<br>
                      &nbsp; &nbsp;
                      &nbsp;&lt;file-extension&gt;.jspx&lt;/file-extension&gt;<br>
                      &nbsp; &nbsp; &nbsp;&lt;process-as&gt;jspx&lt;/process-as&gt;<br>
                      &nbsp; &nbsp;&lt;/facelets-processing&gt;<br>
                      &nbsp; &nbsp;&lt;facelets-processing&gt;<br>
                      &nbsp; &nbsp;
                      &nbsp;&lt;file-extension&gt;.view.xml&lt;/file-extension&gt;<br>
                      &nbsp; &nbsp; &nbsp;&lt;process-as&gt;xml&lt;/process-as&gt;<br>
                      &nbsp; &nbsp;&lt;/facelets-processing&gt;<br>
                      &nbsp;&lt;/faces-config-extension&gt;<br>
                      <br>
                      &lt;/faces-config&gt;<br>
                      <br>
                      The &lt;facelets-processing&gt; elements are new.<br>
                      <br>
                      The sample app also has these context params:<br>
                      <br>
                      &nbsp; &nbsp;&lt;context-param&gt;<br>
                      &nbsp; &nbsp; &nbsp;
                      &nbsp;&lt;param-name&gt;javax.faces.FACELETS_VIEW_MAPPINGS&lt;/param-name&gt;<br>
                      &nbsp; &nbsp; &nbsp;
                      &nbsp;&lt;param-value&gt;*.xhtml;*.view.xml;*.jspx&lt;/param-value&gt;<br>
                      &nbsp; &nbsp;&lt;/context-param&gt;<br>
                      <br>
                      &nbsp; &nbsp;&lt;context-param&gt;<br>
                      &nbsp; &nbsp; &nbsp;
                      &nbsp;&lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;<br>
                      &nbsp; &nbsp; &nbsp; &nbsp;&lt;param-value&gt;.xhtml .view.xml .jsp
                      .jspx&lt;/param-value&gt;<br>
                      &nbsp; &nbsp;&lt;/context-param&gt;<br>
                      <br>
                      PENDING(edburns): Currently this feature relies on
                      the existing<br>
                      &lt;xsd:any&gt; declaration for the children of
                      faces-config-extension. &nbsp;I<br>
                      would like to tighten this up to allow validaiton
                      but will do it after<br>
                      the 30 Sept deadline.<br>
                      <br>
                      The preceding faces-config and web.xml example
                      must cause the<br>
                      implementation to behave as follows.<br>
                      <br>
                      &nbsp;The web.xml says that jspx should be considered
                      as one of the default<br>
                      &nbsp;suffixes for JSF. &nbsp;It also says that files with a
                      .jspx extension must<br>
                      &nbsp;be treated as facelets, not JSPs.<br>
                      <br>
                      &nbsp;The faces-config.xml says that files with the
                      .jspx extension should be<br>
                      &nbsp;treated as if they are running in Facelets for
                      JSPX mode, as specified<br>
                      &nbsp;in the following table. &nbsp;It also says that files
                      ending in .view.xml<br>
                      &nbsp;must be handled as if they are running in
                      Facelets for XML mode, also<br>
                      &nbsp;specified in the table.<br>
                      <br>
                      <br>
                      &nbsp;XML construct &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; process-as mode<br>
                      &nbsp;------------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ---------------<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xhtml &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xml &nbsp; &nbsp; &nbsp;
                      &nbsp;jspx<br>
                      XML Declaration &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;passed through &nbsp;consumed
                      &nbsp; consumed<br>
                      Processing Instructions &nbsp;passed through &nbsp;consumed
                      &nbsp; consumed<br>
                      CDATA &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;passed through &nbsp;consumed
                      &nbsp; consumed<br>
                      Inline text escaping &nbsp; &nbsp; escaped &nbsp; &nbsp; &nbsp; &nbsp; escaped &nbsp;
                      &nbsp;not escaped<br>
                      Comments &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; passed through &nbsp;consumed
                      &nbsp; consumed<br>
                      <br>
                      PENDING(edburns): should the table specified above
                      be the default, even<br>
                      if no facelets-processing elements appear? &nbsp;Right
                      now, the<br>
                      facelets-processing elements must appear,
                      otherwise the legacy facelets<br>
                      format is used in all facelet cases. &nbsp;I think
                      that's correct, but I am<br>
                      open to suggestions.<br>
                      <br>
                      SECTION: Modified Files<br>
                      ----------------------------<br>
                      M &nbsp; &nbsp; &nbsp;
                      jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java<br>
                      <br>
                      - enhance this class, which previously only
                      handled web.xml style<br>
                      &nbsp;configuration, to also handle faces-config.xml
                      style<br>
                      &nbsp;configuration. The first manifestation of this is
                      the new pair of<br>
                      &nbsp;getFacesConfigOptionValue() methods, one with a
                      boolean create<br>
                      &nbsp;parameter.<br>
                      <br>
                      - To make the intent of the feature more clear, a
                      define a read-only<br>
                      &nbsp;singleton helper class, FaceletsConfiguration,
                      which is owned by the<br>
                      &nbsp;WebConfiguration.<br>
                      <br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/src/main/java/com/sun/faces/config/FaceletsConfiguration.java<br>
                      <br>
                      - A place to hang methods that allow the runtime
                      to query the facelets<br>
                      &nbsp;configuration. &nbsp;Currently this only includes
                      config options conveyed<br>
                      &nbsp;via the new
                      faces-config-extension/facelets-processing
                      elements.<br>
                      <br>
                      M
jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java<br>
                      <br>
                      - When writing inline text, use the new config
                      facility to determine if<br>
                      &nbsp;the text should be escaped or not.<br>
                      <br>
                      M
jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java<br>
                      <br>
                      - add some ivars and getters.<br>
                      <br>
                      M &nbsp; &nbsp; &nbsp;
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java<br>
                      <br>
                      - To ease migration from JSPX to facelets, allow
                      the new &lt;faces-view&gt;<br>
                      &nbsp;markup element to exist in XHTML or XML pages,
                      but make sure it gets<br>
                      &nbsp;swallowed and does not appear in the output. &nbsp;The
                      startTag() and<br>
                      &nbsp;endTag() methods were hit.<br>
                      <br>
                      M
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java<br>
                      <br>
                      - Take the correct action regarding CDATA,
                      comments,<br>
                      &nbsp;processingInstructions, and the XML declaration.<br>
                      <br>
                      M &nbsp; &nbsp; &nbsp;
                      jsf-ri/src/main/java/com/sun/faces/facelets/tag/xml/XmlLibrary.java<br>
                      <br>
                      - Clean imports<br>
                      <br>
                      M &nbsp; &nbsp; &nbsp;
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java<br>
                      <br>
                      - Add a new config processor for the
                      faces-config-extension content.<br>
                      <br>
                      M &nbsp; &nbsp; &nbsp;
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java<br>
                      M &nbsp; &nbsp; &nbsp; jsf-ri/systest-per-webapp/build.xml<br>
                      M &nbsp; &nbsp; &nbsp; jsf-ri/systest-per-webapp/build-tests.xml<br>
                      <br>
                      - new automated test<br>
                      <br>
                      A
jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java<br>
                      <br>
                      - expose xml config to runtime.<br>
                      <br>
                      A &nbsp; &nbsp; &nbsp; jsf-ri/systest-per-webapp/process-as-jspx<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/src<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces<br>
                      A
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest<br>
                      A
jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxTestCase.java<br>
                      A
jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxBean.java<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspxview.jspx<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xhtmlview.xhtml<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspview.jsp<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xmlview.view.xml<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF<br>
                      A
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/faces-config.xml<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/web.xml<br>
                      A &nbsp; &nbsp; &nbsp;
                      jsf-ri/systest-per-webapp/process-as-jspx/web/index.html<br>
                      <br>
                      - Automated test.<br>
                      <br>
                      <br>
                      SECTION: Diffs<br>
                      ----------------------------<br>
                      Index:
jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java

                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java

                      (working copy)<br>
                      @@ -55,10 +55,11 @@<br>
                      <br>
                      &nbsp;package com.sun.faces.facelets.compiler;<br>
                      <br>
                      +import
                      com.sun.faces.config.FaceletsConfiguration;<br>
                      +import javax.faces.context.FacesContext;<br>
                      +import java.io.IOException;<br>
                      &nbsp;import javax.el.ELContext;<br>
                      &nbsp;import javax.el.ExpressionFactory;<br>
                      -import javax.faces.context.FacesContext;<br>
                      -import java.io.IOException;<br>
                      <br>
                      &nbsp;final class LiteralTextInstruction implements
                      Instruction {<br>
                      &nbsp; &nbsp; private final String text;<br>
                      @@ -68,7 +69,11 @@<br>
                      &nbsp; &nbsp; }<br>
                      <br>
                      &nbsp; &nbsp; public void write(FacesContext context) throws
                      IOException {<br>
                      - &nbsp; &nbsp; &nbsp;
                      &nbsp;context.getResponseWriter().writeText(this.text,
                      null);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if
                      (FaceletsConfiguration.getInstance(context).isEscapeInlineText(context))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;context.getResponseWriter().writeText(this.text,
                      null);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;context.getResponseWriter().write(this.text);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      &nbsp; &nbsp; }<br>
                      <br>
                      &nbsp; &nbsp; public Instruction apply(ExpressionFactory
                      factory, ELContext ctx) {<br>
                      Index:
jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java

                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java

                      (working copy)<br>
                      @@ -56,6 +56,7 @@<br>
                      <br>
                      &nbsp;package com.sun.faces.facelets.compiler;<br>
                      <br>
                      +import com.sun.faces.config.WebConfiguration;<br>
                      &nbsp;import
                      com.sun.faces.facelets.tag.TagAttributesImpl;<br>
                      &nbsp;import com.sun.faces.facelets.tag.TagLibrary;<br>
                      &nbsp;import
                      com.sun.faces.facelets.tag.composite.CompositeLibrary;<br>
                      @@ -102,6 +103,8 @@<br>
                      &nbsp; &nbsp; private final String alias;<br>
                      <br>
                      &nbsp; &nbsp; private CompilationMessageHolder messageHolder
                      = null;<br>
                      +<br>
                      + &nbsp; &nbsp;private WebConfiguration config;<br>
                      <br>
                      &nbsp; &nbsp; public CompilationManager(String alias,
                      Compiler compiler) {<br>
                      <br>
                      @@ -125,6 +128,8 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; // our compilationunit stack<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; this.units = new
                      Stack&lt;CompilationUnit&gt;();<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; this.units.push(new CompilationUnit());<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;config = WebConfiguration.getInstance();<br>
                      <br>
                      &nbsp; &nbsp; }<br>
                      <br>
                      @@ -139,6 +144,14 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; return messageHolder;<br>
                      &nbsp; &nbsp; }<br>
                      +<br>
                      + &nbsp; &nbsp;public String getAlias() {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return alias;<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public WebConfiguration getWebConfiguration()
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return config;<br>
                      + &nbsp; &nbsp;}<br>
                      <br>
                      &nbsp; &nbsp; public void
                      setCompilationMessageHolder(CompilationMessageHolder
                      messageHolder) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; this.messageHolder = messageHolder;<br>
                      Index:
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java
                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java
                      (working copy)<br>
                      @@ -54,13 +54,16 @@<br>
                      <br>
                      &nbsp;package com.sun.faces.facelets.compiler;<br>
                      <br>
                      +import
                      com.sun.faces.config.FaceletsConfiguration;<br>
                      &nbsp;import com.sun.faces.facelets.el.ELText;<br>
                      <br>
                      &nbsp;import javax.el.ELException;<br>
                      &nbsp;import javax.faces.view.facelets.*;<br>
                      &nbsp;import java.util.ArrayList;<br>
                      &nbsp;import java.util.List;<br>
                      +import java.util.Map;<br>
                      &nbsp;import java.util.Stack;<br>
                      +import java.util.concurrent.ConcurrentHashMap;<br>
                      <br>
                      &nbsp;/**<br>
                      &nbsp;*<br>
                      @@ -85,6 +88,14 @@<br>
                      <br>
                      &nbsp; &nbsp; private final String id;<br>
                      <br>
                      + &nbsp; &nbsp;private final static Map&lt;String,
                      Boolean&gt; qNamesToSwallow;<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;static {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;qNamesToSwallow = new
                      ConcurrentHashMap&lt;String, Boolean&gt;(1);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;qNamesToSwallow.put("faces-view",
                      Boolean.TRUE);<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      &nbsp; &nbsp; public TextUnit(String alias, String id) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; this.alias = alias;<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; <a moz-do-not-send="true"
                        href="http://this.id" target="_blank">this.id</a>
                      = id;<br>
                      @@ -168,16 +179,16 @@<br>
                      &nbsp; &nbsp; public void writeComment(String text) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; this.finishStartTag();<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;ELText el = ELText.parse(text);<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;if (el.isLiteral()) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      LiteralCommentInstruction(text));<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      CommentInstruction(el));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELText el = ELText.parse(text);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (el.isLiteral()) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      LiteralCommentInstruction(text));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      CommentInstruction(el));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append("&lt;!--" + text +
                      "--&gt;");<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append("&lt;!--" + text +
                      "--&gt;");<br>
                      - &nbsp; &nbsp;}<br>
                      -<br>
                      &nbsp; &nbsp; public void startTag(Tag tag) {<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; // finish any previously written tags<br>
                      @@ -185,36 +196,39 @@<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; // push this tag onto the stack<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; this.tags.push(tag);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String qName = tag.getQName();<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;// write it out<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append('&lt;');<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append(tag.getQName());<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (!qNamesToSwallow.containsKey(qName))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// write it out<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append('&lt;');<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append(qName);<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      StartElementInstruction(tag.getQName()));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      StartElementInstruction(tag.getQName()));<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;TagAttribute[] attrs =
                      tag.getAttributes().getAll();<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;if (attrs.length &gt; 0) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt; attrs.length;
                      i++) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String qname =
                      attrs[i].getQName();<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String value =
                      attrs[i].getValue();<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append('
                      ').append(qname).append("=\"").append(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TagAttribute[] attrs =
                      tag.getAttributes().getAll();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (attrs.length &gt; 0) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt;
                      attrs.length; i++) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String qname =
                      attrs[i].getQName();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String value =
                      attrs[i].getValue();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append('
                      ').append(qname).append("=\"").append(<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value).append("\"");<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELText txt = ELText.parse(value);<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (txt != null) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (txt.isLiteral()) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      LiteralAttributeInstruction(<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;qname,
                      txt.toString()));<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      AttributeInstruction(<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.alias,
                      qname, txt));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELText txt =
                      ELText.parse(value);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (txt != null) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (txt.isLiteral()) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.addInstruction(new
                      LiteralAttributeInstruction(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;qname,
                      txt.toString()));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.addInstruction(new AttributeInstruction(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.alias,
                      qname, txt));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// notify that we have an open tag<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.startTagOpen = true;<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;// notify that we have an open tag<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;this.startTagOpen = true;<br>
                      &nbsp; &nbsp; }<br>
                      <br>
                      &nbsp; &nbsp; private void finishStartTag() {<br>
                      @@ -227,13 +241,17 @@<br>
                      &nbsp; &nbsp; public void endTag() {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; Tag tag = (Tag) this.tags.pop();<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      EndElementInstruction(tag.getQName()));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String qName = tag.getQName();<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;if (this.startTagOpen) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append("/&gt;");<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.startTagOpen = false;<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.buffer.append("&lt;/").append(tag.getQName()).append('&gt;');<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (!qNamesToSwallow.containsKey(qName))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.addInstruction(new
                      EndElementInstruction(qName));<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (this.startTagOpen) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.buffer.append("/&gt;");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.startTagOpen = false;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      +
                      this.buffer.append("&lt;/").append(tag.getQName()).append('&gt;');<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; }<br>
                      <br>
                      Index:
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java
                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java
                      (working copy)<br>
                      @@ -55,6 +55,7 @@<br>
                      &nbsp;package com.sun.faces.facelets.compiler;<br>
                      <br>
                      &nbsp;import com.sun.faces.RIConstants;<br>
                      +import
                      com.sun.faces.config.FaceletsConfiguration;<br>
                      &nbsp;import com.sun.faces.config.WebConfiguration;<br>
                      &nbsp;import
                      com.sun.faces.facelets.tag.TagAttributeImpl;<br>
                      &nbsp;import
                      com.sun.faces.facelets.tag.TagAttributesImpl;<br>
                      @@ -71,6 +72,7 @@<br>
                      &nbsp;import java.io.IOException;<br>
                      &nbsp;import java.io.InputStream;<br>
                      &nbsp;import java.net.URL;<br>
                      +import java.util.Map;<br>
                      &nbsp;import java.util.regex.Matcher;<br>
                      &nbsp;import java.util.regex.Pattern;<br>
                      <br>
                      @@ -96,6 +98,8 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; protected Locator locator;<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; protected final CompilationManager unit;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;private boolean inSuppressedCDATA;<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; public
                      CompilationHandler(CompilationManager unit, String
                      alias) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.unit = unit;<br>
                      @@ -105,14 +109,18 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; public void characters(char[] ch, int
                      start, int length)<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throws SAXException {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (this.inDocument) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.unit.writeText(new
                      String(ch, start, length));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!inSuppressedCDATA) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.unit.writeText(new
                      String(ch, start, length));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; public void comment(char[] ch, int start,
                      int length)<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throws SAXException {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (this.inDocument) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.unit.writeComment(new
                      String(ch, start, length));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (!unit.getWebConfiguration().getFaceletsConfiguration().isConsumeComments(alias))

                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.unit.writeComment(new
                      String(ch, start, length));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      <br>
                      @@ -134,7 +142,10 @@<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; public void endCDATA() throws SAXException
                      {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (this.inDocument) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.unit.writeInstruction("]]&gt;");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (!unit.getWebConfiguration().getFaceletsConfiguration().isConsumeCDATA(alias))

                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.unit.writeInstruction("]]&gt;");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.inSuppressedCDATA = false;<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      <br>
                      @@ -192,7 +203,12 @@<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; public void startCDATA() throws
                      SAXException {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (this.inDocument) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.unit.writeInstruction("&lt;![CDATA[");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (!unit.getWebConfiguration().getFaceletsConfiguration().isConsumeCDATA(alias))

                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inSuppressedCDATA = false;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.unit.writeInstruction("&lt;![CDATA[");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inSuppressedCDATA = true;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      <br>
                      @@ -241,10 +257,18 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; public void processingInstruction(String
                      target, String data)<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throws SAXException {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (this.inDocument) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringBuffer sb = new
                      StringBuffer(64);<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;sb.append("&lt;?").append(target).append('
                      ').append(data).append(<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"?&gt;\n");<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.unit.writeInstruction(sb.toString());<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// If there is a process-as value
                      for the extension, only allow<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the PI to be written if its
                      value is xhtml<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean processAsXhtml =<br>
                      +
this.unit.getWebConfiguration().getFaceletsConfiguration().isProcessCurrentDocumentAsFaceletsXhtml(alias);<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (processAsXhtml) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringBuffer sb = new
                      StringBuffer(64);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;sb.append("&lt;?").append(target).append('
                      ').append(data).append(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"?&gt;\n");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;this.unit.writeInstruction(sb.toString());<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; }<br>
                      &nbsp; &nbsp; }<br>
                      @@ -418,8 +442,16 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String r = new String(b);<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Matcher m =
                      XmlDeclaration.matcher(r);<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (m.find()) {<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WebConfiguration config =
                      WebConfiguration.getInstance();<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (!config.isOptionEnabled(WebConfiguration.BooleanWebContextInitParameter.SuppressXmlDeclaration))

                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WebConfiguration config =
                      mngr.getWebConfiguration();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FaceletsConfiguration
                      faceletsConfig =
                      config.getFaceletsConfiguration();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean
                      suppressXmlDeclIsEnabled =
config.isOptionEnabled(WebConfiguration.BooleanWebContextInitParameter.SuppressXmlDeclaration);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean currentModeIsXhtml =
faceletsConfig.isProcessCurrentDocumentAsFaceletsXhtml(mngr.getAlias());<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// We want to write the XML
                      declaration if and only if<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// The SuppressXmlDeclaration
                      context-param is NOT enabled<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// and the file extension for
                      the current file has a mapping<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// with the value of XHTML<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!suppressXmlDeclIsEnabled
                      &amp;&amp; currentModeIsXhtml) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      mngr.writeInstruction(m.group(0) + "\n");<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (m.group(3) != null) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; encoding = m.group(3);<br>
                      Index:
                      jsf-ri/src/main/java/com/sun/faces/facelets/tag/xml/XmlLibrary.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/facelets/tag/xml/XmlLibrary.java
                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/facelets/tag/xml/XmlLibrary.java
                      (working copy)<br>
                      @@ -54,7 +54,6 @@<br>
                      <br>
                      &nbsp;package com.sun.faces.facelets.tag.xml;<br>
                      <br>
                      -import com.sun.faces.facelets.tag.composite.*;<br>
                      &nbsp;import
                      com.sun.faces.facelets.tag.AbstractTagLibrary;<br>
                      <br>
                      &nbsp;/**<br>
                      Index:
jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java

                      (revision 0)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java

                      (revision 0)<br>
                      @@ -0,0 +1,183 @@<br>
                      +/*<br>
                      + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR
                      THIS HEADER.<br>
                      + *<br>
                      + * Copyright 1997-2010 Sun Microsystems, Inc. All
                      rights reserved.<br>
                      + *<br>
                      + * The contents of this file are subject to the
                      terms of either the GNU<br>
                      + * General Public License Version 2 only ("GPL")
                      or the Common Development<br>
                      + * and Distribution License("CDDL")
                      (collectively, the "License"). &nbsp;You<br>
                      + * may not use this file except in compliance
                      with the License. You can obtain<br>
                      + * a copy of the License at <a
                        moz-do-not-send="true"
                        href="https://glassfish.dev.java.net/public/CDDL+GPL.html"
                        target="_blank">https://glassfish.dev.java.net/public/CDDL+GPL.html</a><br>
                      + * or glassfish/bootstrap/legal/LICENSE.txt. &nbsp;See
                      the License for the specific<br>
                      + * language governing permissions and limitations
                      under the License.<br>
                      + *<br>
                      + * When distributing the software, include this
                      License Header Notice in each<br>
                      + * file and include the License file at
                      glassfish/bootstrap/legal/LICENSE.txt.<br>
                      + * Sun designates this particular file as subject
                      to the "Classpath" exception<br>
                      + * as provided by Sun in the GPL Version 2
                      section of the License file that<br>
                      + * accompanied this code. &nbsp;If applicable, add the
                      following below the License<br>
                      + * Header, with the fields enclosed by brackets
                      [] replaced by your own<br>
                      + * identifying information: "Portions Copyrighted
                      [year]<br>
                      + * [name of copyright owner]"<br>
                      + *<br>
                      + * Contributor(s):<br>
                      + *<br>
                      + * If you wish your version of this file to be
                      governed by only the CDDL or<br>
                      + * only the GPL Version 2, indicate your decision
                      by adding "[Contributor]<br>
                      + * elects to include this software in this
                      distribution under the [CDDL or GPL<br>
                      + * Version 2] license." &nbsp;If you don't indicate a
                      single choice of license, a<br>
                      + * recipient has the option to distribute your
                      version of this file under<br>
                      + * either the CDDL, the GPL Version 2 or to
                      extend the choice of license to<br>
                      + * its licensees as provided above. &nbsp;However, if
                      you add GPL Version 2 code<br>
                      + * and therefore, elected the GPL Version 2
                      license, then the option applies<br>
                      + * only if the new code is made subject to such
                      option by the copyright<br>
                      + * holder.<br>
                      + */<br>
                      +<br>
                      +package com.sun.faces.config.processor;<br>
                      +<br>
                      +import com.sun.faces.config.DocumentInfo;<br>
                      +import com.sun.faces.config.WebConfiguration;<br>
                      +import com.sun.faces.util.FacesLogger;<br>
                      +import org.w3c.dom.Element;<br>
                      +import org.w3c.dom.Node;<br>
                      +import org.w3c.dom.NodeList;<br>
                      +import org.w3c.dom.Document;<br>
                      +<br>
                      +import javax.servlet.ServletContext;<br>
                      +<br>
                      +import java.text.MessageFormat;<br>
                      +import java.util.Map;<br>
                      +import java.util.logging.Level;<br>
                      +import java.util.logging.Logger;<br>
                      +<br>
                      +<br>
                      +/**<br>
                      + * &lt;p&gt;<br>
                      + * &nbsp;This &lt;code&gt;ConfigProcessor&lt;/code&gt;
                      handles all elements defined under<br>
                      + *
                      &nbsp;&lt;code&gt;/faces-config/factory&lt;/code&gt;.<br>
                      + * &lt;/p&gt;<br>
                      + */<br>
                      +public class FacesConfigExtensionProcessor
                      extends AbstractConfigProcessor {<br>
                      +<br>
                      + &nbsp; &nbsp;private static final Logger LOGGER =
                      FacesLogger.CONFIG.getLogger();<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; *
                      &lt;code&gt;/faces-config/faces-config-extension&lt;/code&gt;<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;private static final String
                      FACES_CONFIG_EXTENSION = "faces-config-extension";<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; *
&lt;code&gt;/faces-config/faces-config-extension/facelets-processing&lt;/code&gt;<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;private static final String
                      FACELETS_PROCESSING = "facelets-processing";<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; *
&lt;code&gt;/faces-config/faces-config-extension/facelets-processing/file-extension&lt;/code&gt;<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;private static final String FILE_EXTENSION =
                      "file-extension";<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; *
&lt;code&gt;/faces-config/faces-config-extension/facelets-processing/process-as&lt;/code&gt;<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;private static final String PROCESS_AS =
                      "process-as";<br>
                      +<br>
                      + &nbsp; &nbsp;//
                      ------------------------------------------------------------
                      Constructors<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;public FacesConfigExtensionProcessor() { }<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;//
                      --------------------------------------------
                      Methods from ConfigProcessor<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; * @see
ConfigProcessor#process(javax.servlet.ServletContext,com.sun.faces.config.DocumentInfo[])<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;public void process(ServletContext sc,
                      DocumentInfo[] documentInfos)<br>
                      + &nbsp; &nbsp;throws Exception {<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt;
                      documentInfos.length; i++) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (LOGGER.isLoggable(Level.FINE)) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LOGGER.log(Level.FINE,<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MessageFormat.format(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"Processing
                      faces-config-extension elements for document:
                      ''{0}''",<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;documentInfos[i].getSourceURL()));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Document document =
                      documentInfos[i].getDocument();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String namespace =
                      document.getDocumentElement()<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .getNamespaceURI();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NodeList facesConfigExtensions =
                      document.getDocumentElement()<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      .getElementsByTagNameNS(namespace,
                      FACES_CONFIG_EXTENSION);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (facesConfigExtensions != null
                      &amp;&amp; facesConfigExtensions.getLength() &gt;
                      0) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;processFacesConfigExtensions(facesConfigExtensions,<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; namespace,
                      documentInfos[i]);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;// invoke the next config processor<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;invokeNext(sc, documentInfos);<br>
                      +<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;//
                      ---------------------------------------------------------
                      Private Methods<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;private void
                      processFacesConfigExtensions(NodeList
                      facesConfigExtensions,<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String
                      namespace, DocumentInfo info) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;WebConfiguration config = null;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0, size =
                      facesConfigExtensions.getLength(); i &lt; size;
                      i++) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Node facesConfigExtension =
                      facesConfigExtensions.item(i);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NodeList children = ((Element)
                      facesConfigExtension)<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      .getElementsByTagNameNS(namespace, "*");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int c = 0, csize =
                      children.getLength(); c &lt; csize; c++) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Node n = children.item(c);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (FACELETS_PROCESSING.equals(n.getLocalName())) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Node faceletsProcessing = n;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NodeList
                      faceletsProcessingChildren = ((Element)
                      faceletsProcessing)<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      .getElementsByTagNameNS(namespace, "*");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String fileExtension = null,
                      processAs = null;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int fp = 0, fpsize =
                      faceletsProcessingChildren.getLength(); fp &lt;
                      fpsize; fp++) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Node childOfInterset =
                      faceletsProcessingChildren.item(fp);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (null == fileExtension
                      &amp;&amp;<br>
                      +
                      FILE_EXTENSION.equals(childOfInterset.getLocalName()))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fileExtension =
                      getNodeText(childOfInterset);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (null ==
                      processAs &amp;&amp;<br>
                      +
                      PROCESS_AS.equals(childOfInterset.getLocalName()))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;processAs =
                      getNodeText(childOfInterset);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (LOGGER.isLoggable(Level.WARNING)) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;LOGGER.log(Level.WARNING,<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;MessageFormat.format(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;"Processing faces-config-extension elements for
                      document: ''{0}'', encountered unexpected
                      configuration ''{1}'', ignoring and continuing",<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;info.getSourceURL(),
                      getNodeText(childOfInterset)));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (null != fileExtension
                      &amp;&amp; null != processAs) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (null == config) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;config =
                      WebConfiguration.getInstance();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Map&lt;String, String&gt;
                      faceletsProcessingMappings =<br>
                      +
                      config.getFacesConfigOptionValue(WebConfiguration.WebContextInitParameter.FaceletsProcessingFileExtensionProcessAs,

                      true);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;faceletsProcessingMappings.put(fileExtension,
                      processAs);<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (LOGGER.isLoggable(Level.WARNING)) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;LOGGER.log(Level.WARNING,<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;MessageFormat.format(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"Processing
                      faces-config-extension elements for document:
                      ''{0}'', encountered &lt;facelets-processing&gt;
                      elemnet without expected children",<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;info.getSourceURL()));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      +<br>
                      +}<br>
                      Index:
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
                      (working copy)<br>
                      @@ -62,6 +62,7 @@<br>
                      &nbsp;import
                      com.sun.faces.config.processor.RenderKitConfigProcessor;<br>
                      &nbsp;import
                      com.sun.faces.config.processor.ValidatorConfigProcessor;<br>
                      &nbsp;import
                      com.sun.faces.config.processor.FaceletTaglibConfigProcessor;<br>
                      +import
                      com.sun.faces.config.processor.FacesConfigExtensionProcessor;<br>
                      &nbsp;import com.sun.faces.util.FacesLogger;<br>
                      &nbsp;import com.sun.faces.util.Timer;<br>
                      &nbsp;import org.xml.sax.InputSource;<br>
                      @@ -252,6 +253,7 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new RenderKitConfigProcessor(),<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new NavigationConfigProcessor(),<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new BehaviorConfigProcessor(),<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new FacesConfigExtensionProcessor()<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; };<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt;
                      configProcessors.length; i++) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ConfigProcessor p =
                      configProcessors[i];<br>
                      Index:
                      jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java
                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java
                      (working copy)<br>
                      @@ -40,7 +40,6 @@<br>
                      &nbsp;import java.util.EnumMap;<br>
                      &nbsp;import java.util.Enumeration;<br>
                      &nbsp;import java.util.HashSet;<br>
                      -import java.util.List;<br>
                      &nbsp;import java.util.Map;<br>
                      &nbsp;import java.util.Set;<br>
                      &nbsp;import java.util.logging.Level;<br>
                      @@ -59,8 +58,10 @@<br>
                      <br>
                      &nbsp;import com.sun.faces.util.FacesLogger;<br>
                      &nbsp;import com.sun.faces.util.Util;<br>
                      +import java.util.Collections;<br>
                      <br>
                      &nbsp;import java.util.HashMap;<br>
                      +import java.util.concurrent.ConcurrentHashMap;<br>
                      &nbsp;import javax.faces.component.UIInput;<br>
                      &nbsp;import javax.faces.validator.BeanValidator;<br>
                      &nbsp;import
                      javax.faces.view.facelets.ResourceResolver;<br>
                      @@ -90,6 +91,9 @@<br>
                      &nbsp; &nbsp; private Map&lt;WebContextInitParameter,
                      String&gt; contextParameters =<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new EnumMap&lt;WebContextInitParameter,
                      String&gt;(WebContextInitParameter.class);<br>
                      <br>
                      + &nbsp; &nbsp;private Map&lt;WebContextInitParameter,
                      Map&lt;String, String&gt;&gt;
                      facesConfigParameters =<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new
                      EnumMap&lt;WebContextInitParameter, Map&lt;String,
                      String&gt;&gt;(WebContextInitParameter.class);<br>
                      +<br>
                      &nbsp; &nbsp; private Map&lt;WebEnvironmentEntry, String&gt;
                      envEntries =<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new EnumMap&lt;WebEnvironmentEntry,
                      String&gt;(WebEnvironmentEntry.class);<br>
                      <br>
                      @@ -101,7 +105,9 @@<br>
                      <br>
                      &nbsp; &nbsp; private ArrayList&lt;DeferredLoggingAction&gt;
                      deferredLoggingActions;<br>
                      <br>
                      + &nbsp; &nbsp;private FaceletsConfiguration faceletsConfig;<br>
                      <br>
                      +<br>
                      &nbsp; &nbsp; //
                      ------------------------------------------------------------
                      Constructors<br>
                      <br>
                      <br>
                      @@ -228,6 +234,39 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; return result;<br>
                      <br>
                      &nbsp; &nbsp; }<br>
                      +<br>
                      + &nbsp; &nbsp;public FaceletsConfiguration
                      getFaceletsConfiguration() {<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (null == faceletsConfig) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;faceletsConfig = new
                      FaceletsConfiguration(this);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return faceletsConfig;<br>
                      +<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public Map&lt;String, String&gt;
                      getFacesConfigOptionValue(WebContextInitParameter
                      param, boolean create) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;Map&lt;String, String&gt; result = null;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;assert(null != facesConfigParameters);<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;result =
                      facesConfigParameters.get(param);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (null == result) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (create) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = new
                      ConcurrentHashMap&lt;String, String&gt;(3);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;facesConfigParameters.put(param,
                      result);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = Collections.emptyMap();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return result;<br>
                      +<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public Map&lt;String, String&gt;
                      getFacesConfigOptionValue(WebContextInitParameter
                      param) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return getFacesConfigOptionValue(param,
                      false);<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      <br>
                      &nbsp; &nbsp; public String[]
                      getOptionValue(WebContextInitParameter param,
                      String sep) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; String [] result;<br>
                      @@ -335,7 +374,7 @@<br>
                      &nbsp; &nbsp; }<br>
                      <br>
                      <br>
                      - &nbsp; &nbsp;public void doLoggingActions() {<br>
                      + &nbsp; &nbsp;public void doPostBringupActions() {<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; if (deferredLoggingActions != null) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (DeferredLoggingAction
                      loggingAction : deferredLoggingActions) {<br>
                      @@ -892,6 +931,10 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; FaceletCache(<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "com.sun.faces.faceletCache",<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ""<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;),<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;FaceletsProcessingFileExtensionProcessAs(<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"",<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;""<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; );<br>
                      <br>
                      <br>
                      Index:
                      jsf-ri/src/main/java/com/sun/faces/config/FaceletsConfiguration.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/config/FaceletsConfiguration.java
                      (revision 0)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/config/FaceletsConfiguration.java
                      (revision 0)<br>
                      @@ -0,0 +1,191 @@<br>
                      +<br>
                      +/*<br>
                      + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR
                      THIS HEADER.<br>
                      + *<br>
                      + * Copyright 1997-2010 Sun Microsystems, Inc. All
                      rights reserved.<br>
                      + *<br>
                      + * The contents of this file are subject to the
                      terms of either the GNU<br>
                      + * General Public License Version 2 only ("GPL")
                      or the Common Development<br>
                      + * and Distribution License("CDDL")
                      (collectively, the "License"). &nbsp;You<br>
                      + * may not use this file except in compliance
                      with the License. You can obtain<br>
                      + * a copy of the License at <a
                        moz-do-not-send="true"
                        href="https://glassfish.dev.java.net/public/CDDL+GPL.html"
                        target="_blank">https://glassfish.dev.java.net/public/CDDL+GPL.html</a><br>
                      + * or glassfish/bootstrap/legal/LICENSE.txt. &nbsp;See
                      the License for the specific<br>
                      + * language governing permissions and limitations
                      under the License.<br>
                      + *<br>
                      + * When distributing the software, include this
                      License Header Notice in each<br>
                      + * file and include the License file at
                      glassfish/bootstrap/legal/LICENSE.txt.<br>
                      + * Sun designates this particular file as subject
                      to the "Classpath" exception<br>
                      + * as provided by Sun in the GPL Version 2
                      section of the License file that<br>
                      + * accompanied this code. &nbsp;If applicable, add the
                      following below the License<br>
                      + * Header, with the fields enclosed by brackets
                      [] replaced by your own<br>
                      + * identifying information: "Portions Copyrighted
                      [year]<br>
                      + * [name of copyright owner]"<br>
                      + *<br>
                      + * Contributor(s):<br>
                      + *<br>
                      + * If you wish your version of this file to be
                      governed by only the CDDL or<br>
                      + * only the GPL Version 2, indicate your decision
                      by adding "[Contributor]<br>
                      + * elects to include this software in this
                      distribution under the [CDDL or GPL<br>
                      + * Version 2] license." &nbsp;If you don't indicate a
                      single choice of license, a<br>
                      + * recipient has the option to distribute your
                      version of this file under<br>
                      + * either the CDDL, the GPL Version 2 or to
                      extend the choice of license to<br>
                      + * its licensees as provided above. &nbsp;However, if
                      you add GPL Version 2 code<br>
                      + * and therefore, elected the GPL Version 2
                      license, then the option applies<br>
                      + * only if the new code is made subject to such
                      option by the copyright<br>
                      + * holder.<br>
                      + */<br>
                      +<br>
                      +package com.sun.faces.config;<br>
                      +<br>
                      +import java.util.Map;<br>
                      +import javax.faces.context.FacesContext;<br>
                      +<br>
                      +<br>
                      +/*<br>
                      + * This read-only singleton class is vended by
                      the WebConfiguration.<br>
                      + * It is queried from any point in the program
                      that needs to take action based<br>
                      + * on configuration options pertaining to
                      facelets.<br>
                      + *<br>
                      + */<br>
                      +public class FaceletsConfiguration {<br>
                      +<br>
                      + &nbsp; &nbsp;public static final String
                      FACELETS_CONFIGURATION_ATTRIBUTE_NAME =
                      "com.sun.faces.config.FaceletsConfiguration";<br>
                      +<br>
                      + &nbsp; &nbsp;private static final String
                      ESCAPE_INLINE_TEXT_ATTRIBUTE_NAME =
                      "com.sun.faces.config.EscapeInlineText";<br>
                      +<br>
                      + &nbsp; &nbsp;private static final String
                      CONSUME_COMMENTS_ATTRIBUTE_NAME =
                      "com.sun.faces.config.ConsumeComments";<br>
                      +<br>
                      + &nbsp; &nbsp;private WebConfiguration config;<br>
                      +<br>
                      + &nbsp; &nbsp;private &nbsp;Map&lt;String, String&gt;
                      faceletsProcessingMappings;<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;public FaceletsConfiguration(WebConfiguration
                      config) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;this.config = config;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;faceletsProcessingMappings =<br>
                      +
config.getFacesConfigOptionValue(WebConfiguration.WebContextInitParameter.FaceletsProcessingFileExtensionProcessAs);<br>
                      +<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public boolean
                      isProcessCurrentDocumentAsFaceletsXhtml(String
                      alias) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;// We want to write the XML declaration
                      if and only if<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;// The SuppressXmlDeclaration
                      context-param is NOT enabled<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;// and the file extension for the current
                      file has a mapping<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;// with the value of XHTML<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;boolean currentModeIsXhtml = true;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String extension = alias;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (null == extension) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;int i = extension.indexOf(".");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (-1 != i &amp;&amp; 1 &lt;
                      extension.length()) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = extension.substring(i);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;assert (null !=
                      faceletsProcessingMappings);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if
                      (faceletsProcessingMappings.containsKey(extension))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String value =
                      faceletsProcessingMappings.get(extension);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;currentModeIsXhtml =
                      value.equals("xhtml");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return currentModeIsXhtml;<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public boolean isConsumeComments(String
                      alias) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;boolean consumeComments = false;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String extension = alias;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (null == extension) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;int i = extension.indexOf(".");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (-1 != i &amp;&amp; 1 &lt;
                      extension.length()) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = extension.substring(i);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;assert (null !=
                      faceletsProcessingMappings);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if
                      (faceletsProcessingMappings.containsKey(extension))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String value =
                      faceletsProcessingMappings.get(extension);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;consumeComments = value.equals("xml")
                      || value.equals("jspx");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return consumeComments;<br>
                      +<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public boolean isConsumeCDATA(String alias) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;boolean consumeCDATA = false;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String extension = alias;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (null == extension) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;int i = extension.indexOf(".");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (-1 != i &amp;&amp; 1 &lt;
                      extension.length()) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = extension.substring(i);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;assert (null !=
                      faceletsProcessingMappings);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if
                      (faceletsProcessingMappings.containsKey(extension))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String value =
                      faceletsProcessingMappings.get(extension);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;consumeCDATA = value.equals("jspx")
                      || value.equals("xml");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return consumeCDATA;<br>
                      +<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public boolean
                      isEscapeInlineText(FacesContext context) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;Boolean result = Boolean.TRUE;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;result = (Boolean)
                      context.getAttributes().get(ESCAPE_INLINE_TEXT_ATTRIBUTE_NAME);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (null == result) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String extension =
                      context.getViewRoot().getViewId();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (null == extension) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int i = extension.indexOf(".");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (-1 != i &amp;&amp; 1 &lt;
                      extension.length()) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension =
                      extension.substring(i);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extension = ".xhtml";<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;assert (null !=
                      faceletsProcessingMappings);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
                      (faceletsProcessingMappings.containsKey(extension))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String value =
                      faceletsProcessingMappings.get(extension);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = value.equals("xml") ||
                      value.equals("xhtml");<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = Boolean.TRUE;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;context.getAttributes().put(ESCAPE_INLINE_TEXT_ATTRIBUTE_NAME,<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return result;<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public static FaceletsConfiguration
                      getInstance(FacesContext context) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;FaceletsConfiguration result = null;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;Map&lt;Object, Object&gt; attrs =
                      context.getAttributes();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;result = (FaceletsConfiguration)
                      attrs.get(FaceletsConfiguration.FACELETS_CONFIGURATION_ATTRIBUTE_NAME);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;if (null == result) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WebConfiguration config =
                      WebConfiguration.getInstance(context.getExternalContext());<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result =
                      config.getFaceletsConfiguration();<br>
                      +
                      attrs.put(FaceletsConfiguration.FACELETS_CONFIGURATION_ATTRIBUTE_NAME,
                      result);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return result;<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public static FaceletsConfiguration
                      getInstance() {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;FacesContext context =
                      FacesContext.getCurrentInstance();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return
                      FaceletsConfiguration.getInstance(context);<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      +<br>
                      +}<br>
                      Index:
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java<br>
===================================================================<br>
                      ---
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
                      (revision 8624)<br>
                      +++
                      jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
                      (working copy)<br>
                      @@ -266,7 +266,7 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UIViewRoot.class,<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; webAppListener);<br>
                      <br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;webConfig.doLoggingActions();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;webConfig.doPostBringupActions();<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp; } catch (Throwable t) {<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (LOGGER.isLoggable(Level.SEVERE)) {<br>
                      Index: jsf-ri/systest-per-webapp/build.xml<br>
===================================================================<br>
                      --- jsf-ri/systest-per-webapp/build.xml (revision
                      8624)<br>
                      +++ jsf-ri/systest-per-webapp/build.xml (working
                      copy)<br>
                      @@ -106,7 +106,8 @@<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;flash,<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;jsp-flash,<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;suppress-xml-decl,<br>
                      - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; replace-vdl"/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; replace-vdl,<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; process-as-jspx"/&gt;<br>
                      &nbsp; &nbsp; &lt;!--<br>
                      <br>
                      &nbsp; &nbsp; &nbsp; &nbsp;EXCLUDED APPLICATIONS:<br>
                      Index: jsf-ri/systest-per-webapp/build-tests.xml<br>
===================================================================<br>
                      --- jsf-ri/systest-per-webapp/build-tests.xml &nbsp;
                      (revision 8624)<br>
                      +++ jsf-ri/systest-per-webapp/build-tests.xml &nbsp;
                      (working copy)<br>
                      @@ -123,6 +123,8 @@<br>
                      <br>
                      value="com/sun/faces/systest/replacevdl/ReplaceViewDeclarationLanguageTestCase.class"

                      /&gt;<br>
                      &nbsp; &nbsp; &lt;property
                      &nbsp;name="myfaces-uidata-component-state-test"<br>
                      <br>
                      value="com/sun/faces/systest/myfaces_uidata_component_state_test/MyFacesUIDataTestCase.class"

                      /&gt;<br>
                      + &nbsp; &nbsp;&lt;property &nbsp;name="process-as-jspx"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      value="com/sun/faces/systest/ProcessAsJspxTestCase.class"
                      /&gt;<br>
                      <br>
                      &nbsp; &nbsp; &lt;!--<br>
                      &nbsp; &nbsp; &nbsp; &nbsp; EXCLUDED APPLICATIONS:<br>
                      Index:
jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxTestCase.java<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxTestCase.java

                      (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxTestCase.java

                      (revision 0)<br>
                      @@ -0,0 +1,132 @@<br>
                      +/*<br>
                      + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR
                      THIS HEADER.<br>
                      + *<br>
                      + * Copyright 1997-2007 Sun Microsystems, Inc. All
                      rights reserved.<br>
                      + *<br>
                      + * The contents of this file are subject to the
                      terms of either the GNU<br>
                      + * General Public License Version 2 only ("GPL")
                      or the Common Development<br>
                      + * and Distribution License("CDDL")
                      (collectively, the "License"). &nbsp;You<br>
                      + * may not use this file except in compliance
                      with the License. You can obtain<br>
                      + * a copy of the License at <a
                        moz-do-not-send="true"
                        href="https://glassfish.dev.java.net/public/CDDL+GPL.html"
                        target="_blank">https://glassfish.dev.java.net/public/CDDL+GPL.html</a><br>
                      + * or glassfish/bootstrap/legal/LICENSE.txt. &nbsp;See
                      the License for the specific<br>
                      + * language governing permissions and limitations
                      under the License.<br>
                      + *<br>
                      + * When distributing the software, include this
                      License Header Notice in each<br>
                      + * file and include the License file at
                      glassfish/bootstrap/legal/LICENSE.txt.<br>
                      + * Sun designates this particular file as subject
                      to the "Classpath" exception<br>
                      + * as provided by Sun in the GPL Version 2
                      section of the License file that<br>
                      + * accompanied this code. &nbsp;If applicable, add the
                      following below the License<br>
                      + * Header, with the fields enclosed by brackets
                      [] replaced by your own<br>
                      + * identifying information: "Portions Copyrighted
                      [year]<br>
                      + * [name of copyright owner]"<br>
                      + *<br>
                      + * Contributor(s):<br>
                      + *<br>
                      + * If you wish your version of this file to be
                      governed by only the CDDL or<br>
                      + * only the GPL Version 2, indicate your decision
                      by adding "[Contributor]<br>
                      + * elects to include this software in this
                      distribution under the [CDDL or GPL<br>
                      + * Version 2] license." &nbsp;If you don't indicate a
                      single choice of license, a<br>
                      + * recipient has the option to distribute your
                      version of this file under<br>
                      + * either the CDDL, the GPL Version 2 or to
                      extend the choice of license to<br>
                      + * its licensees as provided above. &nbsp;However, if
                      you add GPL Version 2 code<br>
                      + * and therefore, elected the GPL Version 2
                      license, then the option applies<br>
                      + * only if the new code is made subject to such
                      option by the copyright<br>
                      + * holder.<br>
                      + */<br>
                      +<br>
                      +package com.sun.faces.systest;<br>
                      +<br>
                      +<br>
                      +import
                      com.gargoylesoftware.htmlunit.html.HtmlPage;<br>
                      +import com.sun.faces.htmlunit.AbstractTestCase;<br>
                      +import java.io.BufferedReader;<br>
                      +import java.io.InputStreamReader;<br>
                      +import java.net.URL;<br>
                      +import java.util.regex.Pattern;<br>
                      +import junit.framework.Test;<br>
                      +import junit.framework.TestSuite;<br>
                      +<br>
                      +<br>
                      +public class ProcessAsJspxTestCase extends
                      AbstractTestCase {<br>
                      +<br>
                      + &nbsp; &nbsp;private final static Pattern XmlDeclaration =
Pattern.compile("(?s)^&lt;\\?xml(\\s)*version=.*\\?&gt;.*");<br>
                      + &nbsp; &nbsp;private final static Pattern XmlPI =
                      Pattern.compile("(?s).*&lt;\\?xml-stylesheet.*\\?&gt;.*");<br>
                      + &nbsp; &nbsp;private final static Pattern CDATASection =
                      Pattern.compile("(?s).*&lt;!\\[CDATA\\[
                      .*\\]\\]&gt;.*");<br>
                      + &nbsp; &nbsp;private final static Pattern Comment =
                      Pattern.compile("(?s).*&lt;!--.*--&gt;.*");<br>
                      + &nbsp; &nbsp;private final static Pattern EscapedText =
                      Pattern.compile("(?s).*&amp;amp;lt;context-param&amp;amp;gt;.*");<br>
                      + &nbsp; &nbsp;private final static Pattern NotEscapedText =
Pattern.compile("(?s).*&amp;lt;context-param&amp;gt;.*");<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;public ProcessAsJspxTestCase(String name) {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;super(name);<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; * Set up instance variables required by this
                      test case.<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;public void setUp() throws Exception {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;super.setUp();<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; * Return the tests included in this test
                      suite.<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;public static Test suite() {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return (new
                      TestSuite(ProcessAsJspxTestCase.class));<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp;/**<br>
                      + &nbsp; &nbsp; * Tear down instance variables required by
                      this test case.<br>
                      + &nbsp; &nbsp; */<br>
                      + &nbsp; &nbsp;public void tearDown() {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;super.tearDown();<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;private String getRawMarkup(String path)
                      throws Exception {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;URL url = getURL(path);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;BufferedReader reader = new
                      BufferedReader(new
                      InputStreamReader(url.openStream()));<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;StringBuilder builder = new
                      StringBuilder();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String cur;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;while (null != (cur = reader.readLine()))
                      {<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;builder.append(cur);<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String xml = builder.toString();<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;return xml;<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;//
                      ------------------------------------------------------------
                      Test Methods<br>
                      +<br>
                      + &nbsp; &nbsp;public void testProcessAsXhtml() throws
                      Exception {<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String xml =
                      getRawMarkup("/faces/xhtmlview.xhtml");<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertTrue(XmlDeclaration.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;assertTrue(XmlPI.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertTrue(CDATASection.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertTrue(EscapedText.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertTrue(Comment.matcher(xml).matches());<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public void testProcessAsXml() throws
                      Exception {<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String xml =
                      getRawMarkup("/faces/xmlview.view.xml");<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(XmlDeclaration.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(XmlPI.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(CDATASection.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertTrue(EscapedText.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(Comment.matcher(xml).matches());<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      + &nbsp; &nbsp;public void testProcessAsJspx() throws
                      Exception {<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;String xml =
                      getRawMarkup("/faces/jspxview.jspx");<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(XmlDeclaration.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(XmlPI.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(CDATASection.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertTrue(NotEscapedText.matcher(xml).matches());<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;assertFalse(Comment.matcher(xml).matches());<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      +}<br>
                      Index:
jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxBean.java<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxBean.java

                      (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxBean.java

                      (revision 0)<br>
                      @@ -0,0 +1,14 @@<br>
                      +package com.sun.faces.systest;<br>
                      +<br>
                      +import javax.faces.bean.ManagedBean;<br>
                      +import javax.faces.bean.RequestScoped;<br>
                      +<br>
                      +@ManagedBean<br>
                      +@RequestScoped<br>
                      +public class ProcessAsJspxBean {<br>
                      +<br>
                      + &nbsp; &nbsp;public String getProp() {<br>
                      + &nbsp; &nbsp; &nbsp; return "Hello &lt; World";<br>
                      + &nbsp; &nbsp;}<br>
                      +<br>
                      +}<br>
                      Index:
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspxview.jspx<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspxview.jspx
                      (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspxview.jspx
                      (revision 0)<br>
                      @@ -0,0 +1,67 @@<br>
                      +&lt;?xml version='1.0' encoding='utf-8'?&gt;<br>
                      +&lt;!-- Copyright (c) 2008, 2010, Oracle and/or
                      its affiliates. All rights reserved. --&gt;<br>
                      +&lt;jsp:root xmlns="<a moz-do-not-send="true"
                        href="http://www.w3.org/1999/xhtml"
                        target="_blank">http://www.w3.org/1999/xhtml</a>"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlns:jsp="<a moz-do-not-send="true"
                        href="http://java.sun.com/JSP/Page"
                        target="_blank">http://java.sun.com/JSP/Page</a>"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlns:f="<a moz-do-not-send="true"
                        href="http://java.sun.com/jsf/core"
                        target="_blank">http://java.sun.com/jsf/core</a>"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlns:h="<a moz-do-not-send="true"
                        href="http://java.sun.com/jsf/html"
                        target="_blank">http://java.sun.com/jsf/html</a>"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;version="1.2"&gt;<br>
                      + &nbsp;&lt;jsp:directive.page
                      contentType="text/html;charset=utf-8"/&gt;<br>
                      + &nbsp;&lt;f:view&gt;<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;f:attribute name="mode"
                      value="index"/&gt;<br>
                      +<br>
                      +&lt;h2&gt;XML declaration: consumed&lt;/h2&gt;<br>
                      +<br>
                      +&lt;h2&gt;Processing instruction:
                      consumed&lt;/h2&gt;<br>
                      +<br>
                      +&lt;?xml-stylesheet href="funky.xsl"
                      type="text/xml" alternate="yes"?&gt;<br>
                      +<br>
                      +&lt;h2&gt;CDATA section: consumed&lt;/h2&gt;<br>
                      +<br>
                      +&lt;![CDATA[ &lt;p&gt;This is CDATA&lt;/p&gt;
                      ]]&gt;<br>
                      +<br>
                      +&lt;h2&gt;Inline text escaping: not
                      escaped&lt;/h2&gt;<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;code&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-name&amp;amp;gt;javax.faces.PARTIAL_STATE_SAVING

                      <br>
                      +<br>
                      +&amp;amp;lt;/param-name&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-value&amp;amp;gt;true&amp;amp;lt;/param-value&amp;amp;gt

                      <br>
                      +<br>
                      +;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;/context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/code&gt;<br>
                      +<br>
                      +&lt;h2&gt;Comments: consumed&lt;/h2&gt;<br>
                      +<br>
                      +<br>
                      +&lt;p&gt;HTML Template Text&lt;/p&gt;<br>
                      +<br>
                      +<br>
                      +<br>
                      +&lt;p&gt;&lt;h:outputText
                      value="#{processAsJspxBean.prop}" /&gt;&lt;/p&gt;<br>
                      +<br>
                      +&lt;h:form prependId="false"&gt;<br>
                      +<br>
                      +&lt;h:commandButton value="reload" /&gt;<br>
                      +<br>
                      +&lt;/h:form&gt;<br>
                      +<br>
                      +<br>
                      +&lt;!-- comments consumed --&gt;<br>
                      +<br>
                      +<br>
                      +<br>
                      +<br>
                      +<br>
                      + &nbsp;&lt;/f:view&gt;<br>
                      +&lt;/jsp:root&gt;<br>
                      Index:
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xhtmlview.xhtml<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xhtmlview.xhtml
                      (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xhtmlview.xhtml
                      (revision 0)<br>
                      @@ -0,0 +1,103 @@<br>
                      +&lt;?xml version="1.0" encoding="UTF-8"
                      standalone="no" ?&gt;<br>
                      +&lt;!--<br>
                      + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS
                      HEADER.<br>
                      +<br>
                      + Copyright 2009 Sun Microsystems, Inc. All rights
                      reserved.<br>
                      +<br>
                      + The contents of this file are subject to the
                      terms of either the GNU<br>
                      + General Public License Version 2 only ("GPL") or
                      the Common Development<br>
                      + and Distribution License("CDDL") (collectively,
                      the "License"). &nbsp;You<br>
                      + may not use this file except in compliance with
                      the License. You can obtain<br>
                      + a copy of the License at <a
                        moz-do-not-send="true"
                        href="https://glassfish.dev.java.net/public/CDDL+GPL.html"
                        target="_blank">https://glassfish.dev.java.net/public/CDDL+GPL.html</a><br>
                      + or glassfish/bootstrap/legal/LICENSE.txt. &nbsp;See
                      the License for the specific<br>
                      + language governing permissions and limitations
                      under the License.<br>
                      +<br>
                      + When distributing the software, include this
                      License Header Notice in each<br>
                      + file and include the License file at
                      glassfish/bootstrap/legal/LICENSE.txt.<br>
                      + Sun designates this particular file as subject
                      to the "Classpath" exception<br>
                      + as provided by Sun in the GPL Version 2 section
                      of the License file that<br>
                      + accompanied this code. &nbsp;If applicable, add the
                      following below the License<br>
                      + Header, with the fields enclosed by brackets []
                      replaced by your own<br>
                      + identifying information: "Portions Copyrighted
                      [year]<br>
                      + [name of copyright owner]"<br>
                      +<br>
                      + Contributor(s):<br>
                      +<br>
                      + If you wish your version of this file to be
                      governed by only the CDDL or<br>
                      + only the GPL Version 2, indicate your decision
                      by adding "[Contributor]<br>
                      + elects to include this software in this
                      distribution under the [CDDL or GPL<br>
                      + Version 2] license." &nbsp;If you don't indicate a
                      single choice of license, a<br>
                      + recipient has the option to distribute your
                      version of this file under<br>
                      + either the CDDL, the GPL Version 2 or to extend
                      the choice of license to<br>
                      + its licensees as provided above. &nbsp;However, if
                      you add GPL Version 2 code<br>
                      + and therefore, elected the GPL Version 2
                      license, then the option applies<br>
                      + only if the new code is made subject to such
                      option by the copyright<br>
                      + holder.<br>
                      +--&gt;<br>
                      +<br>
                      +&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
                      Transitional//EN" "<a moz-do-not-send="true"
                        href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
                        target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br>
                      +&lt;html xmlns="<a moz-do-not-send="true"
                        href="http://www.w3.org/1999/xhtml"
                        target="_blank">http://www.w3.org/1999/xhtml</a>"<br>
                      + &nbsp; &nbsp; &nbsp;xmlns:h="<a moz-do-not-send="true"
                        href="http://java.sun.com/jsf/html"
                        target="_blank">http://java.sun.com/jsf/html</a>"&gt;<br>
                      +&lt;h:head&gt;<br>
                      + &nbsp; &nbsp;&lt;title&gt;Process JSPX as Facelets for
                      JSPX mode&lt;/title&gt;<br>
                      +&lt;/h:head&gt;<br>
                      +&lt;h:body bgcolor="white"&gt;<br>
                      +<br>
                      +&lt;h2&gt;XML declaration: passed
                      through&lt;/h2&gt;<br>
                      +<br>
                      +&lt;h2&gt;Processing instruction: passed
                      through&lt;/h2&gt;<br>
                      +<br>
                      +&lt;?xml-stylesheet href="funky.xsl"
                      type="text/xml" alternate="yes"?&gt;<br>
                      +<br>
                      +&lt;h2&gt;CDATA section: passed
                      through&lt;/h2&gt;<br>
                      +<br>
                      +&lt;![CDATA[ &lt;h2&gt;This is CDATA&lt;/h2&gt;
                      ]]&gt;<br>
                      +<br>
                      +&lt;h2&gt;Inline text escaping:
                      escaped&lt;/h2&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;code&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-name&amp;amp;gt;javax.faces.PARTIAL_STATE_SAVING

                      <br>
                      +<br>
                      +&amp;amp;lt;/param-name&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-value&amp;amp;gt;true&amp;amp;lt;/param-value&amp;amp;gt

                      <br>
                      +<br>
                      +;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;/context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/code&gt;<br>
                      +<br>
                      +&lt;h2&gt;Comments: passed through&lt;/h2&gt;<br>
                      +<br>
                      +&lt;!-- comments pass through --&gt;<br>
                      +<br>
                      +&lt;hr /&gt;<br>
                      +<br>
                      + &nbsp;&lt;h:form prependId="false" id="form1"&gt;<br>
                      +<br>
                      + &nbsp; &lt;h:panelGrid columns="2" border="1"
                      width="600"&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &lt;h:outputText value="column1" /&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &lt;h:outputText value="column2" /&gt;<br>
                      +<br>
                      + &nbsp; &lt;/h:panelGrid&gt;<br>
                      +<br>
                      + &nbsp; &lt;h2&gt;&lt;h:messages
                      id="messages"/&gt;&lt;/h2&gt;<br>
                      +<br>
                      +<br>
                      +<br>
                      + &nbsp; #{processAsJspxBean.prop}<br>
                      +<br>
                      +<br>
                      +<br>
                      +<br>
                      + &nbsp;&lt;/h:form&gt;<br>
                      +<br>
                      +&lt;/h:body&gt;<br>
                      +&lt;/html&gt;<br>
                      Index:
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspview.jsp<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspview.jsp
                      &nbsp; (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/web/jspview.jsp
                      &nbsp; (revision 0)<br>
                      @@ -0,0 +1,86 @@<br>
                      +&lt;%--<br>
                      + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS
                      HEADER.<br>
                      +<br>
                      + Copyright 1997-2007 Sun Microsystems, Inc. All
                      rights reserved.<br>
                      +<br>
                      + The contents of this file are subject to the
                      terms of either the GNU<br>
                      + General Public License Version 2 only ("GPL") or
                      the Common Development<br>
                      + and Distribution License("CDDL") (collectively,
                      the "License"). &nbsp;You<br>
                      + may not use this file except in compliance with
                      the License. You can obtain<br>
                      + a copy of the License at <a
                        moz-do-not-send="true"
                        href="https://glassfish.dev.java.net/public/CDDL+GPL.html"
                        target="_blank">https://glassfish.dev.java.net/public/CDDL+GPL.html</a><br>
                      + or glassfish/bootstrap/legal/LICENSE.txt. &nbsp;See
                      the License for the specific<br>
                      + language governing permissions and limitations
                      under the License.<br>
                      +<br>
                      + When distributing the software, include this
                      License Header Notice in each<br>
                      + file and include the License file at
                      glassfish/bootstrap/legal/LICENSE.txt.<br>
                      + Sun designates this particular file as subject
                      to the "Classpath" exception<br>
                      + as provided by Sun in the GPL Version 2 section
                      of the License file that<br>
                      + accompanied this code. &nbsp;If applicable, add the
                      following below the License<br>
                      + Header, with the fields enclosed by brackets []
                      replaced by your own<br>
                      + identifying information: "Portions Copyrighted
                      [year]<br>
                      + [name of copyright owner]"<br>
                      +<br>
                      + Contributor(s):<br>
                      +<br>
                      + If you wish your version of this file to be
                      governed by only the CDDL or<br>
                      + only the GPL Version 2, indicate your decision
                      by adding "[Contributor]<br>
                      + elects to include this software in this
                      distribution under the [CDDL or GPL<br>
                      + Version 2] license." &nbsp;If you don't indicate a
                      single choice of license, a<br>
                      + recipient has the option to distribute your
                      version of this file under<br>
                      + either the CDDL, the GPL Version 2 or to extend
                      the choice of license to<br>
                      + its licensees as provided above. &nbsp;However, if
                      you add GPL Version 2 code<br>
                      + and therefore, elected the GPL Version 2
                      license, then the option applies<br>
                      + only if the new code is made subject to such
                      option by the copyright<br>
                      + holder.<br>
                      +--%&gt;<br>
                      +<br>
                      +&lt;!--<br>
                      + Copyright 2004 Sun Microsystems, Inc. All rights
                      reserved.<br>
                      + SUN PROPRIETARY/CONFIDENTIAL. Use is subject to
                      license terms.<br>
                      +--&gt;<br>
                      +<br>
                      +&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
                      Transitional//EN"&gt;<br>
                      +&lt;html&gt;<br>
                      + &nbsp;&lt;head&gt;<br>
                      + &nbsp; &nbsp;&lt;title&gt;JSP view&lt;/title&gt;<br>
                      + &nbsp; &nbsp;&lt;%@ taglib uri="<a moz-do-not-send="true"
                        href="http://java.sun.com/jsf/core"
                        target="_blank">http://java.sun.com/jsf/core</a>"
                      &nbsp;prefix="f" %&gt;<br>
                      + &nbsp; &nbsp;&lt;%@ taglib uri="<a moz-do-not-send="true"
                        href="http://java.sun.com/jsf/html"
                        target="_blank">http://java.sun.com/jsf/html</a>"
                      &nbsp;prefix="h" %&gt;<br>
                      + &nbsp;&lt;/head&gt;<br>
                      +<br>
                      + &nbsp;&lt;body&gt;<br>
                      +&lt;f:view&gt;<br>
                      +<br>
                      +&lt;p&gt;HTML Template Text&lt;/p&gt;<br>
                      +<br>
                      +&lt;p&gt;&lt;h:outputText
                      value="#{processAsJspxBean.prop}" /&gt;&lt;/p&gt;<br>
                      +<br>
                      +&lt;h:form prependId="false"&gt;<br>
                      +<br>
                      +&lt;h:commandButton value="reload" /&gt;<br>
                      +<br>
                      +&lt;/h:form&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;code&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-name&amp;amp;gt;javax.faces.PARTIAL_STATE_SAVING

                      <br>
                      +<br>
                      +&amp;amp;lt;/param-name&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-value&amp;amp;gt;true&amp;amp;lt;/param-value&amp;amp;gt

                      <br>
                      +<br>
                      +;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;/context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/code&gt;<br>
                      +<br>
                      +<br>
                      +<br>
                      +&lt;/f:view&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;hr&gt;<br>
                      + &nbsp;&lt;/body&gt;<br>
                      +&lt;/html&gt;<br>
                      Index:
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xmlview.view.xml<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xmlview.view.xml
                      (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/web/xmlview.view.xml
                      (revision 0)<br>
                      @@ -0,0 +1,103 @@<br>
                      +&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
                      +&lt;!--<br>
                      + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS
                      HEADER.<br>
                      +<br>
                      + Copyright 2010 Sun Microsystems, Inc. All rights
                      reserved.<br>
                      +<br>
                      + The contents of this file are subject to the
                      terms of either the GNU<br>
                      + General Public License Version 2 only ("GPL") or
                      the Common Development<br>
                      + and Distribution License("CDDL") (collectively,
                      the "License"). &nbsp;You<br>
                      + may not use this file except in compliance with
                      the License. You can obtain<br>
                      + a copy of the License at <a
                        moz-do-not-send="true"
                        href="https://glassfish.dev.java.net/public/CDDL+GPL.html"
                        target="_blank">https://glassfish.dev.java.net/public/CDDL+GPL.html</a><br>
                      + or glassfish/bootstrap/legal/LICENSE.txt. &nbsp;See
                      the License for the specific<br>
                      + language governing permissions and limitations
                      under the License.<br>
                      +<br>
                      + When distributing the software, include this
                      License Header Notice in each<br>
                      + file and include the License file at
                      glassfish/bootstrap/legal/LICENSE.txt.<br>
                      + Sun designates this particular file as subject
                      to the "Classpath" exception<br>
                      + as provided by Sun in the GPL Version 2 section
                      of the License file that<br>
                      + accompanied this code. &nbsp;If applicable, add the
                      following below the License<br>
                      + Header, with the fields enclosed by brackets []
                      replaced by your own<br>
                      + identifying information: "Portions Copyrighted
                      [year]<br>
                      + [name of copyright owner]"<br>
                      +<br>
                      + Contributor(s):<br>
                      +<br>
                      + If you wish your version of this file to be
                      governed by only the CDDL or<br>
                      + only the GPL Version 2, indicate your decision
                      by adding "[Contributor]<br>
                      + elects to include this software in this
                      distribution under the [CDDL or GPL<br>
                      + Version 2] license." &nbsp;If you don't indicate a
                      single choice of license, a<br>
                      + recipient has the option to distribute your
                      version of this file under<br>
                      + either the CDDL, the GPL Version 2 or to extend
                      the choice of license to<br>
                      + its licensees as provided above. &nbsp;However, if
                      you add GPL Version 2 code<br>
                      + and therefore, elected the GPL Version 2
                      license, then the option applies<br>
                      + only if the new code is made subject to such
                      option by the copyright<br>
                      + holder.<br>
                      +--&gt;<br>
                      +&lt;faces-view xmlns="<a moz-do-not-send="true"
                        href="http://www.w3.org/1999/xhtml"
                        target="_blank">http://www.w3.org/1999/xhtml</a>"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlns:h="<a moz-do-not-send="true"
                        href="http://java.sun.com/jsf/html"
                        target="_blank">http://java.sun.com/jsf/html</a>"&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;h:html&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;h:head&gt;&lt;h:title&gt;Raw XML
                      View&lt;/h:title&gt;&lt;/h:head&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;h:body&gt;<br>
                      +<br>
                      +&lt;h2&gt;XML declaration: consumed&lt;/h2&gt;<br>
                      +<br>
                      +&lt;h2&gt;Processing instruction:
                      consumed&lt;/h2&gt;<br>
                      +<br>
                      +&lt;?xml-stylesheet href="funky.xsl"
                      type="text/xml" alternate="yes"?&gt;<br>
                      +<br>
                      +&lt;h2&gt;CDATA section: consumed&lt;/h2&gt;<br>
                      +<br>
                      +&lt;![CDATA[ &lt;p&gt;This is CDATA&lt;/p&gt;
                      ]]&gt;<br>
                      +<br>
                      +&lt;h2&gt;Inline text escaping:
                      escaped&lt;/h2&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;code&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-name&amp;amp;gt;javax.faces.PARTIAL_STATE_SAVING

                      <br>
                      +<br>
                      +&amp;amp;lt;/param-name&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      +<br>
                      +&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;param-value&amp;amp;gt;true&amp;amp;lt;/param-value&amp;amp;gt

                      <br>
                      +<br>
                      +;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;br/&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                      &nbsp;&amp;amp;lt;/context-param&amp;amp;gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/code&gt;<br>
                      +<br>
                      +&lt;h2&gt;Comments: consumed&lt;/h2&gt;<br>
                      +<br>
                      +&lt;!-- comments consumed --&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;h:form prependId="false"
                      id="form"&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;h:panelGrid id="grid"
                      column="2"&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;h:outputText id="text"
                      value="hello"&gt;&lt;/h:outputText&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;h:commandButton
                      id="button"
                      value="reload"&gt;&lt;/h:commandButton&gt;<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/h:panelGrid&gt;<br>
                      +<br>
                      + &nbsp; #{processAsJspxBean.prop}<br>
                      +<br>
                      +&lt;p&gt;html template text&lt;/p&gt;<br>
                      +<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/h:form&gt;<br>
                      +<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;/h:body&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;/h:html&gt;<br>
                      +<br>
                      +&lt;/faces-view&gt;<br>
                      +<br>
                      +<br>
                      Index:
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/faces-config.xml<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/faces-config.xml
                      (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/faces-config.xml
                      (revision 0)<br>
                      @@ -0,0 +1,19 @@<br>
                      +&lt;?xml version='1.0' encoding='UTF-8'?&gt;<br>
                      +&lt;faces-config<br>
                      + &nbsp;xmlns="<a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee"
                        target="_blank">http://java.sun.com/xml/ns/javaee</a>"<br>
                      + &nbsp;xmlns:xsi="<a moz-do-not-send="true"
                        href="http://www.w3.org/2001/XMLSchema-instance"
                        target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"<br>
                      + &nbsp;xsi:schemaLocation="<a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee"
                        target="_blank">http://java.sun.com/xml/ns/javaee</a>
                      <a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
                        target="_blank">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd</a>"<br>
                      + &nbsp;version="2.0"&gt;<br>
                      +<br>
                      + &nbsp;&lt;faces-config-extension&gt;<br>
                      + &nbsp; &nbsp;&lt;facelets-processing&gt;<br>
                      + &nbsp; &nbsp;
                      &nbsp;&lt;file-extension&gt;.jspx&lt;/file-extension&gt;<br>
                      + &nbsp; &nbsp; &nbsp;&lt;process-as&gt;jspx&lt;/process-as&gt;<br>
                      + &nbsp; &nbsp;&lt;/facelets-processing&gt;<br>
                      + &nbsp; &nbsp;&lt;facelets-processing&gt;<br>
                      + &nbsp; &nbsp;
                      &nbsp;&lt;file-extension&gt;.view.xml&lt;/file-extension&gt;<br>
                      + &nbsp; &nbsp; &nbsp;&lt;process-as&gt;xml&lt;/process-as&gt;<br>
                      + &nbsp; &nbsp;&lt;/facelets-processing&gt;<br>
                      + &nbsp;&lt;/faces-config-extension&gt;<br>
                      +<br>
                      +&lt;/faces-config&gt;<br>
                      Index:
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/web.xml<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/web.xml
                      (revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/web.xml
                      (revision 0)<br>
                      @@ -0,0 +1,72 @@<br>
                      +&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br>
                      +<br>
                      +&lt;!--<br>
                      + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS
                      HEADER.<br>
                      +<br>
                      + Copyright 1997-2007 Sun Microsystems, Inc. All
                      rights reserved.<br>
                      +<br>
                      + The contents of this file are subject to the
                      terms of either the GNU<br>
                      + General Public License Version 2 only ("GPL") or
                      the Common Development<br>
                      + and Distribution License("CDDL") (collectively,
                      the "License"). &nbsp;You<br>
                      + may not use this file except in compliance with
                      the License. You can obtain<br>
                      + a copy of the License at <a
                        moz-do-not-send="true"
                        href="https://glassfish.dev.java.net/public/CDDL+GPL.html"
                        target="_blank">https://glassfish.dev.java.net/public/CDDL+GPL.html</a><br>
                      + or glassfish/bootstrap/legal/LICENSE.txt. &nbsp;See
                      the License for the specific<br>
                      + language governing permissions and limitations
                      under the License.<br>
                      +<br>
                      + When distributing the software, include this
                      License Header Notice in each<br>
                      + file and include the License file at
                      glassfish/bootstrap/legal/LICENSE.txt.<br>
                      + Sun designates this particular file as subject
                      to the "Classpath" exception<br>
                      + as provided by Sun in the GPL Version 2 section
                      of the License file that<br>
                      + accompanied this code. &nbsp;If applicable, add the
                      following below the License<br>
                      + Header, with the fields enclosed by brackets []
                      replaced by your own<br>
                      + identifying information: "Portions Copyrighted
                      [year]<br>
                      + [name of copyright owner]"<br>
                      +<br>
                      + Contributor(s):<br>
                      +<br>
                      + If you wish your version of this file to be
                      governed by only the CDDL or<br>
                      + only the GPL Version 2, indicate your decision
                      by adding "[Contributor]<br>
                      + elects to include this software in this
                      distribution under the [CDDL or GPL<br>
                      + Version 2] license." &nbsp;If you don't indicate a
                      single choice of license, a<br>
                      + recipient has the option to distribute your
                      version of this file under<br>
                      + either the CDDL, the GPL Version 2 or to extend
                      the choice of license to<br>
                      + its licensees as provided above. &nbsp;However, if
                      you add GPL Version 2 code<br>
                      + and therefore, elected the GPL Version 2
                      license, then the option applies<br>
                      + only if the new code is made subject to such
                      option by the copyright<br>
                      + holder.<br>
                      +--&gt;<br>
                      +<br>
                      +&lt;web-app version="2.5"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; xmlns="<a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee"
                        target="_blank">http://java.sun.com/xml/ns/javaee</a>"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; xmlns:xsi="<a moz-do-not-send="true"
                        href="http://www.w3.org/2001/XMLSchema-instance"
                        target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp; xsi:schemaLocation="<a
                        moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee"
                        target="_blank">http://java.sun.com/xml/ns/javaee</a>
                      <a moz-do-not-send="true"
                        href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                        target="_blank">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</a>"&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;description&gt;<br>
                      + &nbsp; &nbsp; &nbsp; JSPX Compatibility<br>
                      + &nbsp; &nbsp;&lt;/description&gt;<br>
                      + &nbsp; &nbsp;&lt;display-name&gt;JSPX
                      Compatibility&lt;/display-name&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;context-param&gt;<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;&lt;param-name&gt;javax.faces.FACELETS_VIEW_MAPPINGS&lt;/param-name&gt;<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;&lt;param-value&gt;*.xhtml;*.view.xml;*.jspx&lt;/param-value&gt;<br>
                      + &nbsp; &nbsp;&lt;/context-param&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;context-param&gt;<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;&lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;param-value&gt;.xhtml .view.xml .jsp
                      .jspx&lt;/param-value&gt;<br>
                      + &nbsp; &nbsp;&lt;/context-param&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;!-- Faces Servlet --&gt;<br>
                      + &nbsp; &nbsp;&lt;servlet&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;servlet-name&gt;Faces
                      Servlet&lt;/servlet-name&gt;<br>
                      + &nbsp; &nbsp; &nbsp;
&nbsp;&lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;load-on-startup&gt; 1
                      &lt;/load-on-startup&gt;<br>
                      + &nbsp; &nbsp;&lt;/servlet&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;!-- Faces Servlet Mapping --&gt;<br>
                      + &nbsp; &nbsp;&lt;servlet-mapping&gt;<br>
                      + &nbsp; &nbsp; &nbsp; &nbsp;&lt;servlet-name&gt;Faces
                      Servlet&lt;/servlet-name&gt;<br>
                      + &nbsp; &nbsp; &nbsp;
                      &nbsp;&lt;url-pattern&gt;/faces/*&lt;/url-pattern&gt;<br>
                      + &nbsp; &nbsp;&lt;/servlet-mapping&gt;<br>
                      +<br>
                      +&lt;/web-app&gt;<br>
                      Index:
                      jsf-ri/systest-per-webapp/process-as-jspx/web/index.html<br>
===================================================================<br>
                      ---
                      jsf-ri/systest-per-webapp/process-as-jspx/web/index.html
                      &nbsp; &nbsp;(revision 0)<br>
                      +++
                      jsf-ri/systest-per-webapp/process-as-jspx/web/index.html
                      &nbsp; &nbsp;(revision 0)<br>
                      @@ -0,0 +1,124 @@<br>
                      +&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
                      Transitional//EN"&gt;<br>
                      +&lt;html&gt;<br>
                      + &nbsp;&lt;head&gt;<br>
                      + &nbsp; &nbsp;&lt;title&gt;Test all permutations of
                      facelets processing modes&lt;/title&gt;<br>
                      + &nbsp;&lt;/head&gt;<br>
                      +<br>
                      + &nbsp;&lt;body&gt;<br>
                      + &nbsp; &nbsp;&lt;h1&gt;Test all permutations of facelets
                      processing modes&lt;/h1&gt;<br>
                      +<br>
                      +&lt;table border="1"&gt;<br>
                      +<br>
                      +&lt;tr&gt;<br>
                      +<br>
                      +&lt;td&gt;&amp;nbsp;<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;th&gt;xhtml<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;th&gt;xml<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;th&gt;jspx<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;/tr&gt;<br>
                      +<br>
                      +&lt;tr&gt;<br>
                      +<br>
                      +&lt;th&gt;XML Declaration<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;td&gt;passed through<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;/tr&gt;<br>
                      +<br>
                      +&lt;tr&gt;<br>
                      +<br>
                      +&lt;th&gt;Processing Instructions<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;td&gt;passed through<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;/tr&gt;<br>
                      +<br>
                      +&lt;tr&gt;<br>
                      +<br>
                      +&lt;th&gt;CDATA<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;td&gt;passed through<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;/tr&gt;<br>
                      +<br>
                      +&lt;tr&gt;<br>
                      +<br>
                      +&lt;th&gt;Inline text escaping<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;td&gt;escaped<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;escaped<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;not escaped<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;/tr&gt;<br>
                      +<br>
                      +&lt;tr&gt;<br>
                      +<br>
                      +&lt;th&gt;Comments<br>
                      +&lt;/th&gt;<br>
                      +<br>
                      +&lt;td&gt;passed through<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;td&gt;consumed<br>
                      +&lt;/td&gt;<br>
                      +<br>
                      +&lt;/tr&gt;<br>
                      +<br>
                      +<br>
                      +&lt;/table&gt;<br>
                      +<br>
                      +<br>
                      +<br>
                      +&lt;p&gt;&lt;a
                      href="/jsf-process-as-jspx/faces/xhtmlview.xhtml"&gt;Classic
                      Facelets processed as Facelets in XHTML
                      mode&lt;/a&gt;&lt;/p&gt;<br>
                      +&lt;p&gt;&lt;a
                      href="/jsf-process-as-jspx/faces/xmlview.view.xml"&gt;XML
                      processed as Facelets in XML
                      mode&lt;/a&gt;&lt;/p&gt;<br>
                      +&lt;p&gt;&lt;a
                      href="/jsf-process-as-jspx/faces/jspxview.jspx"&gt;JSPX
                      processed as Facelets in JSPX
                      mode&lt;/a&gt;&lt;/p&gt;<br>
                      +&lt;p&gt;&lt;a
                      href="/jsf-process-as-jspx/faces/jspview.jsp"&gt;JSP
                      processed as JSP&lt;/a&gt;&lt;/p&gt;<br>
                      +<br>
                      + &nbsp; &nbsp;&lt;hr&gt;<br>
                      +&lt;!-- Created: Wed Sep 29 12:17:11 EDT 2010
                      --&gt;<br>
                      +&lt;!-- hhmts start --&gt;<br>
                      +Last modified: Thu Sep 30 17:01:18 EDT 2010<br>
                      +&lt;!-- hhmts end --&gt;<br>
                      + &nbsp;&lt;/body&gt;<br>
                      +&lt;/html&gt;<br>
                    </blockquote>
                  </div>
                  <br>
                </div>
              </div>
            </blockquote>
            <br>
          </div>
        </blockquote>
      </div>
      <br>
    </blockquote>
    <br>
  </body>
</html>