##macro writeAttribute ==============
#macro( writeAttribute $property )
$property.name
$property.isRequired()
#if ($property.longDescription)
#else
#end
#set ($type = $utils.getClassFromFullClass($property.className))
#if ($type == "MethodExpression")
${property.deferredMethodSignature}
#elseif ($type == "ValueExpression")
#if($property.deferredValueType)
$property.deferredValueType
#end
#else
#if ($property.className)
$property.className
#else
java.lang.String
#end
#end
#end
##macro writeAttribute end ==========
##macro writeAttributes =============
#macro( writeAttributes $propertyList )
#foreach( $property in $propertyList )
#if (!$property.isTagExcluded())
#writeAttribute($property)
#end
#end
#end
##macro writeAttributes end =========
$uri
#if ($compositeLibrary)
$compositeLibrary
#end
$baseContent
#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)
#if ($component.longDescription)
#else
#end
$utils.getTagName($component.name)
$component.type
#if ($component.rendererType)
#if (!($component.rendererType == ""))
$component.rendererType
#end
#end
#if ($component.tagHandler)
$component.tagHandler
#end
#writeAttributes($component.propertyList)
#end
#end
#end
#end
#end
#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)
$utils.getTagName($component.name)
$component.converterId
#writeAttributes($component.propertyList)
#end
#end
#end
#end
#end
#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)
$utils.getTagName($component.name)
$component.validatorId
#writeAttributes($component.propertyList)
#end
#end
#end
#end
#end
#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)
#if ($behavior.longDescription)
#else
#end
$utils.getTagName($behavior.name)
$behavior.behaviorId
#writeAttributes($behavior.propertyList)
#end
#end
#end
#end
#end
#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)
#if ($tag.longDescription)
#else
#end
$utils.getTagName($tag.name)
$tag.tagHandler
#writeAttributes($tag.propertyList)
#end
#end
#end
#end
#end
#set ($faceletTagList = $model.getFaceletTags())
#foreach( $faceletTag in $faceletTagList )
#if ($modelIds.contains($faceletTag.modelId) && ($faceletTag.name))
#if ($utils.getTagPrefix($faceletTag.name) == $shortname)
#if ($faceletTag.longDescription)
#else
#end
$utils.getTagName($faceletTag.name)
#if ($faceletTag.componentClass)
#set ($component = ${model.findComponentByClassName($faceletTag.componentClass)})
$component.type
#if ($component.rendererType)
#if (!($component.rendererType == ""))
$component.rendererType
#end
#end
$faceletTag.className
#elseif ($faceletTag.converterClass)
#set ($converter = ${model.findConverterByClassName($faceletTag.converterClass)})
$converter.converterId
$faceletTag.className
#elseif ($faceletTag.behaviorClass)
#set ($behavior = ${model.findBehaviorByClassName($faceletTag.behaviorClass)})
$behavior.behaviorId
$faceletTag.className
#else
$faceletTag.className
#end
#writeAttributes($faceletTag.attributeList)
#end
#end
#end