<?xml version="1.0" ?>
<!--
    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.
	   
-->
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:md="http://myfaces.apache.org/bali/xml/metadata"
              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin" >

  <component>  
  
    <component-type>javax.faces.Component</component-type>
    <component-class>javax.faces.component.UIComponent</component-class>

    <property>
      <property-name>id</property-name>
      <property-class>String</property-class>
      <property-extension>
        <mfp:literal-only>true</mfp:literal-only>
      </property-extension>
    </property>

    <property>
      <property-name>rendered</property-name>
      <property-class>boolean</property-class>
      <default-value>true</default-value>
    </property>

    <property>
      <property-name>binding</property-name>
      <property-class>javax.faces.el.ValueBinding</property-class>
    </property>

    <property>
      <property-name>transient</property-name>
      <property-class>boolean</property-class>
      <property-extension>
        <mfp:literal-only>true</mfp:literal-only>
        <mfp:transient>true</mfp:transient>
      </property-extension>
    </property>

    <property>
      <property-name>rendererType</property-name>
      <property-class>String</property-class>
      <property-extension>
        <mfp:literal-only>true</mfp:literal-only>
      </property-extension>
    </property>

  </component>
</faces-config>
