You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by al...@apache.org on 2010/08/12 22:51:33 UTC

svn commit: r984963 - in /myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core: ./ src/main/resources/META-INF/

Author: aliok
Date: Thu Aug 12 20:51:33 2010
New Revision: 984963

URL: http://svn.apache.org/viewvc?rev=984963&view=rev
Log:
+Maven config to generate website of the project.
+Updated velocitiy templates

Removed:
    myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/facelets-taglib20_fx.vm
Modified:
    myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/pom.xml
    myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/facelets-taglib20.vm
    myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/faces-config20.vm
    myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/jsp-tld.vm

Modified: myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/pom.xml?rev=984963&r1=984962&r2=984963&view=diff
==============================================================================
--- myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/pom.xml (original)
+++ myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/pom.xml Thu Aug 12 20:51:33 2010
@@ -169,6 +169,7 @@
                     <execution>
                         <id>make-html5-hx-tld</id>
                         <configuration>
+                            <outputDirectory>${project.build.directory}/tlddoc-facelets</outputDirectory>
                             <xmlFile>META-INF/html5-hx.tld</xmlFile>
                             <xmlBaseFile>src/main/resources/META-INF/jsp-tld-base.tld</xmlBaseFile>
                             <templateFile>jsp-tld.vm</templateFile>
@@ -214,6 +215,7 @@
                     <execution>
                         <id>make-html5-fx-tld</id>
                         <configuration>
+                            <outputDirectory>${project.build.directory}/tlddoc-facelets</outputDirectory>
                             <xmlFile>META-INF/html5-fx.tld</xmlFile>
                             <xmlBaseFile>src/main/resources/META-INF/jsp-tld-base.tld</xmlBaseFile>
                             <templateFile>jsp-tld.vm</templateFile>
@@ -240,7 +242,7 @@
                         <configuration>
                             <xmlFile>META-INF/html5-fx.taglib.xml</xmlFile>
                             <xmlBaseFile>src/main/resources/META-INF/facelets-taglib-base.xml</xmlBaseFile>
-                            <templateFile>facelets-taglib20_fx.vm</templateFile>
+                            <templateFile>facelets-taglib20.vm</templateFile>
                             <metadataFile>META-INF/myfaces-html5-metadata.xml</metadataFile>
                             <params>
                                 <shortname>fx</shortname>
@@ -275,6 +277,127 @@
                 </executions>
             </plugin>
         </plugins>
-    </build>
+    </build>   
+
+    <profiles>
+            <profile>
+      <!--
+        - Whenever the full website is generated, the command
+        -   mvn -Pgenerate-site -Pgenerate-tlddoc site
+        - should be used. This will create the "tlddoc" directory containing
+        - nicely-formatted versions of the docs in the jsp taglib file, ie
+        - docs on all the available tags and their properties.
+        -->
+      <id>generate-site</id>
+      <build>
+        <plugins>
+          <plugin>
+            <!-- Generate content for custom tagdoc report -->
+            <groupId>org.apache.myfaces.buildtools</groupId>
+            <artifactId>myfaces-builder-plugin</artifactId>
+            <version>1.0.6</version>
+            <executions>
+              <execution>
+                <id>site-tagdoc-content</id>
+                <configuration>
+                    <metadataFile>META-INF/myfaces-html5-metadata.xml</metadataFile>
+                  <modelIds>
+                    <modelId>html5-comp-lib-core</modelId>
+                  </modelIds>
+                  <taglibs>
+                    <hx>http://myfaces.apache.org/html5/html</hx>
+                    <fx>http://myfaces.apache.org/html5/core</fx>
+                  </taglibs>
+                </configuration>
+                <goals><goal>tagdoc-content</goal></goals>
+              </execution>
+              <execution>
+                <id>site-web-config</id>
+                <configuration>
+                    <metadataFile>META-INF/myfaces-html5-metadata.xml</metadataFile>
+                    <outputDirectory>${project.build.directory}/generated-site/xdoc</outputDirectory>
+                    <xmlFile>webconfig.xml</xmlFile>
+                    <modelIds>
+                        <modelId>html5-comp-lib-core</modelId>
+                    </modelIds>
+                </configuration>
+                <goals>
+                    <goal>make-config</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <!-- Unfortunately we can't execute the same report twice, so
+                 we have to generate this files outside report generation. -->
+            <groupId>net.sourceforge.maven-taglib</groupId>
+            <artifactId>maven-taglib-plugin</artifactId>
+            <version>2.4</version>
+            <executions>
+               <execution>
+                    <id>tlddoc-facelets</id>
+                    <phase>site</phase>
+                    <goals>
+                      <goal>taglibdoc</goal>
+                    </goals>
+                    <inherited>false</inherited>
+                    <configuration>
+                      <title>${project.name} Tag library documentation for Facelets</title>
+                      <srcDir>${basedir}/target/tlddoc-facelets</srcDir>
+                      <tldDocDir>${basedir}/target/site/tlddoc-facelets</tldDocDir>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>tlddoc-jsp</id>
+                    <phase>site</phase>
+                    <goals>
+                      <goal>taglibdoc</goal>
+                    </goals>
+                    <inherited>false</inherited>
+                    <configuration>
+                      <taglib.src.dir>${basedir}/target/tlddoc-facelets</taglib.src.dir>
+                      <tldDocDir>${basedir}/target/site/tlddoc</tldDocDir>            
+                    </configuration>
+                </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+      <reporting>
+        <plugins>
+          <plugin>
+            <groupId>net.sourceforge.maven-taglib</groupId>
+            <artifactId>maven-taglib-plugin</artifactId>
+            <version>2.4</version>
+            <configuration>
+              <taglib.src.dir>${basedir}/target/classes/META-INF</taglib.src.dir>
+              <tldDocDir>${basedir}/target/site/tlddoc</tldDocDir>
+            </configuration>
+          </plugin>
+          <plugin>
+            <!-- trigger tagdoc-index report -->
+            <groupId>org.apache.myfaces.buildtools</groupId>
+            <artifactId>myfaces-builder-plugin</artifactId>
+            <version>1.0.6</version>
+            <reportSets>
+              <reportSet>
+              <configuration>
+                <metadataFile>META-INF/myfaces-html5-metadata.xml</metadataFile>
+                <modelIds>
+                  <modelId>html5-comp-lib-core</modelId>
+                </modelIds>
+                <taglibs>
+                  <hx>http://myfaces.apache.org/html5/html</hx>
+                  <fx>http://myfaces.apache.org/html5/core</fx>
+                </taglibs>
+              </configuration>
+              <reports><report>tagdoc-index</report></reports>
+              </reportSet>
+            </reportSets>
+          </plugin>
+        </plugins>
+      </reporting>
+    </profile>
+    </profiles>
 
 </project>
\ No newline at end of file

Modified: myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/facelets-taglib20.vm
URL: http://svn.apache.org/viewvc/myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/facelets-taglib20.vm?rev=984963&r1=984962&r2=984963&view=diff
==============================================================================
--- myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/facelets-taglib20.vm (original)
+++ myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/facelets-taglib20.vm Thu Aug 12 20:51:33 2010
@@ -23,14 +23,20 @@
               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) && $utils.getTagPrefix($component.name) == $shortname)
-    
-#if (!$component.isConfigExcluded())
+    && ($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)})
     <tag>
         <tag-name>$utils.getTagName($component.name)</tag-name>
         <component>
@@ -48,13 +54,16 @@
 #end
 #end
 #end
+#end
 
    <!-- Converter tags -->
 #set ($componentList = ${model.getConverters()})
 #foreach( $component in $componentList )
 #if ($modelIds.contains($component.modelId) 
     && ($component.name))
-#if ($component.converterId) 
+#if ($component.converterId)
+## Check if we don't have a facelet tag taking precedence over this description
+#if (! ${model.findFaceletTagByName($component.name)}) 
     <tag>
         <tag-name>$utils.getTagName($component.name)</tag-name>
         <converter>
@@ -64,6 +73,7 @@
 #end
 #end
 #end
+#end
 
    <!-- Validator tags -->
 #set ($componentList = ${model.getValidators()})
@@ -71,6 +81,8 @@
 #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)})
     <tag>
         <tag-name>$utils.getTagName($component.name)</tag-name>
         <validator>
@@ -80,13 +92,34 @@
 #end
 #end
 #end
+#end
 
-#* ATTENTION: FACELET TAGS THAT ARE SPECIFIED BY @JSFJspTag annotation's tagHandler property are ignored!    
+   <!-- 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)}) 
+    <tag>
+        <tag-name>$utils.getTagName($behavior.name)</tag-name>
+        <behavior>
+            <behavior-id>$behavior.behaviorId</behavior-id>
+        </behavior>
+    </tag>
+#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)})
    <tag>
       <tag-name>$utils.getTagName($tag.name)</tag-name>
       <handler-class>$tag.tagHandler</handler-class>
@@ -94,19 +127,43 @@
 #end
 #end
 #end
-*#
+#end
 
-   <!-- Single Facelets Tags -->
+    <!-- Facelet Tags -->
 #set ($faceletTagList = $model.getFaceletTags())
 #foreach( $faceletTag in $faceletTagList )
-#if ($modelIds.contains($faceletTag.modelId) 
-    && ($faceletTag.name) && $utils.getTagPrefix($faceletTag.name) == $shortname)
-#if ($faceletTag.className)
+#if ($modelIds.contains($faceletTag.modelId) && ($faceletTag.name))
+#if ($utils.getTagPrefix($faceletTag.name) == $shortname)
    <tag>
       <tag-name>$utils.getTagName($faceletTag.name)</tag-name>
-      <handler-class>$faceletTag.className</handler-class>
+#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
    </tag>
 #end
 #end
 #end
-</facelet-taglib>
\ No newline at end of file
+</facelet-taglib>

Modified: myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/faces-config20.vm
URL: http://svn.apache.org/viewvc/myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/faces-config20.vm?rev=984963&r1=984962&r2=984963&view=diff
==============================================================================
--- myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/faces-config20.vm (original)
+++ myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/faces-config20.vm Thu Aug 12 20:51:33 2010
@@ -57,6 +57,15 @@ $baseContent
   </validator>
 #end
 #end
+#set ($behaviorList = ${model.getBehaviors()})
+#foreach( $behavior in $behaviorList )
+#if ($modelIds.contains($behavior.modelId))
+  <behavior>
+    <behavior-id>$behavior.behaviorId</behavior-id>
+    <behavior-class>$behavior.className</behavior-class>
+  </behavior>
+#end
+#end
 #set ($renderKitList = ${model.getRenderKits()})
 #foreach( $renderKit in $renderKitList )
   <render-kit>
@@ -75,27 +84,14 @@ $baseContent
 
 <!-- TODO: use the myfaces-builder-plugin here -->
       <client-behavior-renderer>
-      	<client-behavior-renderer-type>org.apache.myfaces.html5.DragSourceBehavior</client-behavior-renderer-type>
-      	<client-behavior-renderer-class>org.apache.myfaces.html5.renderkit.behavior.DragSourceBehaviorRenderer</client-behavior-renderer-class>
+        <client-behavior-renderer-type>org.apache.myfaces.html5.DragSourceBehavior</client-behavior-renderer-type>
+        <client-behavior-renderer-class>org.apache.myfaces.html5.renderkit.behavior.DragSourceBehaviorRenderer</client-behavior-renderer-class>
       </client-behavior-renderer>
       <client-behavior-renderer>
-      	<client-behavior-renderer-type>org.apache.myfaces.html5.DropTargetBehavior</client-behavior-renderer-type>
-      	<client-behavior-renderer-class>org.apache.myfaces.html5.renderkit.behavior.DropTargetBehaviorRenderer</client-behavior-renderer-class>
+        <client-behavior-renderer-type>org.apache.myfaces.html5.DropTargetBehavior</client-behavior-renderer-type>
+        <client-behavior-renderer-class>org.apache.myfaces.html5.renderkit.behavior.DropTargetBehaviorRenderer</client-behavior-renderer-class>
       </client-behavior-renderer>
 
   </render-kit>
 #end
-
-
-<!-- TODO: use the myfaces-builder-plugin here -->
-	<behavior>
-		<behavior-id>org.apache.myfaces.html5.DragSourceBehavior</behavior-id>
-		<behavior-class>org.apache.myfaces.html5.behavior.DragSourceBehavior</behavior-class>
-	</behavior>
-	<behavior>
-		<behavior-id>org.apache.myfaces.html5.DropTargetBehavior</behavior-id>
-		<behavior-class>org.apache.myfaces.html5.behavior.DropTargetBehavior</behavior-class>
-	</behavior>
-
-
 </faces-config>

Modified: myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/jsp-tld.vm
URL: http://svn.apache.org/viewvc/myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/jsp-tld.vm?rev=984963&r1=984962&r2=984963&view=diff
==============================================================================
--- myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/jsp-tld.vm (original)
+++ myfaces/gsoc/html5-comp-lib/trunk/html5-comp-lib-core/src/main/resources/META-INF/jsp-tld.vm Thu Aug 12 20:51:33 2010
@@ -17,15 +17,17 @@
  * specific language governing permissions and limitations
  * under the License.
 -->
-<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/web-jsptaglibrary_2_1.xsd" 
-        version="2.1">
-  <tlib-version>1.1.7</tlib-version>
+<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-jsptaglibrary_2_1.xsd"
+    version="2.1">
+   <description>$description</description>
+   <display-name>$displayname</display-name>
+   <tlib-version>1.1.7</tlib-version>
    <short-name>$shortname</short-name>
    <uri>$uri</uri>
-   <display-name>$displayname</display-name>
-   <description>$description</description>
+   
+   
 
 $baseContent
 
@@ -34,8 +36,11 @@ $baseContent
 #foreach( $component in $componentList )
 #if ($modelIds.contains($component.modelId) 
     && ($component.name))
-#if ($utils.getTagPrefix($component.name) == $shortname) 
+#if ($utils.getTagPrefix($component.name) == $shortname)
+## Check if we don't have a facelet tag taking precedence over this description
+#if (! ${model.findFaceletTagByName($component.name)})
    <tag>
+      <description><![CDATA[$component.longDescription]]></description>
       <name>$utils.getTagName($component.name)</name>
       <tag-class>$component.tagClass</tag-class>
 #if ($component.bodyContent)
@@ -43,12 +48,16 @@ $baseContent
 #else
       <body-content>JSP</body-content>
 #end
-      <description><![CDATA[$component.longDescription]]></description>
       
 #set ($propertyList = ${component.propertyList})
 #foreach( $property in $propertyList )
 #if (!$property.isTagExcluded())
       <attribute>
+#if ($property.longDescription)
+         <description><![CDATA[$property.longDescription]]></description>
+#else
+         <description><![CDATA[]]></description>
+#end
          <name>$property.jspName</name>
 #if ($property.isRequired())
          <required>$property.isRequired()</required>
@@ -72,8 +81,14 @@ $baseContent
 #else
 #if ( "$!property.isRtexprvalue()" == "")
 #set ($type = $utils.getClassFromFullClass($property.className))
-#if ($type == "String")
-         <deferred-value></deferred-value>
+#if($property.deferredValueType)
+         <deferred-value>
+             <type>$property.deferredValueType</type>
+         </deferred-value>
+#elseif ($type == "String")
+         <deferred-value>
+            <type>java.lang.String</type>
+         </deferred-value>
 #else
          <deferred-value>
              <type>$property.className</type>
@@ -83,11 +98,6 @@ $baseContent
          <rtexprvalue>$property.isRtexprvalue().booleanValue()</rtexprvalue>
 #end
 #end
-#if ($property.longDescription)
-         <description><![CDATA[$property.longDescription]]></description>
-#else
-         <description><![CDATA[]]></description>
-#end
       </attribute>
 #end
 #end
@@ -95,13 +105,17 @@ $baseContent
 #end
 #end
 #end
+#end
    <!-- Converter tags -->
 #set ($componentList = ${model.getConverters()})
 #foreach( $component in $componentList )
 #if ($modelIds.contains($component.modelId) 
     && ($component.name))
-#if ($utils.getTagPrefix($component.name) == $shortname) 
+#if ($utils.getTagPrefix($component.name) == $shortname)
+## Check if we don't have a facelet tag taking precedence over this description
+#if (! ${model.findFaceletTagByName($component.name)}) 
    <tag>
+      <description><![CDATA[$component.longDescription]]></description>
       <name>$utils.getTagName($component.name)</name>
       <tag-class>$component.tagClass</tag-class>
 #if ($component.bodyContent)
@@ -109,12 +123,16 @@ $baseContent
 #else
       <body-content>empty</body-content>
 #end
-      <description><![CDATA[$component.longDescription]]></description>
       
 #set ($propertyList = ${component.propertyList})
 #foreach( $property in $propertyList )
 #if (!$property.isTagExcluded())
       <attribute>
+#if ($property.longDescription)
+         <description><![CDATA[$property.longDescription]]></description>
+#else
+         <description><![CDATA[]]></description>
+#end
          <name>$property.name</name>
 #if ($property.isRequired())
          <required>$property.isRequired()</required>
@@ -123,19 +141,22 @@ $baseContent
          <rtexprvalue>false</rtexprvalue>
 #else
 #set ($type = $utils.getClassFromFullClass($property.className))
-#if ($type == "String")
-         <deferred-value></deferred-value>
+#if($property.deferredValueType)
+         <deferred-value>
+             <type>$property.deferredValueType</type>
+         </deferred-value>             
+#elseif ($type == "String")
+         <deferred-value>
+            <type>java.lang.String</type>
+         </deferred-value>
+
+
 #else
          <deferred-value>
              <type>$property.className</type>
          </deferred-value>
 #end
 #end
-#if ($property.longDescription)
-         <description><![CDATA[$property.longDescription]]></description>
-#else
-         <description><![CDATA[]]></description>
-#end
       </attribute>
 #end
 #end
@@ -143,13 +164,17 @@ $baseContent
 #end
 #end
 #end
+#end
    <!-- Validator tags -->
 #set ($componentList = ${model.getValidators()})
 #foreach( $component in $componentList )
 #if ($modelIds.contains($component.modelId) 
     && ($component.name))
-#if ($utils.getTagPrefix($component.name) == $shortname) 
+#if ($utils.getTagPrefix($component.name) == $shortname)
+## Check if we don't have a facelet tag taking precedence over this description
+#if (! ${model.findFaceletTagByName($component.name)}) 
    <tag>
+      <description><![CDATA[$component.longDescription]]></description>
       <name>$utils.getTagName($component.name)</name>
       <tag-class>$component.tagClass</tag-class>
 #if ($component.bodyContent)
@@ -157,12 +182,16 @@ $baseContent
 #else
       <body-content>empty</body-content>
 #end
-      <description><![CDATA[$component.longDescription]]></description>
       
 #set ($propertyList = ${component.propertyList})
 #foreach( $property in $propertyList )
 #if (!$property.isTagExcluded())
       <attribute>
+#if ($property.longDescription)
+         <description><![CDATA[$property.longDescription]]></description>
+#else
+         <description><![CDATA[]]></description>
+#end
          <name>$property.name</name>
 #if ($property.isRequired())
          <required>$property.isRequired()</required>
@@ -171,19 +200,77 @@ $baseContent
          <rtexprvalue>false</rtexprvalue>
 #else
 #set ($type = $utils.getClassFromFullClass($property.className))
-#if ($type == "String")
-         <deferred-value></deferred-value>
+#if($property.deferredValueType)
+         <deferred-value>
+             <type>$property.deferredValueType</type>
+         </deferred-value>             
+#elseif ($type == "String")
+         <deferred-value>
+             <type>java.lang.String</type>
+         </deferred-value>
 #else
          <deferred-value>
              <type>$property.className</type>
          </deferred-value>
 #end
 #end
+      </attribute>
+#end
+#end
+   </tag>
+#end
+#end
+#end
+#end
+
+   <!-- Behavior tags -->
+#set ($behaviorList = ${model.getBehaviors()})
+#foreach( $component in $behaviorList )
+#if ($modelIds.contains($component.modelId) 
+    && ($component.name))
+#if ($component.behaviorId)
+## Check if we don't have a facelet tag taking precedence over this description
+#if (! ${model.findFaceletTagByName($component.name)}) 
+   <tag>
+      <description><![CDATA[$component.longDescription]]></description>
+      <name>$utils.getTagName($component.name)</name>
+      <tag-class>$component.tagClass</tag-class>
+#if ($component.bodyContent)
+      <body-content>$component.bodyContent</body-content>
+#else
+      <body-content>empty</body-content>
+#end
+#set ($propertyList = ${component.propertyList})
+#foreach( $property in $propertyList )
+#if (!$property.isTagExcluded())
+      <attribute>
 #if ($property.longDescription)
          <description><![CDATA[$property.longDescription]]></description>
 #else
          <description><![CDATA[]]></description>
 #end
+         <name>$property.name</name>
+#if ($property.isRequired())
+         <required>$property.isRequired()</required>
+#end
+#if ($property.isLiteralOnly())
+         <rtexprvalue>false</rtexprvalue>
+#else
+#set ($type = $utils.getClassFromFullClass($property.className))
+#if($property.deferredValueType)
+         <deferred-value>
+             <type>$property.deferredValueType</type>
+         </deferred-value>             
+#elseif ($type == "String")
+         <deferred-value>
+            <type>java.lang.String</type>
+         </deferred-value>
+#else
+         <deferred-value>
+             <type>$property.className</type>
+         </deferred-value>
+#end
+#end
       </attribute>
 #end
 #end
@@ -191,23 +278,41 @@ $baseContent
 #end
 #end
 #end
+#end
+
    <!-- Single Tags -->
 #set ($tagList = $model.getTags())
 #foreach( $tag in $tagList )
-#if ($modelIds.contains($tag.modelId))
+#if ($modelIds.contains($tag.modelId) && ($tag.name))
+#if ($utils.getTagPrefix($tag.name) == $shortname)
+## Check if we don't have a facelet tag taking precedence over this description
+#if (! ${model.findFaceletTagByName($tag.name)})
    <tag>
+      <description><![CDATA[$tag.longDescription]]></description>
       <name>$utils.getTagName($tag.name)</name>
       <tag-class>$tag.className</tag-class>
       <body-content>$tag.bodyContent</body-content>
-      <description><![CDATA[$tag.longDescription]]></description>
 #set ($attributeList = ${tag.attributeList})
 #foreach( $attribute in $attributeList )
       <attribute>
+#if ($attribute.longDescription)
+         <description><![CDATA[$attribute.longDescription]]></description>
+#else
+         <description><![CDATA[]]></description>
+#end
          <name>$attribute.name</name>
          <required>$attribute.isRequired()</required>
 #set ($type = $utils.getClassFromFullClass($attribute.className))
-#if ($type == "ValueExpression")
-         <deferred-value></deferred-value>
+#if ($type == "MethodExpression")
+        <deferred-method>
+          <method-signature>${attribute.deferredMethodSignature}</method-signature>
+        </deferred-method>
+#elseif ($type == "ValueExpression")
+         <deferred-value>
+#if($attribute.deferredValueType)
+             <type>$attribute.deferredValueType</type>
+#end
+         </deferred-value>
 #else
          <rtexprvalue>$attribute.isRtexprvalue()</rtexprvalue>
 #if ($attribute.className)         
@@ -216,14 +321,57 @@ $baseContent
          <type>java.lang.String</type>
 #end
 #end
-#if ($property.longDescription)
-         <description><![CDATA[$property.longDescription]]></description>
+      </attribute>
+#end
+   </tag>
+#end
+#end
+#end
+#end
+
+   <!-- Facelets Tags -->
+#set ($tagList = $model.getFaceletTags())
+#foreach( $tag in $tagList )
+#if ($modelIds.contains($tag.modelId) && ($tag.name))
+#if ($utils.getTagPrefix($tag.name) == $shortname)
+   <tag>
+      <description><![CDATA[$tag.longDescription]]></description>
+      <name>$utils.getTagName($tag.name)</name>
+      <tag-class>$tag.className</tag-class>
+      <body-content>$tag.bodyContent</body-content>
+#set ($attributeList = ${tag.attributeList})
+#foreach( $attribute in $attributeList )
+      <attribute>
+#if ($attribute.longDescription)
+         <description><![CDATA[$attribute.longDescription]]></description>
 #else
          <description><![CDATA[]]></description>
 #end
+         <name>$attribute.name</name>
+         <required>$attribute.isRequired()</required>
+#set ($type = $utils.getClassFromFullClass($attribute.className))
+#if ($type == "MethodExpression")
+        <deferred-method>
+          <method-signature>${attribute.deferredMethodSignature}</method-signature>
+        </deferred-method>
+#elseif ($type == "ValueExpression")
+         <deferred-value>
+#if($attribute.deferredValueType)
+             <type>$attribute.deferredValueType</type>
+#end
+         </deferred-value>
+#else
+         <rtexprvalue>$attribute.isRtexprvalue()</rtexprvalue>
+#if ($attribute.className)         
+         <type>$attribute.className</type>
+#else
+         <type>java.lang.String</type>
+#end
+#end
       </attribute>
 #end
    </tag>
 #end
 #end
+#end
 </taglib>