<?xml version="1.0" encoding="utf-8"?>
<!--
 * 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.
-->

##macro writeAttribute ==============
#macro( writeAttribute $property )
        <attribute>
            <name>$property.name</name>
            <required>$property.isRequired()</required>
#if ($property.longDescription)
            <description><![CDATA[$property.longDescription]]></description>
#else
            <description><![CDATA[]]></description>
#end
#set ($type = $utils.getClassFromFullClass($property.className))
#if ($type == "MethodExpression")
            <method-signature>${property.deferredMethodSignature}</method-signature>
#elseif ($type == "ValueExpression")
#if($property.deferredValueType)
            <type>$property.deferredValueType</type>
#end
#else
#if ($property.className)         
            <type>$property.className</type>
#else
            <type>java.lang.String</type>
#end
#end
        </attribute>
#end
##macro writeAttribute end ==========


##macro writeAttributes =============
#macro( writeAttributes $propertyList )
#foreach( $property in $propertyList )
#if (!$property.isTagExcluded())
#writeAttribute($property)
#end
#end
#end
##macro writeAttributes end =========

<facelet-taglib 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-facelettaglibrary_2_0.xsd"
              version="2.0">
              
    <namespace>$uri</namespace>
#if ($compositeLibrary)
    <composite-library-name>$compositeLibrary</composite-library-name>
#end

$baseContent

    <!-- Component Tags -->
#set ($componentList = ${model.getComponents()})
#foreach( $component in $componentList )
#if ($modelIds.contains($component.modelId) 
    && ($component.name))
#if (!$component.isConfigExcluded() && !$component.isComposite())
## Check if we don't have a facelet tag taking precedence over this description
#if (! ${model.findFaceletTagByName($component.name)})
#if ($modelIds.contains($component.modelId) 
    && ($component.name) && $utils.getTagPrefix($component.name) == $shortname)
    <tag>
#if ($component.longDescription)
        <description><![CDATA[$component.longDescription]]></description>
#else
        <description><![CDATA[]]></description>
#end
        <tag-name>$utils.getTagName($component.name)</tag-name>
        <component>
            <component-type>$component.type</component-type>
#if ($component.rendererType)
#if (!($component.rendererType == ""))
            <renderer-type>$component.rendererType</renderer-type>
#end
#end
#if ($component.tagHandler)
            <handler-class>$component.tagHandler</handler-class>
#end
        </component>
#writeAttributes($component.propertyList)
    </tag>
#end
#end
#end
#end
#end

   <!-- Converter tags -->
#set ($componentList = ${model.getConverters()})
#foreach( $component in $componentList )
#if ($modelIds.contains($component.modelId) 
    && ($component.name))
#if ($component.converterId)
## Check if we don't have a facelet tag taking precedence over this description
#if (! ${model.findFaceletTagByName($component.name)})
#if ($utils.getTagPrefix($component.name) == $shortname) 
    <tag>
        <tag-name>$utils.getTagName($component.name)</tag-name>
        <converter>
            <converter-id>$component.converterId</converter-id>
        </converter>
#writeAttributes($component.propertyList)
    </tag>
#end
#end
#end
#end
#end

   <!-- Validator tags -->
#set ($componentList = ${model.getValidators()})
#foreach( $component in $componentList )
#if ($modelIds.contains($component.modelId) 
    && ($component.name))
#if ($component.validatorId)
## Check if we don't have a facelet tag taking precedence over this description
#if (! ${model.findFaceletTagByName($component.name)})
#if ($utils.getTagPrefix($component.name) == $shortname)
    <tag>
        <tag-name>$utils.getTagName($component.name)</tag-name>
        <validator>
            <validator-id>$component.validatorId</validator-id>
        </validator>      
#writeAttributes($component.propertyList)
    </tag>
#end
#end
#end
#end
#end

   <!-- Behavior tags -->
#set ($behaviorList = ${model.getBehaviors()})
#foreach( $behavior in $behaviorList )
#if ($modelIds.contains($behavior.modelId) 
    && ($behavior.name))
#if ($behavior.behaviorId)
## Check if we don't have a facelet tag taking precedence over this description
#if (! ${model.findFaceletTagByName($behavior.name)})
#if ($utils.getTagPrefix($behavior.name) == $shortname) 
    <tag>
#if ($behavior.longDescription)
        <description><![CDATA[$behavior.longDescription]]></description>
#else
        <description><![CDATA[]]></description>
#end
        <tag-name>$utils.getTagName($behavior.name)</tag-name>
        <behavior>
            <behavior-id>$behavior.behaviorId</behavior-id>
        </behavior>
#writeAttributes($behavior.propertyList)
    </tag>
#end
#end
#end
#end
#end
    
   <!-- Single Tags -->
#set ($tagList = $model.getTags())
#foreach( $tag in $tagList )
#if ($modelIds.contains($tag.modelId))
#if ($tag.tagHandler)
## Check if we don't have a facelet tag taking precedence over this description
#if (! ${model.findFaceletTagByName($tag.name)})
#if ($utils.getTagPrefix($tag.name) == $shortname)
   <tag>
#if ($tag.longDescription)
        <description><![CDATA[$tag.longDescription]]></description>
#else
        <description><![CDATA[]]></description>
#end
      <tag-name>$utils.getTagName($tag.name)</tag-name>
      <handler-class>$tag.tagHandler</handler-class>
#writeAttributes($tag.propertyList)
   </tag>
#end
#end
#end
#end
#end

    <!-- Facelet Tags -->
#set ($faceletTagList = $model.getFaceletTags())
#foreach( $faceletTag in $faceletTagList )
#if ($modelIds.contains($faceletTag.modelId) && ($faceletTag.name))
#if ($utils.getTagPrefix($faceletTag.name) == $shortname)
   <tag>
#if ($faceletTag.longDescription)
        <description><![CDATA[$faceletTag.longDescription]]></description>
#else
        <description><![CDATA[]]></description>
#end
      <tag-name>$utils.getTagName($faceletTag.name)</tag-name>
#if ($faceletTag.componentClass)
#set ($component = ${model.findComponentByClassName($faceletTag.componentClass)})
    <component>
        <component-type>$component.type</component-type>
#if ($component.rendererType)
#if (!($component.rendererType == ""))
        <renderer-type>$component.rendererType</renderer-type>
#end
#end
        <handler-class>$faceletTag.className</handler-class>
    </component>
#elseif ($faceletTag.converterClass)
#set ($converter = ${model.findConverterByClassName($faceletTag.converterClass)})
    <converter>
        <converter-id>$converter.converterId</converter-id>
        <handler-class>$faceletTag.className</handler-class>
    </converter>
#elseif ($faceletTag.behaviorClass)
#set ($behavior = ${model.findBehaviorByClassName($faceletTag.behaviorClass)})
    <behavior>
        <behavior-id>$behavior.behaviorId</behavior-id>
        <handler-class>$faceletTag.className</handler-class>
    </behavior>
#else
    <handler-class>$faceletTag.className</handler-class>
#end
#writeAttributes($faceletTag.attributeList)
   </tag>
#end
#end
#end
</facelet-taglib>