<!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">
    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
      cite="mid:AANLkTi=PQC_Ff_6wj5Y_MTrmvqL5JKrZt+ZOjDr+d30u@mail.gmail.com"
      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">http://www.virtua.com</a> |
          JSF/Java EE training and consulting<br>
          <a moz-do-not-send="true" href="http://www.JSFCentral.com">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">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">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>
  </body>
</html>