<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
     
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

  <!-- setting the project stage to be DEVELOPMENT -->
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>   
    <param-value>Development</param-value>
  </context-param>

  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.jspx</param-value>
  </context-param>

   

  <context-param> 
    <!--description>
      The parameter "org.apache.myfaces.trinidad.security.FRAME_BUSTING" controls 
      the framebusting feature. Framebusting stops content from running inside 
      frames (meaning a frame or iframe tag).

      This context parameter is ignored when 
      org.apache.myfaces.trinidad.util.ExternalContextUtils.isPortlet is true, 
      and will behave as if the context parameter is set to 'never'.

      Possible values are:

          differentOrigin - only bust frames if the an ancestor window origin 
                   and the frame origin are different. If the ancestor windows 
                   and frame have the same origin then allow the content to run 
                   in a frame. This is the default.
          always - always bust frames, meaning don't allow a page to be embedded in frames
          never - never bust frames, meaning always allow a page to be embedded in frames

    </description-->
    <param-name>org.apache.myfaces.trinidad.security.FRAME_BUSTING</param-name>
    <param-value>differentOrigin</param-value>
  </context-param> 

  <!-- Set to true for using the lightweight dialog feature -->
  <context-param>
    <param-name>org.apache.myfaces.trinidad.ENABLE_LIGHTWEIGHT_DIALOGS</param-name>
    <param-value>false</param-value>
  </context-param>

  <!-- Temporary internal flag to set to enabled and test Optimized PPR -->
  <context-param>
    <param-name>org.apache.myfaces.trinidadinternal.ENABLE_PPR_OPTIMIZATION</param-name>
    <param-value>false</param-value>
  </context-param>
 
  <!-- In Trinidad, we use an optimized, token-based mechanism if either 
       1] javax.faces.STATE_SAVING_METHOD = server
       2] javax.faces.STATE_SAVING_METHOD = client and 
          org.apache.myfaces.trinidad.CLIENT_STATE_METHOD = token
  -->
  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
    <!--param-value>server</param-value-->
  </context-param>

  <!-- Parameter to set the maximum number of client view state tokens.
       Uncomment this to test low-token-count scenarios.
  <context-param>
    <param-name>org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS</param-name>
    <param-value>3</param-value>
  </context-param>
  -->

  <!-- Trinidad by default uses an optimized client-side state saving
       mechanism. To disable that, uncomment the following -->
  <context-param>
    <param-name>org.apache.myfaces.trinidad.CLIENT_STATE_METHOD</param-name>
    <param-value>token</param-value>
  </context-param>
<!-- When token client-side state saving is enabled, MyFaces Trinidad can apply an additional
     optimization by caching an entire UIViewRoot tree with each token. 
     (Note that this does not affect thread safety or session failover.) 
     This is a major optimization for AJAX-intensive systems, as postbacks can be processed 
     far more rapidly without the need to reinstantiate the UIViewRoot tree. 
     
     You set the org.apache.myfaces.trinidad.CACHE_VIEW_ROOT parameter to true to enable caching. 
     True is the default. Set the parameter to false to disable caching.
     
     Note: This type of caching is known to interfere with some other JSF technologies. 
     In particular, the Apache MyFaces Tomahawk saveState component does not work, 
     and template text in Facelets may appear in duplicate.
  -->
  <context-param>
    <param-name>org.apache.myfaces.trinidad.CACHE_VIEW_ROOT</param-name>
    <param-value>true</param-value>
  </context-param>
  

  <!-- Temporarily disable partial state saving default until we make it work with Trinidad -->
  <context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
  </context-param>

  <!-- Facelets configuration, comment to use JSP -->

  <context-param>
    <param-name>javax.faces.FACELETS_VIEW_MAPPINGS</param-name>
    <!-- to run facelets for jspx files comment the line above and uncomment line below-->
    <param-value>*.xhtml</param-value>
  </context-param>

  <context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
  </context-param>

  <context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/tr-demo.taglib.xml</param-value>
  </context-param>

  <!-- End of facelets configuration -->

  <!-- Enables Change Persistence at a session scope.  By default,
       Change Persistence is entirely disabled. The ChangeManager is
       an API, which can persist component modifications (like,
       is a showDetail or tree expanded or collapsed). For providing
       a custom Change Persistence implementation inherit from the 
       Trinidad API's ChangeManager class. As the value you have 
       to use the fullqualified class name. -->
  <context-param>
    <param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
    <param-value>session</param-value>
    <!-- to run without using the change manager comment the line above and uncomment the line below-->
    <!--param-value>org.apache.myfaces.trinidad.change.NullChangeManager</param-value-->    
  </context-param>
  
<!-- Uncomment this if you are debugging skinning and want the styleclasses to not be compressed  
<context-param>
 <param-name>org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION</param-name>
 <param-value>true</param-value>
</context-param>
-->

  <!-- If this parameter is enabled, Trinidad will automatically
       check the modification date of your JSPs, and discard saved
       state when they change. Trinidad will also automatically check
       if your skinning css files have changed without having to restart
       the server; this makes development easier,
       but adds overhead that should be avoided when your application
       is deployed. -->
  <context-param>
    <param-name>org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION</param-name>
    <param-value>false</param-value>
  </context-param>

  <context-param>
    <param-name>org.apache.myfaces.trinidad.resource.DEBUG</param-name>
    <param-value>false</param-value>
  </context-param>
  <context-param>
    <param-name>org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT</param-name>
    <param-value>true</param-value>
  </context-param>

  <!-- With setting this parameter you are able to specify the logical
       outcome prefix to launch the dialog framework. If not set, the
       default value (dialog:) is used. -->
  <!--context-param>
    <param-name>org.apache.myfaces.trinidad.DIALOG_NAVIGATION_PREFIX</param-name>
    <param-value>userInputHere:</param-value>
  </context-param--> 


  <filter>
    <filter-name>trinidad</filter-name>
    <filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
  </filter>

  <filter>
    <filter-name>demoRedirect</filter-name>
    <filter-class>org.apache.myfaces.trinidaddemo.webapp.RedirectFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>trinidad</filter-name>
    <servlet-name>faces</servlet-name>
  </filter-mapping>

  <filter-mapping>
    <filter-name>demoRedirect</filter-name>
    <url-pattern>*.jspx</url-pattern>
  </filter-mapping>

  <!-- Faces Servlet -->
  <servlet>
    <servlet-name>faces</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  
  <!-- resource loader servlet -->
  <servlet>
    <servlet-name>resources</servlet-name>
    <servlet-class>org.apache.myfaces.trinidad.webapp.ResourceServlet</servlet-class>
  </servlet>

  <!-- source code servlet -->
  <servlet>
    <servlet-name>source</servlet-name>
    <servlet-class>org.apache.myfaces.trinidaddemo.webapp.SourceCodeServlet</servlet-class>
  </servlet>

  <!-- Faces Servlet Mappings -->
  <servlet-mapping>
    <servlet-name>faces</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>faces</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
    
  <servlet-mapping>
    <servlet-name>resources</servlet-name>
    <url-pattern>/adf/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>source</servlet-name>
    <url-pattern>*.source</url-pattern>
  </servlet-mapping>


  <!-- Welcome Files -->
  <servlet-mapping>
    <servlet-name>resources</servlet-name>
    <url-pattern>/afr/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- Survey Demo (Custom) Tag Library -->
  <jsp-config>
    <taglib>
      <taglib-uri>http://myfaces.apache.org/trinidad/demo</taglib-uri>
      <taglib-location>/WEB-INF/survey.tld</taglib-location>
    </taglib>

    <taglib>
      <taglib-uri>http://myfaces.apache.org/trinidaddemo</taglib-uri>
      <taglib-location>/WEB-INF/trinidaddemo.tld</taglib-location>
    </taglib>
  </jsp-config>

</web-app>
